一、写在前面的话
这篇论文发表于2019ACL,其主要思路是在BERT的基础上引入了知识(具体来说是实体向量),并且在预训练任务方面提出了Pre-training for Injecting Knowledge。在实验结果方面,ERNIE较bert在部分测评中有所提升,另外ERNIE还加入了Entity Typing和Relation Classification上的fine-tune,取得了不错的效果。
二、论文笔记
1. 论文整体架构
下图是论文网络的整体架构,可以看出在模型上主要的改进是在bert的后段加入了实体向量和经过bert编码后的向量拼接,另外在输出时多加了实体自编码的任务,从而帮助模型注入实体知识信息。
2. T-Encoder
这部分就是纯粹的bert结构,在该部分模型中主要负责对输入句子(token embedding, segment embedding和positional embedding)进行编码,整个的过程直接参考bert即可。
2. K-Encoder
这部分是该论文创新的重头戏。
先是实体信息的引入,该论文使用了TransE训练实体向量,再通过多头Attention进行编码(其实可以用更复杂一点的训练方法,应该还有一定的提升空间),然后通过实体对齐技术,将实体向量加入到对应实体的第一个token编码后的向量上。(例如姚明是一个实体,在输入时会被分割成姚、明,最后在这部分引入的姚明这个实体的向量会被加入到要这个字经过bert之后的向量上去)
由于直接拼接后向量维度会与其他未拼接的向量维度不同,所以作者在这里加入information fusion layer,另外考虑到后面的实体自编码任务,所以这里在融合信息之后,有实体向量加入的部分需要另外多输出一个实体向量:
加入实体信息之后的融合输出过程:
未加入实体信息之后的融合输出过程:
3. 实体自编码
为了更好地使用实体信息,作者在这里多加入了一个预训练任务 entity auto-encoder(dEA)。
该预训练任务和bert相似,按以下方式进行训练:
- 15% 的情况下:用 [MASK] 替换被选择的单词,例如,my dog is hairy → my dog is [MASK]
- 5% 的情况下:用一个随机单词替换被选择的单词,例如,my dog is hairy → my dog is apple
- 80% 的情况下:保持被选择的单词不变,例如,my dog is hairy → my dog is hairy
4. Fine-tuning
除了正常的任务之外,ERNIE引入了两个新任务Entity Typing和Relation Classification:
三、结果
上表可以看出,ERNIE在通用任务其实相比bert而已优势不大,尽管文章提到了ERNIE更鲁棒以及GLUE的评估对ERNIE不是很友好,但是不可否认的是,在增加复杂度的同时,并没有取得期待的效果。
另外该论文还给出了在Entity Typing和Relation Classification两类任务上的测评,可以看出ERNIE取得了非常不错的效果,但至于bert本身是否就能取得这样的效果,其实值得商榷。
总体来说,ERNIE是一篇思路非常好的论文,提供了一种很好的实体信息引入思路,并且其新提出的预训练方法也给希望将bert这一模型引入关系抽取领域提供了很好的例子。