機器學習(ML)編碼解碼器、束搜索與注意力機制

編碼器—解碼器(seq2seq)

在自然語言處理的很多應用中,輸入和輸出都可以是不定長序列。以機器翻譯為例,輸入可以是一段不定長的英語文本序列,輸出可以是一段不定長的法語文本序列,例如

<code>英語輸入:“They”、“are”、“watching”、“.”法語輸出:“Ils”、“regardent”、“.”/<code>

當輸入和輸出都是不定長序列時,我們可以使用編碼器—解碼器(encoder-decoder)或者seq2seq模型。這兩個模型本質上都用到了兩個循環神經網絡,分別叫做編碼器和解碼器。編碼器用來分析輸入序列,解碼器用來生成輸出序列。用編碼器—解碼器將上述英語句子翻譯成法語句子的一種方法。在訓練數據集中,我們可以在每個句子後附上特殊符號“”(end of sequence)以表示序列的終止。編碼器每個時間步的輸入依次為英語句子中的單詞、標點和特殊符號“”。下圖中使用了編碼器在最終時間步的隱藏狀態作為輸入句子的表徵或編碼信息。解碼器在各個時間步中使用輸入句子的編碼信息和上個時間步的輸出以及隱藏狀態作為輸入。 我們希望解碼器在各個時間步能正確依次輸出翻譯後的法語單詞、標點和特殊符號“”。 需要注意的是,解碼器在最初時間步的輸入用到了一個表示序列開始的特殊符號“”(beginning of sequence)。

機器學習(ML)編碼解碼器、束搜索與注意力機制

編碼器

機器學習(ML)編碼解碼器、束搜索與注意力機制

解碼器

機器學習(ML)編碼解碼器、束搜索與注意力機制

訓練模型

機器學習(ML)編碼解碼器、束搜索與注意力機制

在模型訓練中,所有輸出序列損失的均值通常作為需要最小化的損失函數。在上圖所描述的模型預測中,我們需要將解碼器在上一個時間步的輸出作為當前時間步的輸入。與此不同,在訓練中我們也可以將標籤序列(訓練集的真實輸出序列)在上一個時間步的標籤作為解碼器在當前時間步的輸入。這叫作強制教學(teacher forcing)。

  • 編碼器-解碼器(seq2seq)可以輸入並輸出不定長的序列。
  • 編碼器—解碼器使用了兩個循環神經網絡。
  • 在編碼器—解碼器的訓練中,可以採用強制教學。

束搜索

在準備訓練數據集時,我們通常會在樣本的輸入序列和輸出序列後面分別附上一個特殊符號“”表示序列的終止。我們在接下來的討論中也將沿用上一節的全部數學符號。為了便於討論,假設解碼器的輸出是一段文本序列。設輸出文本詞典y包含特殊符號“”)的大小為|y|,輸出序列的最大長度為T',所有可能的輸出序列一共有 O(|Y| T′ )種。這些輸出序列中所有特殊符號“

”後面的子序列將被捨棄。

貪婪搜索

機器學習(ML)編碼解碼器、束搜索與注意力機制

窮舉搜索

機器學習(ML)編碼解碼器、束搜索與注意力機制

束搜索

機器學習(ML)編碼解碼器、束搜索與注意力機制

  • 預測不定長序列的方法包括貪婪搜索、窮舉搜索和束搜索。
  • 束搜索通過靈活的束寬來權衡計算開銷和搜索質量。

注意力機制

在 “編碼器—解碼器 ( seq2seq)” 裡,解碼器在各個時間步依賴相同的背景變量來獲取輸入序列信息。當編碼器為循環神經網絡時,背景變量來自它最終時間步的隱藏狀態。

讓我們再次思考那一節提到的翻譯例子:輸入為英語序列“They”“are”“watching”“.”,輸出為法語序列“Ils”“regardent”“.”。不難想到,解碼器在生成輸出序列中的每一個詞時可能只需利用輸入序列某一部分的信息。例如,在輸出序列的時間步1,解碼器可以主要依賴“They”“are”的信息來生成“Ils”,在時間步2則主要使用來自“watching”的編碼信息生成“regardent”,最後在時間步3則直接映射句號“.”。這看上去就像是在解碼器的每一時間步對輸入序列中不同時間步的表徵或編碼信息分配不同的注意力一樣。這也是注意力機制的由來。

仍然以循環神經網絡為例,注意力機制通過對編碼器所有時間步的隱藏狀態做加權平均來得到背景變量。解碼器在每一時間步調整這些權重,即注意力權重,從而能夠在不同時間步分別關注輸入序列中的不同部分並編碼進相應時間步的背景變量。

計算背景變量

機器學習(ML)編碼解碼器、束搜索與注意力機制

矢量化計算

機器學習(ML)編碼解碼器、束搜索與注意力機制

更新隱藏狀態

現在我們描述第二個關鍵點,即更新隱藏狀態。以門控循環單元為例,在解碼器中我們可以對 “門控循環單元(GRU)” 一節中門控循環單元的設計稍作修改,從而變換上一時間步 t ′ − 1 的輸出 y t ′ − 1 、隱藏狀態 s t ′ − 1 和當前時間步 t ′ 的含注意力機制的背景變量 c t ′ 。 解碼器在時間步:math: t’ 的隱藏狀態為

機器學習(ML)編碼解碼器、束搜索與注意力機制

發展

本質上,注意力機制能夠為表徵中較有價值的部分分配較多的計算資源。這個有趣的想法自提出後得到了快速發展,特別是啟發了依靠注意力機制來編碼輸入序列並解碼出輸出序列的變換器(Transformer)模型的設計。變換器拋棄了卷積神經網絡和循環神經網絡的架構。它在計算效率上比基於循環神經網絡的編碼器—解碼器模型通常更具明顯優勢。含注意力機制的變換器的編碼結構在後來的BERT預訓練模型中得以應用並令後者大放異彩:微調後的模型在多達11項自然語言處理任務中取得了當時最先進的結果。不久後,同樣是基於變換器設計的GPT-2模型於新收集的語料數據集預訓練後,在7個未參與訓練的語言模型數據集上均取得了當時最先進的結果 [4]。除了自然語言處理領域,注意力機制還被廣泛用於圖像分類、自動圖像描述、唇語解讀以及語音識別。

  • 可以在解碼器的每個時間步使用不同的背景變量,並對輸入序列中不同時間步編碼的信息分配不同的注意力。
  • 廣義上,注意力機制的輸入包括查詢項以及一一對應的鍵項和值項。
  • 注意力機制可以採用更為高效的矢量化計算。


分享到:


相關文章: