【Natural Language Processing】seq2seq學習筆記

         seq2seq可以看成是一個翻譯模型,即通過一個sequence轉換爲另一個sequence,也可以看做是對聯的生成,即通過上聯來產生下聯,其主要是使用兩個RNN(其實是LSTM,具體可看:LSTM(Long Short-Term Memory)學習),一個進行Encoder,另一個進行Decoder,即Encoder-Decoder,其可用在NLG(Nature Language Generation,自然語言生成)和NLU(Nature Language Understanding, 自然語言理解)等方面

一、Encoder-Decoder

        Encoder-Decoder的結構如下圖:


        在上圖中,輸入序列是”ABC”,輸出序列是”WXYZ”,其中”<EOS>”是句子結束符,我們通過在時間維度上進行展開Encoder-Decoder模型,如前面所說該模型是由兩個RNN組成的:

        ①Encoder,第一個RNN接受輸入序列”ABC”進行Encoder,並在讀取到<EOS>時終止接受輸入,通過這樣我們可以得到一個向量來表示輸入序列“ABC”的語,具體爲:


        其中f是非線性激活函數,ht−1是上一隱節點輸出, xt是當前時刻的輸入。向量c即爲我們想通過Encoder獲得的語義向量,通常爲RNN中的最後一個隱節點(h,Hidden state)輸出值,或者是多個隱節點的加權和,這就是整個Encoder的過程。

        ②Decoder,第二個RNN接受第一個RNN產生的語義向量,通過當前隱狀態 ht來預測當前的輸出符號 yt ,這裏的 ht和yt都與其前一個時刻的隱狀態和輸出有關,最終目的就是在每個時刻t輸出與上一時刻t-1相關的輸出詞的概率,具體爲:


二、Attention Mechanism

        通過上面知道在Encoder-Decoder模型中,對於目標句子Y中每個單詞的生成過程如下(其中c爲Encoder生成的語義向量):


        可以發現對於目標詞彙y,不論生成哪個單詞,都是使用Encoder過程生成的語義向量c,即句子X中的單詞對生成每一個目標單詞的影響力是相同的,顯然這是不合理的,Attention Model會對輸入序列X的不同單詞分配不同的概率,具體如下圖:


        這個時候每一個目標詞就可以根據不同的語義向量ci來生成了,即:


       c(i)對應輸入序列X不同單詞的概率分佈,其計算公式爲:

  

 

        其中n爲輸入序列的長度,第一行公式中的 hj 是Encoder第j時刻的隱狀態,對於第二行的公式中aij是對應的權重, a是一種對齊模型, si−1 是Decoder過程的前一個隱狀態的輸出,hj 是Decoder過程的當前第j個隱狀態。至此,seq2seq完成。

參考:

Sequence to Sequence Learning with Neural Networks

http://x-algo.cn/index.php/2017/01/13/1609/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章