引言
Minh-Thang Luong等在2015年arXiv上的论文,原文地址:地址
这是继Bahdanau提出attention用于NLP的后续工作,作者提出了两种新的,相对于前面工作简单但有效的网络,一种称为global方法,实现上与Bahdanau使用的方式很相似,在每一次生成目标词时,都需要所有对源语句隐藏状态计算相似度,但相对来说更为直接简单;另一种称为local方法,不同的是在计算时只需要对源语句某个子集计算相似度,之后基于这个子集生成context vector。
此外,作者对比了不同的对齐函数在模型上所取得的效果,使用文中提出的模型,作者在英文翻译到德文的多项任务中取得了SOTA的结果。
模型
Neural Machine Translation
一般的神经网络翻译模型,都是直接对条件概率 p ( y ∣ x ) p(y|x) p(y∣x)建模,其中x为源语句,y为目标语句。具体到上述图中,蓝色部分的encoder,将目标语句编译成语义表示s,而红色部分的decoder接收源语句表示s,逐个字翻译目标语句,表达式如下:
在上述端到端的模型中,一般在神经单元后续加上一个softmax函数,生成一个字典大小的概率分布向量,决定当前生成的字,
如上所示,在整个计算过程中,源语句语义表示s都是不变的,如果通过一些方式使得s可以动态的变化,就是attention模型了。
Attention-based Models
Attention模型实际上讲的就是如何计算动态的源语句语义表示,这里称为c,对应的t时间步的语义表示则称为 c t c_t ct。
对于global或者local方法来说,不同的只是通过当前时间t隐层输出 h t h_t ht与源语句隐层输出 h s h_s hs计算出context c t c_t ct的方式,其后续步骤都是一致的,如下: