[Notes] Sequence to Sequence Learning with Neural Networks (Seq2Seq)

Haren Lin
6 min readJun 2, 2021

--

論文連結 Paper Link

https://arxiv.org/pdf/1409.3215.pdf

論文地位 Position

在過去做機器翻譯(Machine Translation)的方法,都比較偏向用統計的方法,逐字翻譯。而Seq2Seq 是自然語言處理中一個非常重要的模型,是第一個在機器翻譯任務中採用神經網路架構的模型,是一個端到端(end to end)的模型,包含了 Encoder 以及 Decoder 兩個部分,此後許多優秀的論文也都是以此為想法進行開發。

摘要 Abstract

深度神經網路(Deep Neural Networks, DNNs)很強大,在許多學習任務都表現卓越。DNNs在有大量訓練標籤的資料集上表現良好,但仍無法完成將序列對映到序列的任務。在這篇論文中,作者提出了一種通用的end-to-end序列學習方法,它對序列結構的假設最小。

本文作者使用LSTM把不定長度的輸入序列,對映到一個固定維度的向量,此部分即Encoder,接者再使用另外ㄧ個LSTM將這個向量解碼輸出,此部分為Decoder。此外,作者也提出一個重大發現:在做機器翻譯時,如果將輸入句子倒過來輸入,效果較佳。

方法 Methodology

原始論文中的Seq2Seq Model

Encoder
首先,針對機器翻譯這樣的問題,我們先確立一下輸入與輸出的表示方法
Input vector = [x1, x2, …, xn]; Target output vector = [y1, y2, …, yn]。有了這兩個向量後,我們首先將Input vector傳入第一個RNN(Encoder)裡面(LSTM就是RNN,此處以RNN簡化表示),在每個時間點,RNN吃的資料包含上個時間點所產生的hidden state (ht-1)以及當前時間點的input (xt),簡單將公式寫成這樣:ht = f(ht-1,xt),且一開始的h0為隨機產出的initial hidden vector。

Context Vector
直到輸入結束時,我們最後一個時間點產出的hidden vector (hm),下圖的h3,他會傳給另一個RNN(Decoder),作為他的initial hidden vector,在NLP領域的概念上,我們稱之為Context Vector。簡言之,編碼器的最後一個時間點的輸出,會是解碼器的輸入。

Decoder
接這來到Decoder的工作,模型在一開始得時間點,會吃進hm,以及<EOS>(此部分,現在常見的是輸入<BOS>代表輸出的開始,Begin Of Sentence)這個Token,代表要開始輸出句子了。所以在t=1時,f’(hm,<BOS/EOS>)會產出hidden state h1-hat,這個時候我們會讓h1-hat傳入一個全連接層Fully Connected Layer,經過Softmax得到ŷ1,存有你的字典中每個字的機率值,進而得到機率最高的字。而在t=2時,f’(h1-hat, ŷ1)產出h2-hat,一樣經過全連接層與Softmax,得到ŷ2。一直持續下去直到模型的輸出是<EOS>這個Token機率值最高為止,代表完成了句子的輸出。

while output != 'EOS':
output = decoder(output)
outputs.append(output)
Seq2Seq Model 詳細筆記版

理解了Seq2Seq的模型架構後,可以進一步來看論文中的數學式。

上面的ht部分就是Encoder每個時間點的hidden state輸出,而yt就是將ht輸入全連接層後的產物。

對於輸入與輸出序列,透過 Encoder 我們將 [x1, x2, …, xn] 轉換成 Context Vector (v),我們希望能在 Decoder 階段最大化條件機率 p如下:

在Decoder的部分,我們在做的事情就是給定你一個輸入的句子S,預測出輸出T的條件機率為何。原先應是連乘,但為了避免floating point underflow的狀況出現,我們將之取log,使用連加計算。那在每次的預測當中,我們都希望找出讓這個機率值最大的T,我們稱之為T-hat。

RNN缺點:

  1. Gradient Vanishing 梯度消失(LSTM可以解決)
  2. Lower performance on longer sentences 序列越長,效果越差

Seq2Seq缺點:

  1. Decoder只使用到Encoder最後一個時間點的hidden state
    (Attention機制可以解決,使用所有hidden states)

RNN-based Seq2Seq缺點:

  1. Decoder只使用到Encoder最後一個時間點的hidden state
  2. 無法進行平行計算,因為Auto Regressive
  3. Gradient Vanishing 梯度消失
  4. Lower performance on longer sentences 序列越長,效果越差

此部分的第二到第四點,在2017年Google提出Attention Is All You Need的Transformer可以解決。

參考資料 Reference

  1. 從零開始學Sequence To Sequence
  2. 科普學AI論文介紹

程式碼 Code

  1. Seq2Seq Keras Sample Code
  2. A ten-minute introduction to sequence-to-sequence learning in Keras
  3. Seq2Seq PyTorch Sample Code
  4. Import Seq2Seq

This article will be updated at any time! Thanks for your reading. If you like the content, please click the “clap” button. You can also press the follow button to track new articles. Feel free to connect with me via LinkedIn or email.

--

--

Haren Lin
Haren Lin

Written by Haren Lin

MSWE @ UC Irvine | MSCS @ NTU GINM | B.S. @ NCCU CS x B.A. @ NCCU ECON | ex-SWE intern @ TrendMicro

No responses yet