作者|Renu Khandelwal
編譯|VK
來源|Towards Data Science
在本文中,你將了解:
- 為什么我們需要seq2seq模型的注意力機制?
- Bahdanua的注意力機制是如何運作的?
- Luong的注意力機制是如何運作的?
- 什么是區域和全域注意力?
- Bahdanua和Luong注意力機制的關鍵區別

什么是注意力,為什么我們需要seq2seq模型的注意力機制
讓我們考慮兩個場景,場景一,你正在閱讀與當前新聞相關的文章,第二個場景是你正在閱讀準備考試,兩種情況下的注意力水平是相同還是不同?
與新聞文章相比,你在準備考試時會相當注意閱讀,在準備測驗的時候,你會更加關注關鍵詞來幫助你記住一個簡單或復雜的概念,這也意味著我們要專注于某一特定領域的任何深度學習任務,
序列到序列(Seq2Seq)模型使用編碼器-解碼器架構,
seq2seq的幾個場景
- 神經機器翻譯(NMT)
- 影像字幕
- 聊天機器人
- 文本摘要等
Seq2Seq模型將源序列映射到目標序列,在神經機器翻譯的情況下,源序列可以是英語,目標序列可以是印地語,
我們將英語源陳述句傳遞給編碼器;編碼器將源序列的完整資訊編碼為單個實值向量,也稱為背景關系向量,然后,這個背景關系向量被傳遞到解碼器上,以生成目標語言(如印地語)中的輸出序列,背景關系向量負責將整個輸入序列匯總為單個向量,
如果輸入的句子很長,那么編碼器中的一個向量可以保存所有要提供給解碼器的相關資訊嗎?
在預測目標詞時,是否可以將注意力集中在句子中的幾個相關詞上,而不是集中在包含整個句子資訊的單個向量上?
注意力機制有助于解決問題,
注意力機制的基本思想是避免試圖為每個句子學習單一的向量表示,而是根據注意力權值來關注輸入序列的特定輸入向量,
在每一解碼步驟中,解碼器將被告知需要使用一組注意力權重對每個輸入單詞給予多少“注意”,這些注意力權重為解碼器翻譯提供背景關系資訊

Bahdanau的注意力機制
Bahdanau等人,提出了一種學習結合對齊和翻譯的注意力機制,它會執行編碼器狀態和解碼器狀態的線性組合,
讓我們學習Bahdanau提出的注意力機制
- 編碼器和解碼器的所有隱狀態(向前和向后)都用于生成背景關系向量,這與seq2seq中僅使用最后一個編碼器的隱狀態不同,
- 注意力機制將輸入和輸出序列與前饋網路引數化的對齊,它有助于關注源序列中最相關的資訊,
- 該模型根據與源位置相關聯的背景關系向量和先前生成的目標詞來預測目標詞,

帶有注意力機制的Seq2Seq模型由編碼器、解碼器和注意力層組成,
注意力層包括
- 對齊層
- 注意力權重
- 背景關系向量
對齊分數(Alignment score)
對齊分數映射位置“j”周圍的輸入與位置“i”處的輸出匹配的程度,分數是基于前一個解碼器的隱狀態\(s_{(i-1)}\),就在預測目標單詞和輸入句子的隱狀態h?之前

解碼器決定它需要關注源陳述句的哪個部分,而不是讓編碼器將源陳述句的所有資訊編碼成一個固定長度的向量,
對齊向量與源序列具有相同長度并在解碼器的每個時間步被計算
注意力權重
我們將softmax激活函式應用于對齊分數,以獲得注意力權重,

Softmax激活函式將得到和等于1的概率,這將有助于表示每個輸入序列的影響權重,輸入序列的注意力權重越高,對目標詞預測的影響越大,
在我們的例子中,我們看到一個更高的輸入詞的注意力權重值可以快速地預測目標詞,?????
背景關系向量
背景關系向量用于計算解碼器的最終輸出,背景關系向量\(c_i\)是注意力權重和編碼器隱狀態(\(h_1\),\(h_2\),…,\(h_{tx}\))的加權和,它映射到輸入陳述句,

預測目標詞
為了預測目標詞,解碼器使用
- 背景關系向量(\(c_i\)),
- 上一時間步的解碼器輸出(\(y_{i-1}\))和
- 前一解碼器的隱狀態(\(s_{i-1}\))

Luong注意力機制
Luong的注意力模型也被稱為乘法注意力,它通過簡單的矩陣乘法將編碼狀態和解碼狀態降為注意力得分,簡單的矩陣乘法使它更快,更節省空間,
根據注意力在源序列中的位置,Luong提出了兩種型別的注意力機制
- 全域注意力,關注所有來源位置
- 區域注意力,注意力只放在每個目標詞的源位置的一小部分上
全域注意力與地方關注的共性
- 在每個時間步t,在解碼階段,全域和區域注意的兩種方法都首先以堆疊的LSTM頂層的隱狀態\(h_t\)作為輸入,
- 這兩種方法的目標都是匯出背景關系向量,以獲取相關的源端資訊,幫助預測當前的目標詞y
- 注意力向量被輸入到下一個時間步中,以告知模型過去的決策,
全域和區域注意模型的不同之處在于背景關系向量是如何匯出的
在討論全域和區域注意之前,讓我們先了解一下在給定的時間t內,Luong的注意力機制所使用的約定
- \(c_t\):背景關系向量
- \(a_t\):對齊向量
- \(h_t\):當前目標隱狀態
- \(h_t\):當前源隱狀態
- \(y_t\):預測當前目標字
- \(h?_t\)?:注意向量
全域注意力

- 全域注意模型在計算背景關系向量時考慮了編碼器的所有隱狀態,
- 通過比較當前目標隱狀態h與每個源隱狀態h的大小,匯出了與源序列中的時間步數大小相等的可變長度對齊向量A
- 對齊分數被稱為基于內容的函式,我們考慮三種不同的選擇

- 全域背景關系向量\(c_t\)是根據所有源隱狀態\(h_t\)上的對齊向量\(a_t\)計算的加權平均值
當源序列是一個大段落或一個大檔案時會發生什么?
由于全域注意模型考慮了源序列中的所有單詞來預測目標單詞,因此在計算上變得非常昂貴,并且很難翻譯出較長的句子
利用區域注意力可以解決全域注意模型的缺點
區域注意力

- 區域注意力只關注每個目標詞的源位置的一小部分,不像全域注意力那樣關注整個源序列
- 計算成本低于全域注意力
- 區域注意力模型首先在時間t為每個目標詞生成對齊位置\(p_t\),
- 背景關系向量\(c_t\)是在選定視窗內源隱狀態集上作為加權平均值匯出的
- 對齊的位置可以單調地或預先地選擇
Bahdanau和Luong注意力機制的關鍵區別

Bahdanau和long注意力機制中的注意力計算
Bahdanau等人,在雙向編碼器中使用前向和后向隱狀態的串聯,在其非堆疊單向解碼器中使用前一個目標的隱狀態
Loung等人,注意力使用編碼器和解碼器的頂層LSTM層的隱狀態
Luong注意力機制使用當前解碼器的隱狀態來計算對齊向量,而Bahdanau使用上一個時間步的輸出
對齊函式
Bahdanau只使用concat分數對齊模型,而Luong使用dot、general和concat對齊分數模型

有了注意力機制的知識,你現在可以構建強大的深層NLP演算法,
原文鏈接:https://towardsdatascience.com/sequence-2-sequence-model-with-attention-mechanism-9e9ca2a613a
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21535.html
標籤:其他
