K-BERT

预训练大模型如Bert,通过大规模语料库训练获得一般性常识,缺少领域知识。可以注入三元组作为领域知识。但过多的知识参入使句子偏离原本意思,被称为“知识噪音”(KN:knowledge noise)。通过引入 soft-position 和 visible matrix 限制知识的影响。K-Bert能加载任何预训练模型,因为他们的参数是相同的;而且注入知识时无需训练,无需大量计算资源。

  • 提高语言模型在特定领域的能力
  • 降低模型训练成本
  • 因注入知识可手动编辑,故具有可解释性

两个挑战:

  1. 异构嵌入空间(Heterogeneous Embedding Space HES):文本中单词与知识的来源不一致,使得嵌入向量空间不一致
  2. 知识噪音(Knowledge Noise KN):过多知识参入使句子偏离原意

贡献:

  1. 提出K-BERT模型,在没有HES和KN的情况下注入知识
  2. 注入知识后在专业领域和开放领域想过都很好

结构

主要分4部分:

  1. Knowledge Layer:将输入语句注入三元组,生成带有知识的语句树
  2. Embedding layer:将带知识的语句树转化为token层的嵌入表示
  3. Seeing layer:将带知识的语句数转化为可见矩阵,可见矩阵用于解决知识噪音的问题
  4. Mask-Transformer Encoder

Knowledge Layer

用于注入句子知识句子树转换,分两步:

  1. knowledge query (K-Query):查询语句中所有实体在知识图谱中对应的三元组
  2. knowledge injection (K-Inject):将查询到的三元组组合到对应的句子位置上,一个树可以有多个分支,但深度只为1

输入为输出为

Embedding layer

用于将句子树转化为能被Mask-Transformer接收的嵌入表示,与bert类似都有词嵌入、位置嵌入、段落嵌入3种方式,但是K-Bert输入的是句子树而非token序列。如何转换句子树同时保留结构信息是关键。

Token Embedding

为了使句子树能够被bert接收,将树中的分支重排序插入相应节点后面。这个过程使得句子不可读且可能改变语义,不过 soft-position 和 visible matrix 可解决问题。

如图中关于“蒂姆库克到北京”的句子数被修改为“Tim Cook CEO Apple is visiting Beijing capital China is a City now”。

Soft-position embedding

bert 通过位置编码接收结构信息,如 token 的顺序。在K-Bert中为每个词生成新的 soft-position 用于位置编码,使得按照新的编码顺序能够得到正确语义句子。

但是相同位置的词没有关联,如 is 和 CEO,这要通过 Mask-Self-Attention 解决。

下图中灰色为句子树转换后得到的语句顺序,红色是指定的软位置索引。

Segment embedding

与bert类似,K-BERT使用特殊符号 [SEP] 分割段落。

Seeing layer

解决知识噪音,即新增单词和原有句子间的冲突。使用可见性矩阵使得不相关单词不会看见对方。

可视性矩阵定义如下:

Mask-Transformer

BERT 编码器不能接受可见性矩阵作为输入,所以我们将其修改为 Mask-Transformer,其为多个 mask-self-attention 块的堆叠。

Mask-Self-Attention

mask-self-attention 公式如下:

hi 和 hi+1 是隐藏层,M是可见性矩阵,M的行列编号对应语句的硬编码,每个位置对应的值代表着两个实体是否相互可见。可见性矩阵是对称矩阵。

 

posted @ 2023-03-13 15:10  某某人8265  阅读(128)  评论(0编辑  收藏  举报