seq2seq 入門

本文結(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
也許可以找到你想要的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 近日,谷歌官方在 Github開(kāi)放了一份神經(jīng)機(jī)器翻譯教程,該教程從基本概念實(shí)現(xiàn)開(kāi)始,首先搭建了一個(gè)簡(jiǎn)單的NMT模型...
    MiracleJQ閱讀 6,719評(píng)論 1 11
  • 9. 循環(huán)神經(jīng)網(wǎng)絡(luò) 場(chǎng)景描述 循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)是一種主流的深度學(xué)習(xí)...
    _龍雀閱讀 2,969評(píng)論 0 3
  • 第一章、金錢是在靠近你還是遠(yuǎn)離你,取決于你的選擇 1.錢是一種能量,它需要流動(dòng) 金錢是流動(dòng)的能量 金錢本身沒(méi)有意義...
    小白哥說(shuō)閱讀 640評(píng)論 0 0
  • 誰(shuí)道少年不識(shí)愁?梧桐樹(shù)下,念君人消瘦。幽幽思緒何時(shí)休,閑情逸志怎堪留。 悠悠小河映垂柳,景色如常,...
    陶然心情閱讀 555評(píng)論 0 1
  • 杜小兔bunny閱讀 227評(píng)論 0 1

友情鏈接更多精彩內(nèi)容