一文看懂 NLP 裏的模型框架 Encoder-Decoder 和 Seq2Seq

Encoder-Decoder 和 Seq2Seq

一文看懂Encoder-Decoder和Seq2Seq

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

本文將詳細介紹 Encoder-Decoder、Seq2Seq 以及他們的升級方案Attention。網絡

什麼是 Encoder-Decoder ?

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

Encoder-Decoder 這個框架很好的詮釋了機器學習的核心思路:機器學習

將現實問題轉化爲數學問題,經過求解數學問題,從而解決現實問題。ide

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

Encoder將現實問題轉化爲數學問題

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

Decoder求解數學問題,並轉化爲現實世界的解決方案

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

圖解Encoder-Decoder

關於 Encoder-Decoder,有2 點須要說明:3d

  1. 不論輸入和輸出的長度是什麼,中間的「向量 c」 長度都是固定的(這也是它的缺陷,下文會詳細說明)
  2. 根據不一樣的任務能夠選擇不一樣的編碼器和解碼器(能夠是一個 RNN ,但一般是其變種 LSTM 或者 GRU

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

什麼是 Seq2Seq?

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

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

Seq2Seq 的由來

在 Seq2Seq 框架提出以前,深度神經網絡在圖像分類等問題上取得了很是好的效果。在其擅長解決的問題中,輸入和輸出一般均可以表示爲固定長度的向量,若是長度稍有變化,會使用補零等操做。

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

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

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

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

總結一下的話:

  • Seq2Seq 屬於 Encoder-Decoder 的大範疇
  • Seq2Seq 更強調目的,Encoder-Decoder 更強調方法

Encoder-Decoder 有哪些應用?

Encoder-Decoder的一些應用

機器翻譯、對話機器人、詩詞生成、代碼補全、文章摘要(文本 - 文本)

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

Google 發表的用Seq2Seq作機器翻譯的論文《Sequence to Sequence Learning with Neural Networks

Seq2Seq應用:機器翻譯

語音識別(音頻 - 文本)

語音識別也有很強的序列特徵,比較適合 Encoder-Decoder 模型。

Google 發表的使用Seq2Seq作語音識別的論文《A Comparison of Sequence-to-Sequence Models for Speech Recognition

Seq2Seq應用:語音識別

圖像描述生成(圖片 - 文本)

通俗的講就是「看圖說話」,機器提取圖片特徵,而後用文字表達出來。這個應用是計算機視覺和 NLP 的結合。

圖像描述生成的論文《Sequence to Sequence – Video to Text

Seq2Seq應用:圖像描述生成

Encoder-Decoder 的缺陷

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

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

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

Encoder-Decoder的缺點:輸入過長會損失信息

Encoder-Decoder 就是相似的問題:當輸入信息太長時,會丟失掉一些信息。

Attention 解決信息丟失問題

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

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

圖解attention

這樣,在產生每個輸出的時候,都可以作到充分利用輸入序列攜帶的信息。並且這種方法在翻譯任務中取得了很是不錯的成果。

本文首發自 產品經理的 AI 學習庫 easyai.tech

相關文章
相關標籤/搜索