本文結(jié)構(gòu):
- 什么是 seq2seq?
- Encoder–Decoder 結(jié)構(gòu)?
- seq2seq 結(jié)構(gòu)?
什么是 seq2seq?
seq2seq 是一個(gè) Encoder–Decoder 結(jié)構(gòu)的網(wǎng)絡(luò),它的輸入是一個(gè)序列,輸出也是一個(gè)序列, Encoder 中將一個(gè)可變長(zhǎng)度的信號(hào)序列變?yōu)楣潭ㄩL(zhǎng)度的向量表達(dá),Decoder 將這個(gè)固定長(zhǎng)度的向量變成可變長(zhǎng)度的目標(biāo)的信號(hào)序列。
這個(gè)結(jié)構(gòu)最重要的地方在于輸入序列和輸出序列的長(zhǎng)度是可變的,可以用于翻譯,聊天機(jī)器人,句法分析,文本摘要等。
下面是寫過(guò)的 seq2seq 的應(yīng)用:
RNN與機(jī)器翻譯
http://www.itdecent.cn/p/23b46605857e
如何自動(dòng)生成文本摘要
http://www.itdecent.cn/p/abc7e13abc21
自己動(dòng)手寫個(gè)聊天機(jī)器人吧
http://www.itdecent.cn/p/d0f4a751012b
Encoder–Decoder 結(jié)構(gòu)?
Cho 在 2014 年提出了 Encoder–Decoder 結(jié)構(gòu),即由兩個(gè) RNN 組成,
https://arxiv.org/pdf/1406.1078.pdf

(其中的 RNNCell 可以用 RNN ,GRU,LSTM 等結(jié)構(gòu))
在每個(gè)時(shí)刻, Encoder 中輸入一個(gè)字/詞,隱藏層就會(huì)根據(jù)這個(gè)公式而改變,

到最后一個(gè)字/詞 XT 時(shí) ,隱藏層輸出 c ,因?yàn)?RNN 的特點(diǎn)就是把前面每一步的輸入信息都考慮進(jìn)來(lái)了,所以 c 相當(dāng)于把整個(gè)句子的信息都包含了,可以看成整個(gè)句子的一個(gè)語(yǔ)義表示。
Decoder 在 t 時(shí)刻的隱藏層狀態(tài) ht 由 ht?1,yt?1,c 決定:

yt 是由 ht,yt?1,c 決定:

f 和 g 都是激活函數(shù),其中 g 函數(shù)一般是 softmax。
模型最終是要最大化下面這個(gè)對(duì)數(shù)似然條件概率:

其中每個(gè) (xn, yn) 表示一對(duì)輸入輸出的序列, θ 為模型的參數(shù)。
seq2seq 結(jié)構(gòu)?
Sutskever 在 2014 年也發(fā)表了論文:
https://arxiv.org/pdf/1409.3215.pdf
這個(gè)模型結(jié)構(gòu)更簡(jiǎn)單,

因?yàn)?Decoder 在 t 時(shí)刻 yt 是由 ht,yt?1 決定,而沒(méi)有 c:

論文中的 Encoder 和 Decoder 都用的 LSTM 結(jié)構(gòu),注意每句話的末尾要有 “<EOS>” 標(biāo)志。 Encoder 最后一個(gè)時(shí)刻的狀態(tài) [cXT,hXT] 就和第一篇論文中說(shuō)的中間語(yǔ)義向量 c 一樣,它將作為 Decoder 的初始狀態(tài),在 Decoder 中,每個(gè)時(shí)刻的輸出會(huì)作為下一個(gè)時(shí)刻的輸入,直到 Decoder 在某個(gè)時(shí)刻預(yù)測(cè)輸出特殊符號(hào) <END> 結(jié)束。
LSTM 的目的是估計(jì)條件概率 p(y1, . . . , yT′ |x1, . . . , xT ) ,
它先通過(guò)最后一個(gè)隱藏層獲得輸入序列 (x1, . . . , xT ) 的固定長(zhǎng)度的向量表達(dá) v,
然后用 LSTM-LM 公式計(jì)算輸出序列 y1, . . . , yT′ 的概率,
在這個(gè)公式中,初始狀態(tài)就是 v,

而且用了 4 層的 LSTM,而不是一層:論文中的實(shí)驗(yàn)結(jié)果表明深層的要比單層的效果好
下面是個(gè) 3 層的例子

計(jì)算公式如下:


為了便于理解,單層的表示如下:

并且對(duì)輸入序列做了一個(gè)翻轉(zhuǎn),即不是把 a, b, c 映射到 α, β, γ, 而是把 c, b, a 映射到 α, β, γ, 這樣的結(jié)果是相應(yīng)的 a 會(huì)更接近 α,并且更利于 SGD 建立輸入輸出間的關(guān)系。
參考:
Learning Phrase Representations using RNN Encoder–Decoder
for Statistical Machine Translation
https://arxiv.org/pdf/1406.1078.pdf
Sequence to Sequence Learning
with Neural Networks
https://arxiv.org/pdf/1409.3215.pdf
Generating Sequences With
Recurrent Neural Networks
https://arxiv.org/pdf/1308.0850.pdf
推薦閱讀 歷史技術(shù)博文鏈接匯總
http://www.itdecent.cn/p/28f02bb59fe5
也許可以找到你想要的