K-BERT

​K-BERT: Enabling Language Representation with Knowledge Graph​

  • bert在特定领域表现不好
  • 融合KG
  • 借鉴并改进ERNIE
  • 1、知识图谱中的关系信息没有被用到
  • 2、实体向量和词向量是使用不同的方法得到的,可能存在空间不一致
  • 3、对于实体数量巨大的大规模知识图谱,实体向量表将占据很大的内存

K-BERT_自然语言处理

  • 上图输入句子:Tim Cook is currently visiting Beijing now
  • 关联的三元组信息:Apple-CEO-Tim Cook、Beijing-capital-China 等
  • 将三元组信息注入句子中,得到句子树
  • 即我们通过背景知识可得:苹果现在的CEO现在在中国
  • 而关键是,怎么把句子树放进输入模型

soft-position

K-BERT_人工智能_02

  • soft-position相当于这棵句子树的深度序列
  • 这样大致补足了句子树铺平后的顺序信息、
  • 但是只是这样会有一些相对位置混乱的问题,如上面的apple在is后面

Visible Matrix

  • 我们使用visible matrix将图信息引入进模型中
  • 红色表示对应位置两个token相互可见,白色表示相互不见(类似邻接矩阵),可见即这棵树中是不是在同一条链中

K-BERT_自然语言处理_03

  • 只对bert中的self-attention做了简单的修改
  • 如果两个字相互不见则K-BERT_BERT_04就会是0,这样两个词的隐藏状态间就没有影响
  • 这样某些词就不能随意的影响其他词,如上面[Apple]只能通过[Cook]间接作用于[CLS],降低了知识噪声

而其他的地方和bert保持一致,可以让k-bert只有迁移好其他的已经训练好的bert类型

实验结果

K-BERT_自然语言处理_05

K-BERT_BERT_06

  • 在开放领域只有微小的提升

K-BERT_BERT_07

  • 特定领域表现不错

整体来说实验效果不好