12. 基于自注意力的模型
循环神经网络和卷积神经网络是两种经典的神经网络结构,在机器翻译中进行
应用也是较为自然的想法。但是,这些模型在处理文字序列时也有问题:它们对序
列中不同位置之间的依赖关系的建模并不直接。以卷积神经网络为例,如果要对长
距离依赖进行描述,需要多层卷积操作,而且不同层之间信息传递也可能有损失,这
些都限制了模型的能力。
为了更好地描述文字序列,研究人员提出了一种新的模型 Transformer。Trans-
former 并不依赖任何循环单元或者卷积单元,而是使用一种被称作自注意力网络的
结构来对序列进行表示。自注意力机制可以非常高效的描述任意距离之间的依赖关
系,因此非常适合处理语言文字序列。Transformer 一经提出就受到了广泛关注,现
在已经成为了机器翻译中最先进的架构之一。本章将会对 Transformer 的基本结构和
实现技术进行介绍。这部分知识也会在本书的前沿部分(第十三章∼ 第十八章)中
大量使用。
12.1 自注意力机制
首先回顾一下循环神经网络处理文字序列的过程。如图12.1所示,对于单词序列
{w
1
,...,w
m
},处理第 m 个单词 w
m
时(绿色方框部分),需要输入前一时刻的信息
(即处理单词 w
m−1
),而 w
m−1
又依赖于 w
m−2
,以此类推。也就是说,如果想建立
w
m
和 w
1
之间的关系,需要 m −1 次信息传递。对于长序列来说,单词之间信息传
递距离过长会导致信息在传递过程中丢失,同时这种按顺序建模的方式也使得系统
408 Chapter 12. 基于自注意力的模型 肖桐 朱靖波
对序列的处理十分缓慢。
w
1
w
2
w
3
...
w
m−1
w
m
信息传递
图 12.1 循环神经网络中单词之间的依赖关系
那么能否摆脱这种顺序传递信息的方式,直接对不同位置单词之间的关系进行
建模,即将信息传递的距离拉近为 1?自注意力机制的提出便有效解决了这个问题
[532]
。
图12.2给出了自注意力机制对序列进行建模的示例。对于单词 w
m
,自注意力机制直
接建立它与前 m −1 个单词之间的关系。也就是说,w
m
与序列中所有其他单词的距
离都是 1。这种方式很好地解决了长距离依赖问题,同时由于单词之间的联系都是相
互独立的,因此也大大提高了模型的并行度。
w
1
w
2
w
3
...
w
m−1
w
m
信息传递
图 12.2 自注意力机制中单词之间的依赖关系
自注意力机制也可以被看作是一个序列表示模型。比如,对于每个目标位置 j,
都生成一个与之对应的源语言句子表示,它的形式如下:
C
j
=
X
i
α
i,j
h
i
(12.1)
其中,h
i
为源语言句子每个位置的表示结果,α
i,j
是目标位置 j 对 h
i
的注意力权重。
以源语言句子为例,自注意力机制将序列中每个位置的表示 h
i
看作 query(查询),
并且将所有位置的表示看作 key(键)和 value (值)。自注意力模型通过计算当前
位置与所有位置的匹配程度,也就是在注意力机制中提到的注意力权重,来对各个
位置的 value 进行加权求和。得到的结果可以被看作是在这个句子中当前位置的抽
象表示。这个过程,可以叠加多次,形成多层注意力模型,对输入序列中各个位置进
行更深层的表示。
h(他) h(什么) h(也) h(没) h(学)h(他)
α
1
α
2
α
3
α
4
α
5
图 12.3 自注意力机制的计算实例
举个例子,如图12.3所示,一个汉语句子包含 5 个词。这里,用 h(他) 表示“他”
当前的表示结果,其中 h(·) 是一个函数,用于返回输入单词所在位置对应的表示结
果(向量)。如果把“他”看作目标,这时 query 就是 h(他),key 和 value 是图中所
有位置的表示,即:h(他)、h(什么)、h(也)、h(没)、h(学)。在自注意力模型中,首
12.1 自注意力机制 409
先计算 query 和 key 的相关度,这里用 α
i
表示 h(他) 和位置 i 的表示之间的相关性。
然后,把 α
i
作为权重,对不同位置上的 value 进行加权求和。最终,得到新的表示
结果
˜
h (他),其具体计算如下:
˜
h(他) = α
1
h(他) +α
2
h(什么) +α
3
h(也) +
α
4
h(没) +α
5
h(学) (12.2)
同理,也可以用同样的方法处理这个句子中的其他单词。可以看出,在自注意力
机制中,并不是使用类似于循环神经网络的记忆能力去访问历史信息。序列中所有
单词之间的信息都是通过同一种操作(query 和 key 的相关度)进行处理。这样,表
示结果
˜
h(他) 在包含“他”这个单词的信息的同时,也包含了序列中其他词的信息。
也就是,序列中每一个位置的表示结果中,都包含了其他位置的信息。从这个角度
说,
˜
h(他) 已经不再是单词“他”自身的表示结果,而是一种在单词“他”的位置上
的全局信息的表示。
通常,也把生成
˜
h(w
i
) 的过程看作特征提取,而实现这个过程的模型被称为特征
提取器。循环神经网络、卷积神经网络和自注意力模型都是典型的特征提取器。特
征提取是神经机器翻译系统的关键步骤,在随后的内容中可以看到自注意力模型是
一个非常适合机器翻译任务的特征提取器。