近年來,深度學習的研究愈來愈深刻,在各個領域也都得到了很多突破性的進展。基於注意力(attention)機制的神經網絡成爲了最近神經網絡研究的一個熱點,下面是一些基於attention機制的神經網絡在天然語言處理(NLP)領域的論文,如今來對attention在NLP中的應用進行一個總結,和你們一塊兒分享。網絡
Attention機制最先是在視覺圖像領域提出來的,應該是在九幾年思想就提出來了,可是真正火起來應該算是google mind團隊的這篇論文《Recurrent Models of Visual Attention》[14],他們在RNN模型上使用了attention機制來進行圖像分類。隨後,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用相似attention的機制在機器翻譯任務上將翻譯和對齊同時進行,他們的工做算是是第一個提出attention機制應用到NLP領域中。接着相似的基於attention機制的RNN模型擴展開始應用到各類NLP任務中。最近,如何在CNN中使用attention機制也成爲了你們的研究熱點。下圖表示了attention研究進展的大概趨勢。函數
在介紹NLP中的Attention以前,我想大體說一下圖像中使用attention的思想。就具表明性的這篇論文《Recurrent Models of Visual Attention》 [14],他們研究的動機其實也是受到人類注意力機制的啓發。人們在進行觀察圖像的時候,其實並非一次就把整幅圖像的每一個位置像素都看過,大可能是根據需求將注意力集中到圖像的特定部分。並且人類會根據以前觀察的圖像學習到將來要觀察圖像注意力應該集中的位置。下圖是這篇論文的核心模型示意圖。學習
該模型是在傳統的RNN上加入了attention機制(即紅圈圈出來的部分),經過attention去學習一幅圖像要處理的部分,每次當前狀態,都會根據前一個狀態學習獲得的要關注的位置l和當前輸入的圖像,去處理注意力部分像素,而不是圖像的所有像素。這樣的好處就是更少的像素須要處理,減小了任務的複雜度。能夠看到圖像中應用attention和人類的注意力機制是很相似的,接下來咱們看看在NLP中使用的attention。ui
這篇論文算是在NLP中第一個使用attention機制的工做。他們把attention機制用到了神經網絡機器翻譯(NMT)上,NMT其實就是一個典型的sequence to sequence模型,也就是一個encoder to decoder模型,傳統的NMT使用兩個RNN,一個RNN對源語言進行編碼,將源語言編碼到一個固定維度的中間向量,而後在使用一個RNN進行解碼翻譯到目標語言,傳統的模型以下圖:google
這篇論文提出了基於attention機制的NMT,模型大體以下圖:編碼
圖中我並無把解碼器中的全部連線畫玩,只畫了前兩個詞,後面的詞其實都同樣。能夠看到基於attention的NMT在傳統的基礎上,它把源語言端的每一個詞學到的表達(傳統的只有最後一個詞後學到的表達)和當前要預測翻譯的詞聯繫了起來,這樣的聯繫就是經過他們設計的attention進行的,在模型訓練好後,根據attention矩陣,咱們就能夠獲得源語言和目標語言的對齊矩陣了。具體論文的attention設計部分以下:翻譯
能夠看到他們是使用一個感知機公式來將目標語言和源語言的每一個詞聯繫了起來,而後經過soft函數將其歸一化獲得一個機率分佈,就是attention矩陣。設計
從結果來看相比傳統的NMT(RNNsearch是attention NMT,RNNenc是傳統NMT)效果提高了很多,最大的特色還在於它能夠可視化對齊,而且在長句的處理上更有優點。3d
這篇論文是繼上一篇論文後,一篇很具表明性的論文,他們的工做告訴了你們attention在RNN中能夠如何進行擴展,這篇論文對後續各類基於attention的模型在NLP應用起到了很大的促進做用。在論文中他們提出了兩種attention機制,一種是全局(global)機制,一種是局部(local)機制。code
首先咱們來看看global機制的attention,其實這和上一篇論文提出的attention的思路是同樣的,它都是對源語言對全部詞進行處理,不一樣的是在計算attention矩陣值的時候,他提出了幾種簡單的擴展版本。
在他們最後的實驗中general的計算方法效果是最好的。
咱們再來看一下他們提出的local版本。主要思路是爲了減小attention計算時的耗費,做者在計算attention時並非去考慮源語言端的全部詞,而是根據一個預測函數,先預測當前解碼時要對齊的源語言端的位置Pt,而後經過上下文窗口,僅考慮窗口內的詞。
裏面給出了兩種預測方法,local-m和local-p,再計算最後的attention矩陣時,在原來的基礎上去乘了一個pt位置相關的高斯分佈。做者的實驗結果是局部的比全局的attention效果好。
這篇論文最大的貢獻我以爲是首先告訴了咱們能夠如何擴展attention的計算方式,還有就是局部的attention方法。
隨後基於Attention的RNN模型開始在NLP中普遍應用,不只僅是序列到序列模型,各類分類問題均可以使用這樣的模型。那麼在深度學習中與RNN一樣流行的卷積神經網絡CNN是否也可使用attention機制呢?《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》 [13]這篇論文就提出了3中在CNN中使用attention的方法,是attention在CNN中較早的探索性工做。
傳統的CNN在構建句對模型時如上圖,經過每一個單通道處理一個句子,而後學習句子表達,最後一塊兒輸入到分類器中。這樣的模型在輸入分類器前句對間是沒有相互聯繫的,做者們就想經過設計attention機制將不一樣cnn通道的句對聯繫起來。
第一種方法ABCNN0-1是在卷積前進行attention,經過attention矩陣計算出相應句對的attention feature map,而後連同原來的feature map一塊兒輸入到卷積層。具體的計算方法以下。
第二種方法ABCNN-2是在池化時進行attention,經過attention對卷積後的表達從新加權,而後再進行池化,原理以下圖。
第三種就是把前兩種方法一塊兒用到CNN中,以下圖
這篇論文提供了咱們在CNN中使用attention的思路。如今也有很多使用基於attention的CNN工做,並取得了不錯的效果。
最後進行一下總結。Attention在NLP中其實我以爲能夠當作是一種自動加權,它能夠把兩個你想要聯繫起來的不一樣模塊,經過加權的形式進行聯繫。目前主流的計算公式有如下幾種:
經過設計一個函數將目標模塊mt和源模塊ms聯繫起來,而後經過一個soft函數將其歸一化獲得機率分佈。
目前Attention在NLP中已經有普遍的應用。它有一個很大的優勢就是能夠可視化attention矩陣來告訴你們神經網絡在進行任務時關注了哪些部分。
不過在NLP中的attention機制和人類的attention機制仍是有所區別,它基本仍是須要計算全部要處理的對象,並額外用一個矩陣去存儲其權重,其實增長了開銷。而不是像人類同樣能夠忽略不想關注的部分,只去處理關注的部分。
參考文獻
[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.