阅读论文笔记:Neural Machine Translation by Jointly Learning to Align and Translate
一、进食前提
这里要弄明白RNN,LSTM,BiRNN,Seq2Seq
二、RNN With Encoder-Decoder
在Encoder-Decoder框架中,编码器读取输入语句,即向量序列,生成中间语义向量
我们先看一个大概的流程
当作 Decoder 的每一时刻输入,则是 Seq2Seq 模型的第一种模型:
如果直接将 输入到 Decoder 中,则是 Seq2Seq 模型的第二种模型:
即我们要在Encoder内计算隐状态 ,最后得到中间语义向量,将其送入Decoder,再由Decode进行解析,输出每次对应的在其先验条件下的输出概率最大的词。
从目前来看,我们仅需知道三个参数,,就可以进行翻译了
该论文最后给出了两种实现模型,通用框架A1和 A2
我们可以将翻译步骤略缩为①和②
①Encoder部分
当前的隐层输出由上一层的隐层输出和当前层输入计算得出
这里对于RNN的激活函数,作者使用Choet 等人(2014a)Learning phrase representations using RNN encoder-decoder for statistical machine translation.提出的门控隐藏单元。
再通过计算得到中间语义向量
接下来将中间语义向量送入Decoder
②Decoder部分
给出了定义的条件概率,用以计算在当前时刻输出概率最高的词语
大概结构和流程搞清楚后,进入Encoder部分,计算方法已经给出,来看看剩下的个参数是如何计算得出的
一、论文提出的第一种通用框架A1
A1 Encoder
由权重 和 隐层输出 计算加权和得到
每个注释的权重通过下式计算
是单词的K维(1-K)的词向量嵌入,为 的嵌入矩阵 ,是复位门的输出。论文里忽略了偏差项,使方程变得更简洁。
对于长度为和的每个句子,设计对齐模型时应考虑需要评估模型×次,为了减少计算,使用单层多层感知器
为权重矩阵,由于和 不依赖于,我们可以对其进行预先计算以最大程度地减少计算成本
A1 Decoder
利用解码器状态,上下文和最后生成的单词,我们将目标单词yi的概率定义为
为图一上面部分RNN结构i时刻隐层的状态
公式的展开
权重矩阵:
where ◦ is an element-wise multiplication,即该符号代表点积
where σ (·) is a logistic sigmoid function,即该符号代表sigmoid函数
更新门允许每个隐藏单元保持其先前的激活状态
二、论文提出的第二种模型 A2
A2 Encoder
输入 1-of-K 词向量
输出 1-of-K 词向量
其中和分别是源语言和目标语言的词汇量。
首先,计算双向递归神经网络(BiRNN)的前向状态
是词向量矩阵,
反向传播状态 计算与上面相似,与权重矩阵不同,我们在前向传播和反向传播RNN之间共享单词嵌入矩阵,将前向传播和反向传播状态连接起来得到
A2 Decoder
给出了定义的条件概率,用以计算在当前时刻输出概率最高的词语
解码器的隐藏状态,是通过编码器给出的注释经过计算得到的(应该是这个意思)
注意,这里计算公式与上面的A1在细节有差异了
公式的展开
是目标语言的单词嵌入矩阵,权重矩阵: ,m和n是词的嵌入维数和隐藏单位数
where ◦ is an element-wise multiplication,即该符号代表点积
where σ (·) is a logistic sigmoid function,即该符号代表sigmoid函数
初始隐藏状态 = ,
参考
[1] Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. arXiv:1406.1078v3 (2014).
[2] Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215v3 (2014)
[3] Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
[4] 详解从 Seq2Seq模型、RNN结构、Encoder-Decoder模型 到 Attention模型