作者丨刘朋伯
学校丨哈尔滨工业大学硕士生
研究方向丨自然语言处理
研究背景
本人维护了一个 NLP 论文集仓库:
https://github.com/PengboLiu/NLP-Papers
首先简单讲一下 Self Attention。
Self Attention 原本是 Transformer 中的一个结构,现在很多时候也被单独拿出来作为一个特征抽取器。输入是一个 Query 向量,一个 Key 向量和一个 Value 向量。在 Self Attention 中,三者相同。是模型维度。
如果是 Multi-Head Attention,那就把多个 Attention 拼在一起。
简单粗暴又有效,那么能不能对这种结构进行一些改进呢?
首先是 EMNLP 2019 中,腾讯 AI Lab 的三篇关于改进 SANs 的论文(本文中,Self Attention Networks 简记为 SANs)。
在 Transformer 中,SANs 本身不能表示句子结构的,句子的序列信息是靠 “position encoding” 得到的。
本文对此进行改进,在 SANs 中融合了结构性的位置表示信息,以此增强 SANs 对句子潜在结构的建模能力。当然并没有舍弃原有的 position encoding,本文是把序列信息和结构信息一并使用。
结构化位置表示:position encoding 是根据句子中单词的实际位置建模,而本文引入了依存句法树表示单词之间的关系。直觉上来说,这种方法能挖掘出更多关于句子中各个词语之间的依存信息。
本文介绍了两种位置:绝对结构位置和相对结构位置(使用 Stanford Parser):
1. 绝对结构位置:把主要动词作为原点,然后计算依存树上每个单词到原点的距离;
2. 相对结构位置:根据以下规则计算每两个单词之间的距离:
在依存树的一条边上,两个单词的绝对结构位置之差就是相对结构位置;
如果不在同一条边,两个单词的绝对结构位置之和乘 1(两个单词在句子中正序)或 -1(两个单词在句子中正序逆序)或 0 (同一个单词)
最后,序列绝对位置和结构绝对位置通过非线性函数结合在一起得到绝对位置的表示。至于相对位置,因为每个时间步的单词都不同,方法和绝对位置表示也不一样。这里,作者参考了 Self-Attention with Relative Position Representations [1] 中的方法。
作者在 NMT 和 Linguistic Probing Evaluation 两个任务上进行试验,结果表明无论是相对结构位置还是绝对结构位置都能更好地在句法和语义层面上建模,从而达到更好的效果。
上一篇论文是利用 Parser 生成依存句法树进而改变 SANs 的输出,这篇论文则在 SANs 的结构做了一些改动,目的类似,也是为了增加句子的句法结构信息。