以机器翻译为例说明:
普通的RNN机器翻译模型:
次结构弱点在于当target句子太长时,前面encoder学习到的embedding vector(红边框)可能会被后面的decoder遗忘。因此改进版本如下:
这样,每次在输入target的word的时候,除了可以看到上一个word,还可以看到最开始encoder学习到的embedding vector.
但是次结构的问题有:
-
只用一个emebdding vector代替一整个sequence, 可能最开始读入encoder的word最后算embedding vector的时候被遗忘。即:如果输入的sequence很复杂,就不能使用一个vector来描述输入sequence.
-
每次输入decoder的东西都是一样的,得到的结果也不会太好。
在机器翻译的时候,输出的一个target的word很大程度上来源于输入sequence中的某一个或者几个word,而不是真个句子。如下:
这就是attention模型的来历。即计算输出中的某个word与输入的所有word之间的相似度,最后将相似度加权求和。计算过程如下:
α 0 1 \alpha_0^1 α01有初始状态 z 0 z^0 z0和 h 1 h^1 h1计算得到。
然后用 z 0 z^0 z0和每个输入计算matching score:
然后计算 z 0 z_0 z0与输入的attention score
得到输出 z 1 z^1 z1
接下来计算下个matching score c 1 c^1 c1:
然后一直重复下去。
图片来源于李宏毅课程。