Seq2Seq模型是RNN最重要的一個(gè)變種:N vs M(輸入與輸出序列長度不同)普筹。
這種結(jié)構(gòu)又叫Encoder-Decoder模型败明。
原始的N vs N RNN要求序列等長,然而我們遇到的大部分問題序列都是不等長的太防,如機(jī)器翻譯中妻顶,源語言和目標(biāo)語言的句子往往并沒有相同的長度。
為此蜒车,Encoder-Decoder結(jié)構(gòu)先將輸入數(shù)據(jù)編碼成一個(gè)上下文向量c:
得到c有多種方式讳嘱,最簡單的方法就是把Encoder的最后一個(gè)隱狀態(tài)賦值給c,還可以對最后的隱狀態(tài)做一個(gè)變換得到c酿愧,也可以對所有的隱狀態(tài)做變換呢燥。
拿到c之后,就用另一個(gè)RNN網(wǎng)絡(luò)對其進(jìn)行解碼寓娩,這部分RNN網(wǎng)絡(luò)被稱為Decoder。具體做法就是將c當(dāng)做之前的初始狀態(tài)h0輸入到Decoder中:
還有一種做法是將c當(dāng)做每一步的輸入:
由于這種Encoder-Decoder結(jié)構(gòu)不限制輸入和輸出的序列長度呼渣,因此應(yīng)用的范圍非常廣泛棘伴,比如:
機(jī)器翻譯。Encoder-Decoder的最經(jīng)典應(yīng)用屁置,事實(shí)上這一結(jié)構(gòu)就是在機(jī)器翻譯領(lǐng)域最先提出的
文本摘要焊夸。輸入是一段文本序列,輸出是這段文本序列的摘要序列蓝角。
閱讀理解阱穗。將輸入的文章和問題分別編碼,再對其進(jìn)行解碼得到問題的答案使鹅。
語音識別揪阶。輸入是語音信號序列,輸出是文字序列患朱。