seq2seq模型理解

xiaoxiao2021-02-28  161

声明:本文在paddle book NMT一节的基础上进行了补充,解释decoder cost、attention模型中的对齐公式、decoder引入word embedding,以及深层RNN的一种方式。

一、模型结构图

二、Encoder

编码阶段分为三步:

one-hot vector表示:将源语言句子的每个词表示成一个列向量,这个向量的维度与词汇表大小相同,并且只有一个维度上有值1其余全是0。映射到低维语义空间的词向量:one-hot vector表示存在两个问题, 1) 生成的向量维度往往很大,容易造成维数灾难; 2) 难以刻画词与词之间的语义关系。用RNN编码源语言词序列,隐向量更新公式如下: hi=Φθ(hi1,si) 整句话的向量表示可以采用h在最后一个时间步T的状态编码,或使用时间维上的池化(pooling)结果。

三、Decoder

A. 训练过程 多分类交叉熵

每一个时刻,根据源语言句子的编码信息c、真实目标语言序列的第i个词ui和i时刻RNN的隐层状态zi,计算出下一个隐层状态zi+1 zi+1=Φθ(c,ui,zi) 实际上,真正计算 zi+1 时用的不是one-hot向量的 ui ,而是 ui 对应的embedding向量,这个地方需要注意: zi+1=Φθ(c,Eui,zi) 将zi+1通过softmax归一化,得到目标语言序列的第i+1个单词的概率分布pi+1 当前预测的词与真实词可以看做一个多分类问题,目标是希望模型给出的词与训练数据中的词是一致的,多分类交叉熵公式如下:

Beam Search 是一种启发式图搜索算法,用于在图或树中搜索有限集合中的最优扩展节点,通常用在解空间非常大的系统(如机器翻译、语音识别)中,原因是内存无法装下图或树中所有展开的解。

柱搜索算法使用广度优先策略建立搜索树,在树的每一层,按照启发代价(生成词的log概率之和)对节点进行排序,然后仅留下预先确定的个数(beam size)的节点。只有这些节点会在下一层继续扩展,其他节点就被剪掉了,也就是说保留了质量较高的节点,剪枝了质量较差的节点。因此,搜索所占用的空间和时间大幅减少,但缺点是无法保证一定获得最优解。

beam search前两步的操作和训练过程是一样,不同之处是第三步,根据 pi 采样 ui ,而非计算交叉熵。

五、Attention

ci=j=1Taijhjai=[ai1,ai2,ai3,...,aiT]

aij=exp(eij)Tk=1exp(eik)

eij=align(zi,hj)

align(zi,hj)=vTatanh(Wazi+Uahj)

六、Deep RNN

七、参考

paddle book 机器翻译 Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.Zhou J, Cao Y, Wang X, et al. Deep recurrent models with fast-forward connections for neural machine translation[J]. arXiv preprint arXiv:1606.04199, 2016.
转载请注明原文地址: https://www.6miu.com/read-26235.html

最新回复(0)