(轉(zhuǎn))注意力機(jī)制(Attention Mechanism)在自然語言處理中的應(yīng)用

關(guān)鍵詞:注意力機(jī)制;Attention機(jī)制;自然語言處理;NLP;
原文鏈接地址
近年來,深度學(xué)習(xí)的研究越來越深入,在各個領(lǐng)域也都獲得了不少突破性的進(jìn)展?;谧⒁饬Γ╝ttention)機(jī)制的神經(jīng)網(wǎng)絡(luò)成為了最近神經(jīng)網(wǎng)絡(luò)研究的一個熱點(diǎn),本人最近也學(xué)習(xí)了一些基于attention機(jī)制的神經(jīng)網(wǎng)絡(luò)在自然語言處理(NLP)領(lǐng)域的論文,現(xiàn)在來對attention在NLP中的應(yīng)用進(jìn)行一個總結(jié),和大家一起分享。

Attention研究進(jìn)展

Attention機(jī)制最早是在視覺圖像領(lǐng)域提出來的,應(yīng)該是在九幾年思想就提出來了,但是真正火起來應(yīng)該算是google mind團(tuán)隊的這篇論文《Recurrent Models of Visual Attention》[14],他們在RNN模型上使用了attention機(jī)制來進(jìn)行圖像分類。隨后,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用類似attention的機(jī)制在機(jī)器翻譯任務(wù)上將翻譯和對齊同時進(jìn)行,他們的工作算是是第一個提出attention機(jī)制應(yīng)用到NLP領(lǐng)域中。接著類似的基于attention機(jī)制的RNN模型擴(kuò)展開始應(yīng)用到各種NLP任務(wù)中。最近,如何在CNN中使用attention機(jī)制也成為了大家的研究熱點(diǎn)。下圖表示了attention研究進(jìn)展的大概趨勢。


  • Recurrent Models of Visual Attention

    在介紹NLP中的Attention之前,我想大致說一下圖像中使用attention的思想。就具代表性的這篇論文《Recurrent Models of Visual Attention》 [14],他們研究的動機(jī)其實(shí)也是受到人類注意力機(jī)制的啟發(fā)。人們在進(jìn)行觀察圖像的時候,其實(shí)并不是一次就把整幅圖像的每個位置像素都看過,大多是根據(jù)需求將注意力集中到圖像的特定部分。而且人類會根據(jù)之前觀察的圖像學(xué)習(xí)到未來要觀察圖像注意力應(yīng)該集中的位置。下圖是這篇論文的核心模型示意圖。

    該模型是在傳統(tǒng)的RNN上加入了attention機(jī)制(即紅圈圈出來的部分),通過attention去學(xué)習(xí)一幅圖像要處理的部分,每次當(dāng)前狀態(tài),都會根據(jù)前一個狀態(tài)學(xué)習(xí)得到的要關(guān)注的位置l和當(dāng)前輸入的圖像,去處理注意力部分像素,而不是圖像的全部像素。這樣的好處就是更少的像素需要處理,減少了任務(wù)的復(fù)雜度??梢钥吹綀D像中應(yīng)用attention和人類的注意力機(jī)制是很類似的,接下來我們看看在NLP中使用的attention。

Attention-based RNN in NLP

  • Neural Machine Translation by Jointly Learning to Align and Translate
    這篇論文算是在NLP中第一個使用attention機(jī)制的工作。他們把a(bǔ)ttention機(jī)制用到了神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯(NMT)上,NMT其實(shí)就是一個典型的sequence to sequence模型,也就是一個encoder to decoder模型,傳統(tǒng)的NMT使用兩個RNN,一個RNN對源語言進(jìn)行編碼,將源語言編碼到一個固定維度的中間向量,然后在使用一個RNN進(jìn)行解碼翻譯到目標(biāo)語言,傳統(tǒng)的模型如下圖:



    這篇論文提出了基于attention機(jī)制的NMT,模型大致如下圖:



    圖中我并沒有把解碼器中的所有連線畫玩,只畫了前兩個詞,后面的詞其實(shí)都一樣??梢钥吹交赼ttention的NMT在傳統(tǒng)的基礎(chǔ)上,它把源語言端的每個詞學(xué)到的表達(dá)(傳統(tǒng)的只有最后一個詞后學(xué)到的表達(dá))和當(dāng)前要預(yù)測翻譯的詞聯(lián)系了起來,這樣的聯(lián)系就是通過他們設(shè)計的attention進(jìn)行的,在模型訓(xùn)練好后,根據(jù)attention矩陣,我們就可以得到源語言和目標(biāo)語言的對齊矩陣了。具體論文的attention設(shè)計部分如下:

    可以看到他們是使用一個感知機(jī)公式來將目標(biāo)語言和源語言的每個詞聯(lián)系了起來,然后通過soft函數(shù)將其歸一化得到一個概率分布,就是attention矩陣。

    從結(jié)果來看相比傳統(tǒng)的NMT(RNNsearch是attention NMT,RNNenc是傳統(tǒng)NMT)效果提升了不少,最大的特點(diǎn)還在于它可以可視化對齊,并且在長句的處理上更有優(yōu)勢。

  • Effective Approaches to Attention-based Neural Machine Translation [2]
    這篇論文是繼上一篇論文后,一篇很具代表性的論文,他們的工作告訴了大家attention在RNN中可以如何進(jìn)行擴(kuò)展,這篇論文對后續(xù)各種基于attention的模型在NLP應(yīng)用起到了很大的促進(jìn)作用。在論文中他們提出了兩種attention機(jī)制,一種是全局(global)機(jī)制,一種是局部(local)機(jī)制。
    首先我們來看看global機(jī)制的attention,其實(shí)這和上一篇論文提出的attention的思路是一樣的,它都是對源語言對所有詞進(jìn)行處理,不同的是在計算attention矩陣值的時候,他提出了幾種簡單的擴(kuò)展版本。



    在他們最后的實(shí)驗(yàn)中g(shù)eneral的計算方法效果是最好的。
    我們再來看一下他們提出的local版本。主要思路是為了減少attention計算時的耗費(fèi),作者在計算attention時并不是去考慮源語言端的所有詞,而是根據(jù)一個預(yù)測函數(shù),先預(yù)測當(dāng)前解碼時要對齊的源語言端的位置Pt,然后通過上下文窗口,僅考慮窗口內(nèi)的詞。

    里面給出了兩種預(yù)測方法,local-m和local-p,再計算最后的attention矩陣時,在原來的基礎(chǔ)上去乘了一個pt位置相關(guān)的高斯分布。作者的實(shí)驗(yàn)結(jié)果是局部的比全局的attention效果好。
    這篇論文最大的貢獻(xiàn)我覺得是首先告訴了我們可以如何擴(kuò)展attention的計算方式,還有就是局部的attention方法。

  • Attention-based CNN in NLP

    隨后基于Attention的RNN模型開始在NLP中廣泛應(yīng)用,不僅僅是序列到序列模型,各種分類問題都可以使用這樣的模型。那么在深度學(xué)習(xí)中與RNN同樣流行的卷積神經(jīng)網(wǎng)絡(luò)CNN是否也可以使用attention機(jī)制呢?《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》 [13]這篇論文就提出了3中在CNN中使用attention的方法,是attention在CNN中較早的探索性工作。



    傳統(tǒng)的CNN在構(gòu)建句對模型時如上圖,通過每個單通道處理一個句子,然后學(xué)習(xí)句子表達(dá),最后一起輸入到分類器中。這樣的模型在輸入分類器前句對間是沒有相互聯(lián)系的,作者們就想通過設(shè)計attention機(jī)制將不同cnn通道的句對聯(lián)系起來。
    第一種方法ABCNN0-1是在卷積前進(jìn)行attention,通過attention矩陣計算出相應(yīng)句對的attention feature map,然后連同原來的feature map一起輸入到卷積層。具體的計算方法如下。

image.png

第二種方法ABCNN-2是在池化時進(jìn)行attention,通過attention對卷積后的表達(dá)重新加權(quán),然后再進(jìn)行池化,原理如下圖。



第三種就是把前兩種方法一起用到CNN中,如下圖



這篇論文提供了我們在CNN中使用attention的思路。現(xiàn)在也有不少使用基于attention的CNN工作,并取得了不錯的效果。

總結(jié)

最后進(jìn)行一下總結(jié)。Attention在NLP中其實(shí)我覺得可以看成是一種自動加權(quán),它可以把兩個你想要聯(lián)系起來的不同模塊,通過加權(quán)的形式進(jìn)行聯(lián)系。目前主流的計算公式有以下幾種:

通過設(shè)計一個函數(shù)將目標(biāo)模塊mt和源模塊ms聯(lián)系起來,然后通過一個soft函數(shù)將其歸一化得到概率分布。
目前Attention在NLP中已經(jīng)有廣泛的應(yīng)用。它有一個很大的優(yōu)點(diǎn)就是可以可視化attention矩陣來告訴大家神經(jīng)網(wǎng)絡(luò)在進(jìn)行任務(wù)時關(guān)注了哪些部分。



不過在NLP中的attention機(jī)制和人類的attention機(jī)制還是有所區(qū)別,它基本還是需要計算所有要處理的對象,并額外用一個矩陣去存儲其權(quán)重,其實(shí)增加了開銷。而不是像人類一樣可以忽略不想關(guān)注的部分,只去處理關(guān)注的部分。

參考文獻(xiàn)
[1] Bahdanau, D., Cho, K. & Bengio, Y. Neural Machine Translation by Jointly Learning to Align and Translate. Iclr 2015 1–15 (2014).
[2] Luong, M. & Manning, C. D. Effective Approaches to Attention-based Neural Machine Translation. 1412–1421 (2015).
[3] Rush, A. M. & Weston, J. A Neural Attention Model for Abstractive Sentence Summarization. EMNLP (2015).
[4] Allamanis, M., Peng, H. & Sutton, C. A Convolutional Attention Network for Extreme Summarization of Source Code. Arxiv (2016).
[5] Hermann, K. M. et al. Teaching Machines to Read and Comprehend. arXiv 1–13 (2015).
[6] Yin, W., Ebert, S. & Schütze, H. Attention-Based Convolutional Neural Network for Machine Comprehension. 7 (2016).
[7] Kadlec, R., Schmid, M., Bajgar, O. & Kleindienst, J. Text Understanding with the Attention Sum Reader Network. arXiv:1603.01547v1 [cs.CL] (2016).
[8] Dhingra, B., Liu, H., Cohen, W. W. & Salakhutdinov, R. Gated-Attention Readers for Text Comprehension. (2016).
[9] Vinyals, O. et al. Grammar as a Foreign Language. arXiv 1–10 (2015).
[10] Wang, L., Cao, Z., De Melo, G. & Liu, Z. Relation Classification via Multi-Level Attention CNNs. Acl 1298–1307 (2016).
[11] Zhou, P. et al. Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification. Proc. 54th Annu. Meet. Assoc. Comput. Linguist. (Volume 2 Short Pap. 207–212 (2016).
[12] Yang, Z. et al. Hierarchical Attention Networks for Document Classification. Naacl (2016).
[13] Yin W, Schütze H, Xiang B, et al. Abcnn: Attention-based convolutional neural network for modeling sentence pairs. arXiv preprint arXiv:1512.05193, 2015.
[14] Mnih V, Heess N, Graves A. Recurrent models of visual attention[C]//Advances in Neural Information Processing Systems. 2014: 2204-2212.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容