具備註意力機制的seq2seq模型

做者|Renu Khandelwal
編譯|VK
來源|Towards Data Science算法

在本文中,你將瞭解:網絡

  • 爲何咱們須要seq2seq模型的注意力機制?
  • Bahdanua的注意力機制是如何運做的?
  • Luong的注意力機制是如何運做的?
  • 什麼是局部和全局注意力?
  • Bahdanua和Luong注意力機制的關鍵區別

什麼是注意力,爲何咱們須要seq2seq模型的注意力機制

讓咱們考慮兩個場景,場景一,你正在閱讀與當前新聞相關的文章。第二個場景是你正在閱讀準備考試。兩種狀況下的注意力水平是相同仍是不一樣?架構

與新聞文章相比,你在準備考試時會至關注意閱讀。在準備測試的時候,你會更加關注關鍵詞來幫助你記住一個簡單或複雜的概念。這也意味着咱們要專一於某一特定領域的任何深度學習任務。機器學習

序列到序列(Seq2Seq)模型使用編碼器-解碼器架構函數

seq2seq的幾個場景學習

  • 神經機器翻譯(NMT)
  • 圖像字幕
  • 聊天機器人
  • 文本摘要等

Seq2Seq模型將源序列映射到目標序列。在神經機器翻譯的狀況下,源序列能夠是英語,目標序列能夠是印地語。測試

咱們將英語源語句傳遞給編碼器;編碼器將源序列的完整信息編碼爲單個實值向量,也稱爲上下文向量。而後,這個上下文向量被傳遞到解碼器上,以生成目標語言(如印地語)中的輸出序列。上下文向量負責將整個輸入序列彙總爲單個向量。編碼

若是輸入的句子很長,那麼編碼器中的一個向量能夠保存全部要提供給解碼器的相關信息嗎spa

在預測目標詞時,是否能夠將注意力集中在句子中的幾個相關詞上,而不是集中在包含整個句子信息的單個向量上.net

注意力機制有助於解決問題。

注意力機制的基本思想是避免試圖爲每一個句子學習單一的向量表示,而是根據注意力權值來關注輸入序列的特定輸入向量。

在每一解碼步驟中,解碼器將被告知須要使用一組注意力權重對每一個輸入單詞給予多少「注意」。這些注意力權重爲解碼器翻譯提供上下文信息

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提出了兩種類型的注意力機制

  1. 全局注意力,關注全部來源位置
  2. 局部注意力,注意力只放在每一個目標詞的源位置的一小部分上

全局注意力與地方關注的共性

  • 在每一個時間步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/

相關文章
相關標籤/搜索