372 Chapter 10. 基于循环神经网络的模型 肖桐 朱靖波
表示
ˆ
h,使得它与目标语言位置 j 对应得最好?
那么,如何理解这个过程?注意力机制的本质又是什么呢?换一个角度来看,实
际上,目标语言位置 j 可以被看作是一个查询,我们希望从源语言端找到与之最匹
配的源语言位置,并返回相应的表示结果。为了描述这个问题,可以建立一个查询系
统。假设有一个库,里面包含若干个 key-value 单元,其中 key 代表这个单元的索引
关键字,value 代表这个单元的值。比如,对于学生信息系统,key 可以是学号,value
可以是学生的身高。当输入一个查询 query,我们希望这个系统返回与之最匹配的结
果。也就是,希望找到匹配的 key,并输出其对应的 value。比如,当查询某个学生的
身高信息时,可以输入学生的学号,之后在库中查询与这个学号相匹配的记录,并
把这个记录中的 value(即身高)作为结果返回。
图10.22展示了一个这样的查询系统。里面包含四个 key-value 单元,当输入查询
query,就把 query 与这四个 key 逐个进行匹配,如果完全匹配就返回相应的 value。
在图中的例子中,query 和 key
3
是完全匹配的(因为都是横纹),因此系统返回第三
个单元的值,即 value
3
。当然,如果库中没有与 query 匹配的 key,则返回一个空结
果。
value
1
value
2
value
3
value
4
key
1
key
2
key
3
key
4
query
匹配
返回结果
图 10.22 传统查询模型
也可以用这个系统描述翻译中的注意力问题,其中,query 即目标语言位置 j 的
某种表示,key 和 value 即源语言每个位置 i 上的 h
i
(这里 key 和 value 是相同的)。
但是,这样的系统在机器翻译问题上并不好用,因为目标语言的表示和源语言的表
示都在多维实数空间上,所以无法要求两个实数向量像字符串一样进行严格匹配,或
者说这种严格匹配的模型可能会导致 query 几乎不会命中任何的 key。既然无法严
格精确匹配,注意力机制就采用了一个“模糊”匹配的方法。这里定义每个 key
i
和
query 都有一个 0~1 之间的匹配度,这个匹配度描述了 key
i
和 query 之间的相关程
度,记为 α
i
。而查询的结果(记为 value)也不再是某一个单元的 value,而是所有
单元 value 用 α
i
的加权和,具体计算如下:
value =
X
i
α
i
·value
i
(10.21)
也就是说所有的 value
i
都会对查询结果有贡献,只是贡献度不同罢了。可以通过设
计 α
i
来捕捉 key 和 query 之间的相关性,以达到相关度越大的 key 所对应的 value
对结果的贡献越大。
重新回到神经机器翻译问题上来。这种基于模糊匹配的查询模型可以很好的满