写在前面
本文是Google Research发表在kdd2020上的一篇文章,主要是利用问答系统的算法来解决属性值提取的问题。
论文地址
本文主要从背景、算法、实验和总结几部分来讲解。
一、背景
1、任务和示例
Attribute value extraction: The task of identifying values of an attribute of interest from product information.
属性值提取,即识别为商品中的属性信息
属性值提取广泛应用于信息检索、推荐、商品排序等场景中。
2、相关工作
早期解决这一问题主要使用基于规则方法,但是这些发现强依赖于专家领域知识,且存在一些问题:如,当属性数目量级非常大时,基于规则的方法不是很适用。其次,基于规则的方法对于一些同义词的处理比较繁琐。
随着深度学习的发展,将这一问题建模成NER(命名实体识别)成为主流,其主要模式为下图所示(图片来自《A Survey on Deep Learning for Named Entity Recognition》):
3、现有工作弊端
- 可扩展性较差。当前电商系统的属性较多,如AliExpress包含上千个商品类目,仅休娱运动类的标签8900个,当前一些方法,每一个属性构建一个模型,这种是不可行的,可扩展性较差。
- 可泛化性较差。当前方法不能很好地适用于新出现的属性,当新的属性出现时,可能需要重新训练模型等,可泛化性较差。
二、算法
针对上述问题,本文提出了一个提取特征值的方案,将这一问题建模成一个问答系统的问题。
1、算法定义
2、算法架构
- 上面是文章的整体算法架构:Embedding layer + Bert Contextual Layer + Output Layer
- 下面看一下这个架构是如何解决上述提到的两个不足的:
Scalability 可扩展性不足的问题: 针对不同的属性,该架构都是通用的,Embedding Layer层的A向量记为Attribute的向量,无论是哪一个属性,都可以喂进去,不需要针对不同的属性训练不同的模型。(不同的属性共享权重)
Generalizability 可泛化性不足的问题: 本文设计了Distilled MLM loss用来解决该问题,该模块的主要思想为:因为可能会有一些训练集中没有出现的属性,我们无法得知这部分属性对应的属性值,但是借助bert的预训练向量,可以将Mask的内容不断拟合学习到本应有的一些语义特征。(虽然训练集数据有限,但是可以利用预训练的强大语义特征,让自训练的内容去拟合bert预训练的内容),以此解决新出现的属性的问题,从而提高模型可泛化性。 - 损失函数是QA损失+DMLM损失+NA损失求和,模型joint learning
3、算法细节
1)Embedding Layer
- Embedding Layer是trainable的,其每一个输入向量由word embedding + char embedding + position embedding + segment embedding得到
- word embedding和char embedding是使用的bert预训练的向量。
- positional embedding: the absolute position of the words in the sequence.
- segment embedding: indicate which segment the word is from, i.e., CLS, context or question
- CLS代表了整体的attribute+context的语义特征,最终用于分类,表示attribute value是否在context中能提取到。
2)BERT Contextual Layer
该层主要用于编码输入的内容,这部分主要借助bert的思想,包括N个multihead+FFN层,具体如下:
3)QA loss
QS loss的设计如下: H L H_L HL?为最后一层输出, H L i H_L^i HLi?为最后一层第 i i i个位置的向量,首先求得attribute value的起始index,而后基于起始index学习得到结束index,最终的损失函数为预测位置和真实位置的距离。
4)Distilled Masked Language Model
借助Bert的MASK思想,在bert中,目标函数是预测mask的内容。而在本文中,为了提高泛化性,希望拟合mask内容和真实内容的差异(基于大量语料库的bert预训练向量包含更多语义内容,更符合真实世界,以此更好作用于未出现的属性),让mask内容包含一些训练集没有的语义特征,因此,目标函数是求模型训练得到的mask内容对应向量和bert预训练向量之间的交叉熵,公式(8)是数据的平滑化处理。
5)No-Answer Classification
是否包含属性值分类器就是一个常规的二分类,其中 H L c l s H_L^{cls} HLcls?是对应学习到的包含attribute和context的特征向量,有一个全局的概念在里面。
三、实验
1、数据集
基于AE-pub数据集:
- Contains over 110k examples, i.e., product triples of (context, attribute, value)
- More than 2.7k unique attributes and 10k unique values
- There are 21.6k no-answer examples within this dataset.
2、评估指标
- Precision, Recall and F1-score
- Repeat each experiment 10 times and report the metrics based on the average over these runs.
3、基准方法
- BiLSTM: applies BiLSTM to produce the contextual embedding.
- BiLSTM-CRF: uses a CRF layer on top of the BiLSTM layer to model the association of predicted tags
- OpenTag: adds a self-attention mechanism between the BiLSTM layer and the CRF layer
- SUOpenTag: uses one BiLSTM to produce the contextual word embedding for the context, and another BiLSTM to produce a single embedding for the attribute. A cross attention layer is applied between the context word embedding and the attribute embedding to join the outputs, followed by a CRF layer.
4、性能比较
上面的第一个表格是整体的性能结果,第二个表格是4个类别的对比结果,实验说明AVEQA去得到SOTA的效果,embedding layer+bert contextual layer学习到了较多的信息。
4、Zero-shot结果
当测试集中出现训练集不包含的attribute时,这种叫做zero-shot问题,DMLM的设计便是为了解决这个问题,为了证明DMLM的有效性,本文实施了Zero-shot的实验,从上述可以看出,DMLM对于Zero-shot的问题贡献是比较大的,且从下面的损失值实验可以看出,DMLM的设计在一定程度了防止了模型的过拟合,提高了泛化能力。
4、参数实验
上面一张图是training batch和learning rate的实验图,因为本文使用了bert预训练向量,因此模型很快便可以收敛,且当training batch和learning rate值较大时,模型会过拟合。
上图是对 α \alpha α和 β \beta β值的实验,当 α = β = 0.5 \alpha=\beta=0.5 α=β=0.5时效果最好。
四、总结
本文提出了一种属性值提取的方法,将其建模成QA问题,且引入了DMLM和No-answer分类器,解决了可扩展和可泛化性的问题,取得了SOTA的性能。本篇论文对于个人的成长在于提供了一种优化和解决的思路:
- 优化问题可从目标函数入手,这对于解决bad case可能很重要。且在实际中,因为业务不同,可能需要对论文的方法做出一些变动,这时候,可以从目标函数入手。
- 当出现属性/目标频繁变动时,考虑类似的方式,引入预训练的语义特征,且针对每一个属性/目标共享权重, 从而避免短期内需要持续变更模型。