K-BERT
K-BERT: Enabling Language Representation with Knowledge Graph
- bert在特定领域表现不好
- 融合KG
- 借鉴并改进ERNIE
- 1、知识图谱中的关系信息没有被用到
- 2、实体向量和词向量是使用不同的方法得到的,可能存在空间不一致
- 3、对于实体数量巨大的大规模知识图谱,实体向量表将占据很大的内存
- 上图输入句子:Tim Cook is currently visiting Beijing now
- 关联的三元组信息:Apple-CEO-Tim Cook、Beijing-capital-China 等
- 将三元组信息注入句子中,得到句子树
- 即我们通过背景知识可得:苹果现在的CEO现在在中国
- 而关键是,怎么把句子树放进输入模型
soft-position
- soft-position相当于这棵句子树的深度序列
- 这样大致补足了句子树铺平后的顺序信息、
- 但是只是这样会有一些相对位置混乱的问题,如上面的apple在is后面
Visible Matrix
- 我们使用visible matrix将图信息引入进模型中
- 红色表示对应位置两个token相互可见,白色表示相互不见(类似邻接矩阵),可见即这棵树中是不是在同一条链中
- 只对bert中的self-attention做了简单的修改
- 如果两个字相互不见则就会是0,这样两个词的隐藏状态间就没有影响
- 这样某些词就不能随意的影响其他词,如上面[Apple]只能通过[Cook]间接作用于[CLS],降低了知识噪声
而其他的地方和bert保持一致,可以让k-bert只有迁移好其他的已经训练好的bert类型
实验结果
- 在开放领域只有微小的提升
- 特定领域表现不错
整体来说实验效果不好