機器學習 Attention

2021-09-23 20:39:45 字數 2788 閱讀 8613

rnn做機器翻譯有它自身的弱點,attention正是為了克服這個弱點而出現的。所以,要理解attention,就要搞明白兩件事:

- rnn在做機器翻譯時有什麼弱點

- attention是如何克服這個弱點的

本文試圖從解答這兩個問題的角度來理解attention機制。如果你對rnn還不是很熟悉,建議看看這篇關於lstm的文章

用rnn做機器翻譯時,通常需要兩個rnn網路,乙個用來將接收待翻譯語句,對其進行編碼,最後輸出乙個vector,這個網路叫encoder。然後,該vector會作為輸入,傳給另乙個rnn網路,該網路用來根據vector產生目標語言的翻譯語句,這個網路叫做decoder。如下圖所示:

上圖中間的context就是我們這裡說的第乙個rnn產生的vector。

encoder-decoder最大的缺點是,encoder接收了不管多長的語句,最後輸出的只是最後乙個vector,當語句很長時,這個vector能否有效地表示該語句是很值得懷疑的。

如何解決這個問題呢?我們很自然會想到,第乙個rnn其實在中間會產生很多輸出,這些輸出都被我們拋棄了,我們只用了最後的乙個。如果能利用上中間的輸出,興許可以解決問題。attention正是利用上了這些中間的輸出。

先上圖,再來解釋:

螢幕快照 2018-09-01 下午7.20.56.png

上圖中的a是我們的encoder, b是我們的decoder。

可以想象,a網路接收了乙個四個字的句子,對每個字都產生了乙個輸出(這些輸出都是乙個vector),我們稱其為s1,s2,s3,s4。

我們看上圖的b網路,在第乙個b產生的hidden state(稱其為h1)除了傳給下乙個cell外,還傳到了a網路,這裡就是attention發揮作用的地方,我們來看看發生了什麼。

第一步

h1 分別與s1,s2,s3,s4做點積,產生了四個數,稱其為m1,m2,m3,m4(這些都是標量,不是向量了!)

第二步

m1,m2,m3,m4 傳到乙個softmax層,產生乙個概率分布a1,a2,a3, a4。

第三步

將a1,a2,a3, a4 與s1,s2,s3,s4分別相乘,再相加,得到得到乙個vector,稱其為attention vector。

第四步

attention vector 將作為輸入傳到b網路的第二個cell中,參與**。

以上就是attention機制的基本思想了。我們看到,attention vector 實際上融合了s1,s2,s3,s4的資訊,具體的融合是用乙個概率分布來達到的,而這個概率分布又是通過b網路上乙個cell的hidden state與s1,s2,s3,s4進行點乘得到的。

attention vector實際上達到了讓b網路聚焦於a網路輸出的某一部分的作用。

在第3部分中,我們的概率分布來自於h與s的點積再做softmax,這只是最基本的方式。在實際中,我們可以有不同的方法來產生這個概率分布,每一種方法都代表了一種具體的attention機制。

當然,我們還可以這麼做:

這裡只是不再把h與s接到一起而已,本質上沒有什麼區別的。

attention機制的核心在於對乙個序列資料進行聚焦,這個聚焦是通過乙個概率分布來實現的。這種機制其實有很強的普適性,可以用在各個方面。

比如,根據產生描述該的文字, 首先,會經過cnn進行特徵的提取,提取的資料會輸入到產生描述文字的rnn中,這裡,我們可以引入attention機制,讓我們在產生下乙個文字時,聚焦於我們正在描述的部位。

其次,在句子表示中,self attention機制是成功擴充套件的attention的範例。其基本原理如下:

假如我們用乙個rnn讀入了乙個句子,產生了h1, h2,h3,h4四個hidden state。

為了得到該句子的摘要,我們可以這樣做:

對每乙個h計算乙個分數:

四個h共產生了4個分數,將這四個分數送入乙個softmax層,產生乙個概率分布,根據這個概率分布對四個h進行加和,得到句子摘要的第乙個vector。如下圖所示:

為了得到更多的vector,我們可以把上面圖中的小寫va換成乙個矩陣,然後,我們的a也就變成了多個概率分布組成的矩陣,每個概率分布都可以用來與h進行加和產生乙個vector,這樣我們就產生了摘要的多個vector,如下圖所示:

6 無總結不進步

通過以上的內容,我們了解到,attention機制最初用來克服rnn做機器翻譯時的缺點,然後,人們發現,attention機制具有廣泛的適用性,於是它又被擴充套件到了產生描述,做句子摘要等任務上。

我們也清楚了,不同的attention機制的核心區別在於產生概率分布的方法不同。

NLP 機器翻譯中的Attention

encoder decoder模型雖然非常經典,但是侷限性也非常大。最大的侷限性就在於編碼和解碼之間的唯一聯 系就是乙個固定長度的語義向量c。也就是說,編碼器要將整個序列的資訊壓縮進乙個固定長度的向量中。但是這樣做有兩個弊端,一是語義向量無法完全表示整個序列的資訊,二是先輸入的內容攜帶的資訊會被後輸...

attention注意力機制學習

目前主流的attention方法都有哪些?jaylou婁傑的回答 知乎 目前主流的attention方法都有哪些?張戎的回答 知乎 attention機制解讀 高峰ouc的文章 知乎 transformer詳解 一 attention機制詳解 被包養的程式猿丶的文章 知乎 簡說seq2seq原理及實...

Attention歷史梳理

這篇寫的簡直太好了,不愧是阿里啊!又根據key value這樣,分為普通模式和鍵值對模式 也就是計算相似度的方式不同,可以通過點乘 cos相似度 mlp實現 也就是求權重的方式不同,分為global local attention local 是部分輸入向量才能進入這個池子。有local m 和 l...