R-BERT

模型架构来自论文:https://arxiv.org/pdf/1905.08284.pdf,文章内容主要来自对这篇 Paper 的学习,感谢作者。Relation Classification 是一个重要的 NLP 任务,它主要用于对输入文本中的实体进行关系分类。例如,我们有一行文本:

谢芮芝之子谢舒扬,为荣剑尘口盟弟子而未正式拜师,孙谢天顺为相声演员。

在这行文本中出现了两个实体词汇:

荣剑尘	谢舒扬

Relation Classification 任务就是结合输入的文本,来判断文本中的两个实体词 “荣剑尘” 和 “谢舒扬” 的关系是否为 “师生”,当然 Relation Classification 不仅仅是对人物关系,还可以对人物和地点进行关系分类等等。

进行 Relation Classification 我们可以使用卷积神经网络、或者递归神经网络。在该篇论文中作者利用 Bert 模型来实现了 Relation Classification 模型,模型架构如下图所示:

模型的简要的过程如下:

  1. 将 “谢芮芝之子谢舒扬,为荣剑尘口盟弟子而未正式拜师,孙谢天顺为相声演员。” 中的实体词 “荣剑尘” 和 “谢舒扬” 两侧添加特殊的 SEP TOKEN 用于标识;
  2. 将带有 SEP TOKEN 的文本输入到 BERT 网络,计算得出每一个字/词的多层自注意力表示;
  3. 根据掩码得到实体词 “荣剑尘” 和 “谢舒扬” 的向量表示,注意: 此处我们得出了每一个字的向量表示,实体词的向量表示可以通过计算平均向量得到;
  4. 接下来,对两个实体词(”荣剑尘”、”谢舒扬”)的向量表示进行线性变换;
  5. 得到整个句子的向量表示 即: [CLS] 特殊标签对应的向量,并将其和两个实体词的向量进行拼接,得到了一个更大维度的向量;
  6. 将大向量拼接送入线性层得到关系标签的预测 Logits,并通过 Cross Entropy 计算损失。

具体的过程如下:

文本经过添加特殊标签处理之后,送入 BERT 得到了每个字/词的自注意力张量表示。接下来,通过下面公式计算每个实体词的表示:

这里需要知道的是, \(W_1=W_2,b_1=b_2\),即:两个实体词的共享同一个线性层的参数。对于 [CLS] TOKEN 对应的最后隐藏层张量 \(H_0\) 表示也进行如上的变换,计算公式如下:

我们在使用 transformers 库中实现的 BERT 模型时,该模型会输出中包含了 pooler_output,http://mengbaoliang.cn/?p=30665 该输出即对 [CLS] TOKEN 进行如上计算之后得出的结果,我们可以直接使用,无须重新增加线性层。

接下来,将三个向量进行拼接,送入线性层、SoftMax 得到预测概率:

Paper 中还提到在训练过程中,全连接之前应用了 Dropout 层防止过拟合。

未经允许不得转载:一亩三分地 » R-BERT