系統學習NLP(十五)--seq2seq

Eason.wxd發表於2019-03-12

轉自:https://blog.csdn.net/aliceyangxi1987/article/details/73420477

本文結構:

  • 什麼是 seq2seq?
  • Encoder–Decoder 結構?
  • seq2seq 結構?

什麼是 seq2seq?

seq2seq 是一個 Encoder–Decoder 結構的網路,它的輸入是一個序列,輸出也是一個序列, Encoder 中將一個可變長度的訊號序列變為固定長度的向量表達,Decoder 將這個固定長度的向量變成可變長度的目標的訊號序列。

這個結構最重要的地方在於輸入序列和輸出序列的長度是可變的,可以用於翻譯,聊天機器人,句法分析,文字摘要等。

下面是寫過的 seq2seq 的應用:

RNN與機器翻譯
http://www.jianshu.com/p/23b46605857e
如何自動生成文字摘要
http://www.jianshu.com/p/abc7e13abc21
自己動手寫個聊天機器人吧
http://www.jianshu.com/p/d0f4a751012b


Encoder–Decoder 結構?

Cho 在 2014 年提出了 Encoder–Decoder 結構,即由兩個 RNN 組成,
https://arxiv.org/pdf/1406.1078.pdf

(其中的 RNNCell 可以用 RNN ,GRU,LSTM 等結構)

在每個時刻, Encoder 中輸入一個字/詞,隱藏層就會根據這個公式而改變,

到最後一個字/詞 XT 時 ,隱藏層輸出 c ,因為 RNN 的特點就是把前面每一步的輸入資訊都考慮進來了,所以 c 相當於把整個句子的資訊都包含了,可以看成整個句子的一個語義表示。

Decoder 在 t 時刻的隱藏層狀態 ht 由 ht−1,yt−1,c 決定:

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

f 和 g 都是啟用函式,其中 g 函式一般是 softmax。

模型最終是要最大化下面這個對數似然條件概率:

其中每個 (xn, yn) 表示一對輸入輸出的序列, θ 為模型的引數。


seq2seq 結構?

Sutskever 在 2014 年也發表了論文:
https://arxiv.org/pdf/1409.3215.pdf

這個模型結構更簡單,

因為 Decoder 在 t 時刻 yt 是由 ht,yt−1 決定,而沒有 c:

論文中的 Encoder 和 Decoder 都用的 LSTM 結構,注意每句話的末尾要有 “” 標誌。 Encoder 最後一個時刻的狀態 [cXT,hXT] 就和第一篇論文中說的中間語義向量 c 一樣,它將作為 Decoder 的初始狀態,在 Decoder 中,每個時刻的輸出會作為下一個時刻的輸入,直到 Decoder 在某個時刻預測輸出特殊符號 結束。

LSTM 的目的是估計條件概率 p(y1, … , yT′ |x1, … , xT ) ,
它先通過最後一個隱藏層獲得輸入序列 (x1, … , xT ) 的固定長度的向量表達 v,
然後用 LSTM-LM 公式計算輸出序列 y1, … , yT′ 的概率,
在這個公式中,初始狀態就是 v,

而且用了 4 層的 LSTM,而不是一層:論文中的實驗結果表明深層的要比單層的效果好
下面是個 3 層的例子

計算公式如下:

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

並且對輸入序列做了一個翻轉,即不是把 a, b, c 對映到 α, β, γ, 而是把 c, b, a 對映到 α, β, γ, 這樣的結果是相應的 a 會更接近 α,並且更利於 SGD 建立輸入輸出間的關係。

參考:
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

相關文章