AI算法之Encoder-Decoder 和 Seq2Seq

Encoder-Decoder 是 NLP 領域裏的一種模型框架。它被廣泛用於機器翻譯、語音識別等任務。

1 什麼是 Encoder-Decoder ?

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

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

Encoder 又稱作編碼器。它的作用就是「將現實問題轉化爲數學問題」

Decoder 又稱作解碼器,他的作用是「求解數學問題,並轉化爲現實世界的解決方案」

把 2 個環節連接起來,用通用的圖來表達則是下面的樣子:

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

  • a.不論輸入和輸出的長度是什麼,中間的「向量 c」 長度都是固定的(這也是它的缺陷,下文會詳細說明)

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

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

2 什麼是 Seq2Seq?

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

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

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

Seq2Seq(強調目的)不特指具體方法,滿足「輸入序列、輸出序列」的目的,都可以統稱爲 Seq2Seq 模型。

而 Seq2Seq 使用的具體方法基本都屬於Encoder-Decoder 模型(強調方法)的範疇。

總結一下的話:

  • Seq2Seq 屬於 Encoder-Decoder 的大範疇
  • Seq2Seq 屬於 Encoder-Decoder 的大範疇

3 Encoder-Decoder 有哪些應用?

  • 「文本 – 文本」 是最典型的應用,其輸入序列和輸出序列的長度可能會有較大的差異。

  • 語音識別(音頻 – 文本)

4 Encoder-Decoder 的缺陷

上文提到:Encoder(編碼器)和 Decoder(解碼器)之間只有一個「向量 c」來傳遞信息,且 c 的長度固定。

爲了便於理解,我們類比爲「壓縮-解壓」的過程:

將一張 800X800 像素的圖片壓縮成 100KB,看上去還比較清晰。再將一張 3000X3000 像素的圖片也壓縮到 100KB,看上去就模糊了。

5 Attention 解決信息丟失問題

Attention 機制就是爲了解決「信息過長,信息丟失」的問題。

Attention 模型的特點是 Eecoder 不再將整個輸入序列編碼爲固定長度的「中間向量 C」 ,而是編碼成一個向量的序列。引入了 Attention 的 Encoder-Decoder 模型如下圖:

這樣,在產生每一個輸出的時候,都能夠做到充分利用輸入序列攜帶的信息。而且這種方法在翻譯任務中取得了非常不錯的成果。

發佈了489 篇原創文章 · 獲贊 515 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章