Processing math: 100%

Deep Learning Note: 5-12 Attention 模型

  前面介绍的机器翻译算法都使用了编码器-译码器的结构,通过编码器得到输入文本的一个编码,再通过译码器生成对应的翻译文本。这种结构对于较短的句子可以取得很高的 Bleu 分数,而在比较长的句子(如长度有三四十个单词的句子)上的性能则会下降,如图 1 所示,因为网络很难记忆这种很长的句子。

图 1

图 1

  Neural Machine Translation by Jointly Learning to Align and Translate 一文提出的 Attention 模型有助于解决机器翻译在长句子上的性能问题。

  举例来说,在从法语翻译为英语的任务中,对于句子:

Jane visite l’Afrique en septembre.

Attention 模型计算英文翻译第 1 个词的计算过程如图 2 所示。

图 2

图 2

  图 2 中,将法语句子输入一个双向 RNN,该双向 RNN 在 t 时刻输出的两个激活值 a<t>a<t>,为了方便书写,使用 a<t> 表示这两个激活值,即:

a<t>=(a<t>,a<t>)

  使用 α<t,t> 表示在计算英文翻译的第 t 个词 ˆy<t> 时,对 a<t> 的关注(Attention)程度,称为 Attention 权重。如图 2 中 α<1,t>,表示在生成英语翻译的第 1 个词时,对法语句子中第 t 个词的关注(Attention)程度。这些 Attention 参数都大于 0。

  在输出英语翻译的第 1 个词时,使用的上下文 c<1> 为各 a<t> 与对应 Attention 权重的加权平均值:

c<1>=tα<1,t>a<t>

  在另一个 RNN 中,使用初始激活值 s<0>、上下文 c<1> 作为输入,可以得到 t=1 时刻的激活值 s<1>,进而得到 t=1 时刻的网络输出,即英文翻译的第 1 个词 ˆy<1>

  类似地,Attention 模型计算英文翻译第 2 个词的计算过程如图 3 所示。

图 3

图 3

  此时使用一组新的 Attention 权重 α<2,t> 得到英文翻译第 2 个词的上下文 c<2>

c<2>=tα<2,t>a<t>

  以此类推,就可以得到完整的英文翻译。输出英文翻译的网络就像一个普通的 RNN 网络,它在计算英文翻译中的每个词时,使用的上下文 c<t> 都由法语文本的激活值 a<t> 与 Attention 权重参数加权平均得到。通过 Attention 权重参数,英文翻译的每个词可以只与有限个法语文本的词相关,而不必记忆完整的法语文本输入。这一点与人类翻译的过程类似,人类在翻译很长的句子时,并不会一口气记住整个句子的内容再翻译,而是会先读一部分内容,进行翻译后,再读下面一部分内容,逐步地完成整句话的翻译。

  α<t,t> 的计算方法为:

α<t,t>=exp(e<t,t>)Txt=1exp(e<t,t>)

  式 (4) 相当于计算 e<t,t> 的 Softmax,由此得到的 α<1,t> 满足:

tα<1,t>=1

  关于式 (4) 中 e<t,t> 的计算,可以使用一个如图 4 所示的简单的神经网络来计算。

图 4

图 4

  e<t,t> 主要和输出翻译的 RNN 在 t1 时刻的状态 s<t> 以及输入文本的 RNN 在 t 时刻的激活值 a<t> 有关,图 4 所示的网络就是用来学习 s<t>a<t>e<t,t> 之间的关系的,进而由式 (4) 得到的 α<t,t> 可以告诉网络在计算英文翻译的第 t 个词 y<t> 时,对法语输入第 t 个词的激活值 a<t> 的关注程度。

  以上 Attention 模型的一个缺点是具有平方的时间复杂度,假设输入文本的长度为 Tx,输出文本的长度为 Ty,则计算时间为 O(TxTy)。但是实际中使用的句子通常并没有长到让计算时间无法接受的程度,也有一些研究致力于减少计算时间。

  Attention 模型也可以用于图像标注问题,详情可以参考 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention 一文。