前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Transformers Assemble(PART III)

Transformers Assemble(PART III)

作者头像
NewBeeNLP
发布2020-08-26 15:47:16
5220
发布2020-08-26 15:47:16
举报
文章被收录于专栏:NewBeeNLPNewBeeNLPNewBeeNLP

写在前面

这一期魔改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函数显示地引入位置信息,考虑的是绝对位置:

P E(\text { pos }, 2 i)=\sin \left(\frac{\text { pos }}{100000^{2 i / d_{\text {model}}}}\right)
P E(\text { pos }, 2 i+1)=\cos \left(\frac{\text { pos }}{10000^{2 i / d_{\text {model}}}}\right)

其中,

pos

表示token在序列中的位置,

i

表示position embedding的第

i

维,总共有

d_{model}

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

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

1.1 Vanilla Transformer

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

z_{i}=\sum_{j=1}^{n} \alpha_{i j}\left(x_{j} W^{V}\right)
\alpha_{i j}=\frac{\exp e_{i j}}{\sum_{k=1}^{n} \exp e_{i k}}
e_{i j}=\frac{\left(x_{i} W^{Q}\right)\left(x_{j} W^{K}\right)^{T}}{\sqrt{d_{z}}}

❝「

e_{ij}

」: the scaled dot product of token

i

and token

j

; 「

\alpha_{ij}

」: the weight coefficient of token

i

and token

j

; 「

z{i}

」: the output representation of token

i
1.2 Relative Position Representations

输入被看成是有向全连接图,两个token

x_{i}

x_{j}

之间的边设置了权重

a_{i j}^{V}, a_{i j}^{K} \in \mathbb{R}^{d_{a}}

,用做attention时key-value对添加相对位置信息。

作者认为,在token之间超过一定距离之后相对位置信息就没有意义,因此设置了一个最大截断

k

,且截断可以更好地提升模型泛化能力。计算公式如下:

a_{i j}^{K}=w_{\operatorname{clip}(j-i, k)}^{K}
\alpha_{i j}=\frac{\exp e_{i j}}{\sum_{k=1}^{n} \exp e_{i k}}
e_{i j}=\frac{\left(x_{i} W^{Q}\right)\left(x_{j} W^{K}\right)^{T}}{\sqrt{d_{z}}}

其中,上面的

a_{i j}^{K}

a_{i j}^{V}

都是需要学习的,即需要学习的为

w^{K}=\left(w_{-k}^{K}, \ldots, w_{k}^{K}\right) \text { and } w^{V}=\left(w_{-k}^{V}, \ldots, w_{k}^{V}\right)

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

w^{K}=\left(w_{-4}^{K}, \ldots, w_{4}^{K}\right)
w^{V}=\left(w_{-4}^{V}, \ldots, w_{4}^{V}\right)
1.3 Relation-aware Self-Attention

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

z_{i}=\sum_{j=1}^{n} \alpha_{i j}\left(x_{j} W^{V}+a_{i j}^{V}\right)
e_{i j}=\frac{x_{i} W^{Q}\left(x_{j} W^{K}+a_{i j}^{K}\right)^{T}}{\sqrt{d_{z}}}

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

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来编码元素之间的距离。

上图左边属于两种序列位置编码表示,具体在上一节已经有介绍;右边是本文提出的结构位置编码,分为两种:

  • 「Absolute Structural Position」:把句子的主要动词(如上图"held")作为origin,然后通过计算句法树中目标词语origin之间的距离作为绝对结构位置信息:
\operatorname{abs}_{\operatorname{str} u}\left(x_{i}\right)=\operatorname{distance}_{\operatorname{tree}}\left(x_{i}, \text {origin}\right)
  • 「Relative Structural Position」:相对位置信息考虑的单词对之间的关系,
    • 如果单词
    x_{i}

    x_{j}

    在句法树的同一条边上,则相对位置即为绝对位置之差:

r e l_{s t r u}\left(x_{i}, x_{j}\right)=a b s_{s t r u}\left(x_{i}\right)-a b s_{s t r u}\left(x_{j}\right)
  • 如果在不同的边上,相对位置为绝对位置之和乘上一个系数
f_{s t r u}(x)
r e l_{s t r u}\left(x_{i}, x_{j}\right)=f_{s t r u}(i-j) *\left(a b s_{s t r u}\left(x_{i}\right)+a b s_{s t r u}\left(x_{j}\right)\right)

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

f_{s t r u}(x)=\left\{\begin{array}{ll} {1} & {x>0} \\ {0} & {x=0} \\ {-1} & {x<0} \end{array}\right.

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

  • 对于绝对位置,通过一个非线性函数将序列位置和结构位置融合得到位置表示:
\operatorname{asb}\left(x_{i}\right)=f_{a b s}\left(\mathrm{ABSPE}\left(a b s_{s e q}\right)\right.,\left.\mathrm{ABSPE}\left(a b s_{s t r u}\right)\right)
  • 对于相对位置,采用同上一篇论文一致的方法

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

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

3.1 位置信息编码
  • 「距离性」 vanilla transformer中位置信息使用sin/cos函数嵌入,由公式定义
\begin{aligned} P E_{t, 2 i}=& \sin \left(\frac{t}{10000^{2 i / d}}\right) \\ P E_{t, 2 i+1} &=\cos \left(\frac{t}{10000^{2 / d}}\right) \end{aligned}

可以推导出

\begin{aligned} P E_{t}^{T} P E_{t+k} &=\sum_{j=0}^{\frac{d}{2}-1}\left[\sin \left(c_{j} t\right) \sin \left(c_{j}(t+k)\right)+\cos \left(c_{j} t\right) \cos \left(c_{j}(t+k)\right)\right] \\ &=\sum_{j=0}^{\frac{d}{2}-1} \cos \left(c_{j}(t-(t+k))\right) \\ &=\sum_{j=0}^{\frac{d}{2}-1} \cos \left(c_{j} k\right) \end{aligned}

可见两个元素的点积只与它们之间的距离

k

有关(「距离敏感」),但是进一步研究可以发现,当position embedding被映射到自注意力的键值对时,其就会失去距离敏感性,如下图,最上面的曲线表示

P E_{t}^{T} P E_{t+k}

,可以反映对称性;下面两条曲线表示

P E_{t}^{T}W PE_{t+k}

,无距离特性。

❝论文中说

P E_{t}^{T}W PE_{t+k}

中的

W

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

  • 「方向性」

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

j=t-k

,有

P E_{t}^{T} P E_{t+k}=P E_{j}^{T} P E_{j+k}=P E_{t-k}^{T} P E_{t}

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

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

Q, K, V=H W_{q}, H_{d_{k}}, H W_{v}
{R_{t-j}=\left[\ldots, \sin \left(\frac{t-j}{10000^{2 i} d_{k}}\right) \cos \left(\frac{t-j}{10000^{2 i} d_{k}}\right), \ldots\right]^{T}}
{A_{t j}^{r e l}=Q_{t}^{T} K_{j}+Q_{t}^{T} R_{t-j} u^{T} K_{j}+v^{T} R_{t-j}}
{A t tn(Q, K, V)=\operatorname{softmax}\left(A^{r e l}\right) V}

与transformer-xl里的比较像。

3.2 注意力稀疏

注意到修改后的Attention计算最后没有用到「scaling系数」

\sqrt{d}

,这是因为对于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 -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • Self-Attention with Relative Position Representations[1]
  • Self-Attention with Structural Position Representations[5]
  • TENER: Adapting Transformer Encoder for Named Entity Recognition[7]
    • 本文参考资料
    相关产品与服务
    机器翻译
    机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档