做者|Renu Khandelwal
編譯|VK
來源|Towards Data Science算法
在本文中,你將瞭解:網絡
讓咱們考慮兩個場景,場景一,你正在閱讀與當前新聞相關的文章。第二個場景是你正在閱讀準備考試。兩種狀況下的注意力水平是相同仍是不一樣?架構
與新聞文章相比,你在準備考試時會至關注意閱讀。在準備測試的時候,你會更加關注關鍵詞來幫助你記住一個簡單或複雜的概念。這也意味着咱們要專一於某一特定領域的任何深度學習任務。機器學習
序列到序列(Seq2Seq)模型使用編碼器-解碼器架構。函數
seq2seq的幾個場景學習
Seq2Seq模型將源序列映射到目標序列。在神經機器翻譯的狀況下,源序列能夠是英語,目標序列能夠是印地語。測試
咱們將英語源語句傳遞給編碼器;編碼器將源序列的完整信息編碼爲單個實值向量,也稱爲上下文向量。而後,這個上下文向量被傳遞到解碼器上,以生成目標語言(如印地語)中的輸出序列。上下文向量負責將整個輸入序列彙總爲單個向量。編碼
若是輸入的句子很長,那麼編碼器中的一個向量能夠保存全部要提供給解碼器的相關信息嗎?spa
在預測目標詞時,是否能夠將注意力集中在句子中的幾個相關詞上,而不是集中在包含整個句子信息的單個向量上?.net
注意力機制有助於解決問題。
注意力機制的基本思想是避免試圖爲每一個句子學習單一的向量表示,而是根據注意力權值來關注輸入序列的特定輸入向量。
在每一解碼步驟中,解碼器將被告知須要使用一組注意力權重對每一個輸入單詞給予多少「注意」。這些注意力權重爲解碼器翻譯提供上下文信息
Bahdanau等人。提出了一種學習結合對齊和翻譯的注意力機制,它會執行編碼器狀態和解碼器狀態的線性組合。
讓咱們學習Bahdanau提出的注意力機制
帶有注意力機制的Seq2Seq模型由編碼器、解碼器和注意力層組成。
注意力層包括
對齊分數映射位置「j」周圍的輸入與位置「i」處的輸出匹配的程度。分數是基於前一個解碼器的隱狀態\(s_{(i-1)}\),就在預測目標單詞和輸入句子的隱狀態hⱼ以前
解碼器決定它須要關注源語句的哪一個部分,而不是讓編碼器將源語句的全部信息編碼成一個固定長度的向量。
對齊向量與源序列具備相同長度並在解碼器的每一個時間步被計算
咱們將softmax激活函數應用於對齊分數,以得到注意力權重。
Softmax激活函數將獲得和等於1的機率,這將有助於表示每一個輸入序列的影響權重。輸入序列的注意力權重越高,對目標詞預測的影響越大。
在咱們的例子中,咱們看到一個更高的輸入詞的注意力權重值能夠快速地預測目標詞,तेज़ी
上下文向量用於計算解碼器的最終輸出。上下文向量\(c_i\)是注意力權重和編碼器隱狀態(\(h_1\),\(h_2\),…,\(h_{tx}\))的加權和,它映射到輸入語句。
爲了預測目標詞,解碼器使用
Luong的注意力模型也被稱爲乘法注意力。它經過簡單的矩陣乘法將編碼狀態和解碼狀態降爲注意力得分。簡單的矩陣乘法使它更快,更節省空間。
根據注意力在源序列中的位置,Luong提出了兩種類型的注意力機制
全局和局部注意模型的不一樣之處在於上下文向量是如何導出的
在討論全局和局部注意以前,讓咱們先了解一下在給定的時間t內,Luong的注意力機制所使用的約定
當源序列是一個大段落或一個大文檔時會發生什麼?
因爲全局注意模型考慮了源序列中的全部單詞來預測目標單詞,所以在計算上變得很是昂貴,而且很難翻譯出較長的句子
利用局部注意力能夠解決全局注意模型的缺點
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/