Seq2seq 理解
注:这篇文章是根据小象学院史兴老师自然语言课程,加上自己的理解。方便日后复习。
一,模型
,其是一个结构化预测。
F:input sequence /source sequence
E:output sequence/target sequence
二,模型示意图
图示说明:1)encode和decoder的参数不同;2)h,c是中间向量;3)每一层的lstm参数不同,同一层的参数相同;4)可以拿中间变量来做聚类,文本分类等工作;4)运算量主要集中在decoder的 output embedding地方,因为要对词汇空间进行遍历,然后找去概率最大的组合序列。
三,模型主要使用的算法
模型主要用到了Beam Search搜索算法。个人感觉是在Viterbi 算法的基础上加入了排序。
1)Viterbi Algorithm
s(v, n)表示长度为n的序列,以v结尾的最大概率;t(i, j, n)表示由n-1步的i状态转移到n步的j状态的概率。
评价:如果仅使用Viterbi算法搜索预测序列需要很大的运算量,尤其是V的空很大时,几乎无法进行
2)Beam Search Algorithm
该算法对上一步生成的序列排序后,根据需要选取top n大的序列组合,然后在往后转移。无论怎么样 top n是远远小于空间V的。
四,提升模型用到的技巧
dropout , reverse,attention, feed-input
reverse就是把前一个seq倒序,attention就是让前一个seq中的各词一步到达后一个需要预测的seq对应的位置