A Simple but Effective Pluggable Entity Lookup Table for Pre-trained Language Models

作者提出一种向 PLM 注入实体知识的简单方法:首先利用 PLM 为实体提及生成的表征预构建实体嵌入查找表,并在模型推理时修改嵌入层,将实体提及的嵌入直接替换为查找表中的嵌入,实现无特殊预训练的条件下向 PLM 注入实体知识。

Methodology

构建实体嵌入

作者观察到在 PLM 如 BERT 中,词的嵌入和输出表征实际处于相同的向量空间,因此作者考虑有可能利用输出表征构建嵌入。

对于实体 ee, 其嵌入记作 E(e)\mathbf{E}(e). 在实践中,作者按如下过程计算 E(e)\mathbf{E}(e):

  1. 收集包含 ee 的句子集 SeS_e
  2. SeS_e 中每个句子,替换 ee[MASK][MASK]
  3. xix_i 为每个句子中替换的 [MASK][MASK], E(e)=CxiSerxi\mathbf{E}(e) = C\cdot\sum_{x_i\in S_e}\mathbf{r}_{x_i}
    其中 CC 是缩放系数,rxir_{x_i} 是 PLM 为 xix_i 生成的表征。

(作者给出了为何如此设计的数学上的理由)

同时,作者将 E(e)\mathbf{E}(e) 的范数限定为常数 LL

将实体嵌入注入 PLM

首先修改输入语句,在输入语句中实体提及的后面加上 “(e)”, 即一对括号和实体 ee,此时,实体 ee 作为词典中存在的 token 出现。

例如对于输入语句:Steve Job works for [MASK]\text{Steve Job works for [MASK]}, 修改后为 \text{Steve Job(Steven_Job) works for [MASK]}.

随后在嵌入层,被插入的实体 \text{Steve_Job} 的嵌入将使用查找表中预生成的嵌入,其他 token 使用原来的嵌入。随后将该嵌入直接送入 encoder。