49

Transformers Assemble(PART III)

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650412494&%3Bidx=1&%3Bsn=fbf701913d60a56185093d08f8acb039
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

写在前面

这一期魔改Transformers主要关注对原始模型中位置信息的讨论与优化,

  • 「Self-Attention with RPR from Google,NAACL2018」

  • 「Self-Attention with SPR from Tencent,EMNLP 2019」

  • 「TENER from FDU」

  • Encoding Word Order in Complex Embedding,ICLR2020

考虑到加上第四篇就太长了,所以额外分一篇在后面讨论吧。 第四篇也非常有趣提出将独立的词向量替换成自变量为位置的函数,引入了复数空间综合了词向量和位置向量

好啦进入本期正题

Self-Attention with Relative Position Representations [1]

一篇短文不是很难理解,文章要解决的痛点也非常清晰:self-attention机制在处理序列输入时无法编码位置信息。在原始Transformer里是采取sin/cos函数显示地引入位置信息,考虑的是绝对位置:

其中,表示token在序列中的位置,表示position embedding的第 维,总共有 维。另外,作者在原文中指出,sin/cos函数的周期性形式可以允许模型进一步学习到相对位置的信息。但是这种方式学习到的相对位置信息仍然是存在较大缺陷的,参考文章【浅谈 Transformer-based 模型中的位置表示】 [2] 。

针对以上问题,这篇论文提出一种相对位置信息引入Transformer的方法。

1.1 Vanilla Transformer

为了方便两者的对比,给出原始Transformer里self-attention的计算:

: the scaled dot product of token and token ;

: the weight coefficient of token and token ;

: the output representation of token 

1.2 Relative Position Representations

输入被看成是有向全连接图,两个token、之间的边设置了权重 ,用做attention时key-value对添加相对位置信息。 JBbaIbj.png!web 作者认为,在token之间超过一定距离之后相对位置信息就没有意义,因此设置了一个最大截断 ,且截断可以更好地提升模型泛化能力。计算公式如下:

其中,上面的和 都是需要学习的,即需要学习的为

公式可能不好理解,举个栗子,假设序列长度N=9,截断窗口k=3,则RPR嵌入的lookup表如下图,感觉跟 「滑动窗口」 有点像:

EVFz2ye.png!web

1.3 Relation-aware Self-Attention

理解上面RPR之后,就可以对原始self-attention进行改写,将相对位置信息融入进去:

虽然论文基本概念相对简单(自注意力机制中包含了相对位置信息),但是它极大地提高了两个机器翻译任务的翻译质量。

1.4 Reference

  • Code Here [3]

  • How Self-Attention with Relative Position Representations works [4]

Self-Attention with Structural Position Representations [5]

不管是transformer原文的绝对位置编码还是上文引入的相对位置编码,都属于 「sequential information」 。作者从Hewitt和Manning发表的论文 [6] 中得到启发:句子的潜在结构可以通过结构深度和距离来捕获,于是他们提出了 absolute structural position 来编码元素在句法树中深度, relative structural position 来编码元素之间的距离。 AZ3qQjq.png!web 上图左边属于两种序列位置编码表示,具体在上一节已经有介绍;右边是本文提出的结构位置编码,分为两种:

  • 「Absolute Structural Position」 :把句子的主要动词(如上图"held")作为origin,然后通过计算句法树中目标词语origin之间的距离作为绝对结构位置信息:

  • 「Relative Structural Position」 :相对位置信息考虑的单词对之间的关系,

    • 如果单词 和 在句法树的同一条边上,则相对位置即为绝对位置之差:

  • 如果在不同的边上,相对位置为绝对位置之和乘上一个系数 

当两个单词正序时系数为1;相同时系数为0;逆序时系数为-1:

接下去就是将结构位置信息整合进SAN,

  • 对于绝对位置,通过一个非线性函数将序列位置和结构位置融合得到位置表示:

  • 对于相对位置,采用同上一篇论文一致的方法

TENER: Adapting Transformer Encoder for Named Entity Recognition [7]

针对命名实体识别任务的一个工作,虽然Transformer系在NLP很多领域都取得了非常大的进步,但是在NER任务上表现不佳。作者分析了注意力机制与特定的NER任务,发现原始实现中的 「位置信息编码」「注意力稀疏性」 方面不太适用于NER。下面来一一分析。

3.1 位置信息编码

  • 「距离性」

    vanilla transformer中位置信息使用sin/cos函数嵌入,由公式定义

可以推导出

可见两个元素的点积只与它们之间的距离有关( 「距离敏感」 ),但是进一步研究可以发现,当position embedding被映射到自注意力的键值对时,其就会失去距离敏感性,如下图,最上面的曲线表示 ,可以反映对称性;下面两条曲线表示 ,无距离特性。 MnqQNzR.png!web

论文中说中的 是随机的,但是这个参数是可学习的,在模型训练之后会不会效果变好?

  • 「方向性」

此外,由上述推导可知,令,有

因此这也是 「方向不敏感」

由上分析可知该种嵌入方式并不能反映方向性和距离性,但是对于NER任务而言距离和方向都是尤为重要的。为此本文对注意力分数计算进行改进,将绝对位置改成相对位置:

与transformer-xl里的比较像。

3.2 注意力稀疏

注意到修改后的Attention计算最后没有用到 「scaling系数」 ,这是因为对于NER任务只需要attend几个相对重要的context就足够了,scaled后的attention分布过于平滑会引入噪音。

这篇论文感觉主要重点在工程意义,在NER任务达到最好的效果;针对NER任务做了专门的修改,除了上面的相对位置信息和系数注意力,由于NER数据集相对较小,也减少了模型的可学习参数避免过拟合。

3.3 reference

  • Code Here [8]

  • TENER: Adapting Transformer Encoder for NER [9]

本文参考资料

[1]

Self-Attention with Relative Position Representations: http://xxx.itp.ac.cn/pdf/1803.02155.pdf

[2]

【浅谈 Transformer-based 模型中的位置表示】: https://zhuanlan.zhihu.com/p/92017824

[3]

Code Here: https://github.com/THUNLP-MT/THUMT/blob/d4cb62c215d846093e5357aa17b286506b2df1af/thumt/layers/attention.py

[4]

How Self-Attention with Relative Position Representations works: https://medium.com/@ init /how-self-attention-with-relative-position-representations-works-28173b8c245a

[5]

Self-Attention with Structural Position Representations: https://arxiv.org/abs/1909.00383

[6]

Hewitt和Manning发表的论文: https://www.aclweb.org/anthology/N19-1419/

[7]

TENER: Adapting Transformer Encoder for Named Entity Recognition: http://xxx.itp.ac.cn/abs/1911.04474

[8]

Code Here: https://github.com/fastnlp/TENER

[9]

TENER: Adapting Transformer Encoder for NER: https://zhuanlan.zhihu.com/p/91557813

-   END  -

推荐阅读

AINLP年度阅读收藏清单

深度学习模型如何调优和部署

Transformers Assemble(PART II)

Transformers Assemble(PART I)

站在BERT肩膀上的NLP新秀们(PART I)

站在BERT肩膀上的NLP新秀们(PART II)

站在BERT肩膀上的NLP新秀们(PART III)

大幅减少GPU显存占用:可逆残差网络(The Reversible Residual Network)

鼠年春节,用 GPT-2 自动写对联和对对联

transformer-XL与XLNet笔记

AINLP-DBC GPU 云服务器租用平台建立,价格足够便宜

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。

qIR3Abr.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK