1. 程式人生 > 其它 >理解Encoder-Decoder 和 Seq2Seq的關係

理解Encoder-Decoder 和 Seq2Seq的關係

本問參考自原文連線

1 什麼是 Encoder-Decoder ?

Encoder-Decoder 模型主要是 NLP 領域裡的概念。它並不特值某種具體的演算法,而是一類演算法的統稱。Encoder-Decoder 算是一個通用的框架,在這個框架下可以使用不同的演算法來解決不同的任務。

Encoder-Decoder 這個框架很好的詮釋了機器學習的核心思路:將現實問題轉化為數學問題,通過求解數學問題,從而解決現實問題。

  • Encoder 又稱作編碼器。它的作用就是「將現實問題轉化為數學問題」
  • Decoder 又稱作解碼器,他的作用是「求解數學問題,並轉化為現實世界的解決方案」
  • 把 2 個環節連線起來,用通用的圖來表達則是下面的樣子:

關於 Encoder-Decoder,有2 點需要說明:

  1. 不論輸入和輸出的長度是什麼,中間的「向量 c」 長度都是固定的(這也是它的缺陷)

  2. 根據不同的任務可以選擇不同的編碼器和解碼器(可以是一個 RNN ,但通常是其變種 LSTM 或者 GRU )

  3. 只要是符合上面的框架,都可以統稱為 Encoder-Decoder 模型。說到 Encoder-Decoder 模型就經常提到一個名詞—— Seq2Seq。

2 什麼是 Seq2Seq?

Seq2Seq(是 Sequence-to-sequence 的縮寫),就如字面意思,輸入一個序列,輸出另一個序列。這種結構最重要的地方在於輸入序列和輸出序列的長度是可變的。例如下圖:

如上圖:輸入了 6 個漢字,輸出了 3 個英文單詞。輸入和輸出的長度不同。

Seq2Seq 的由來

在 Seq2Seq 框架提出之前,深度神經網路在影象分類等問題上取得了非常好的效果。在其擅長解決的問題中,輸入和輸出通常都可以表示為固定長度的向量,如果長度稍有變化,會使用補零等操作。

然而許多重要的問題,例如機器翻譯、語音識別、自動對話等,表示成序列後,其長度事先並不知道。因此如何突破先前深度神經網路的侷限,使其可以適應這些場景,成為了13年以來的研究熱點,Seq2Seq框架應運而生。

3「Seq2Seq」和「Encoder-Decoder」的關係

Seq2Seq(強調目的)不特指具體方法,滿足「輸入序列、輸出序列」的目的,都可以統稱為 Seq2Seq 模型。而Seq2Seq 使用的具體方法基本都屬於Encoder-Decoder 模型(強調方法)的範疇。

總結一下的話:

  • Seq2Seq 屬於 Encoder-Decoder 的大範疇

  • Seq2Seq 更強調目的,Encoder-Decoder 更強調方法

本文來自部落格園,作者:xingye_z,轉載請註明原文連結:https://www.cnblogs.com/xyzhrrr/p/15539289.html