自注意力機制(Self-attention Mechanism)——天然語言處理(NLP)

近年來,注意力(Attention)機制被普遍應用到基於深度學習的天然語言處理(NLP)各個任務中。隨着注意力機制的深刻研究,各式各樣的attention被研究者們提出。在2017年6月google機器翻譯團隊在arXiv上放出的《Attention is all you need》論文受到了你們普遍關注,自注意力(self-attention)機制開始成爲神經網絡attention的研究熱點,在各個任務上也取得了不錯的效果。對這篇論文中的self-attention以及一些相關工做進行了學習總結(其中也參考借鑑了張俊林博士的博客"深度學習中的注意力機制(2017版)"和蘇劍林的"《Attention is All You Need》淺讀(簡介+代碼)"),和你們一塊兒分享。網絡

1 背景知識

Attention機制最先是在視覺圖像領域提出來的,應該是在九幾年思想就提出來了,可是真正火起來應該算是2014年google mind團隊的這篇論文《Recurrent Models of Visual Attention》,他們在RNN模型上使用了attention機制來進行圖像分類。隨後,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》中,使用相似attention的機制在機器翻譯任務上將翻譯和對齊同時進行,他們的工做算是第一個將attention機制應用到NLP領域中。接着attention機制被普遍應用在基於RNN/CNN等神經網絡模型的各類NLP任務中。2017年,google機器翻譯團隊發表的《Attention is all you need》中大量使用了自注意力(self-attention)機制來學習文本表示。自注意力機制也成爲了你們近期的研究熱點,並在各類NLP任務上進行探索。下圖維attention研究進展的大概趨勢。app

 

Attention機制的本質來自於人類視覺注意力機制。人們視覺在感知東西的時候通常不會是一個場景從到頭看到尾每次所有都看,而每每是根據需求觀察注意特定的一部分。並且當人們發現一個場景常常在某部分出現本身想觀察的東西時,人們會進行學習在未來再出現相似場景時把注意力放到該部分上。框架

下面我先介紹一下在NLP中經常使用attention的計算方法(裏面借鑑了張俊林博士"深度學習中的注意力機制(2017版)"裏的一些圖)。Attention函數的本質能夠被描述爲一個查詢(query)到一系列(鍵key-值value)對的映射,以下圖。函數

在計算attention時主要分爲三步,第一步是將query和每一個key進行類似度計算獲得權重,經常使用的類似度函數有點積,拼接,感知機等;而後第二步通常是使用一個softmax函數對這些權重進行歸一化;最後將權重和相應的鍵值value進行加權求和獲得最後的attention。目前在NLP研究中,key和value經常都是同一個,即key=value。學習

2 Attention is all you need[1]

接下來我將介紹《Attention is all you need》這篇論文。這篇論文是google機器翻譯團隊在2017年6月放在arXiv上,最後發表在2017年nips上,到目前爲止google學術顯示引用量爲119,可見也是受到了你們普遍關注和應用。這篇論文主要亮點在於1)不一樣於以往主流機器翻譯使用基於RNN的seq2seq模型框架,該論文用attention機制代替了RNN搭建了整個模型框架。2)提出了多頭注意力(Multi-headed attention)機制方法,在編碼器和解碼器中大量的使用了多頭自注意力機制(Multi-headed self-attention)。3)在WMT2014語料中的英德和英法任務上取得了先進結果,而且訓練速度比主流模型更快。優化

該論文模型的總體結構以下圖,仍是由編碼器和解碼器組成,在編碼器的一個網絡塊中,由一個多頭attention子層和一個前饋神經網絡子層組成,整個編碼器棧式搭建了N個塊。相似於編碼器,只是解碼器的一個網絡塊中多了一個多頭attention層。爲了更好的優化深度網絡,整個網絡使用了殘差鏈接和對層進行了規範化(Add&Norm)。google

下面咱們重點關注一下這篇論文中的attention。在介紹多頭attention以前,咱們先看一下論文中提到的放縮點積attention(scaled dot-Product attention)。對比我在前面背景知識裏提到的attention的通常形式,其實scaled dot-Product attention就是咱們經常使用的使用點積進行類似度計算的attention,只是多除了一個(爲K的維度)起到調節做用,使得內積不至於太大。編碼

多頭attention(Multi-head attention)結構以下圖,Query,Key,Value首先進過一個線性變換,而後輸入到放縮點積attention,注意這裏要作h次,其實也就是所謂的多頭,每一次算一個頭。並且每次Q,K,V進行線性變換的參數W是不同的。而後將h次的放縮點積attention結果進行拼接,再進行一次線性變換獲得的值做爲多頭attention的結果。能夠看到,google提出來的多頭attention的不一樣之處在於進行了h次計算而不只僅算一次,論文中說到這樣的好處是能夠容許模型在不一樣的表示子空間裏學習到相關的信息,後面還會根據attention可視化來驗證。.net

那麼在整個模型中,是如何使用attention的呢?以下圖,首先在編碼器到解碼器的地方使用了多頭attention進行鏈接,K,V,Q分別是編碼器的層輸出(這裏K=V)和解碼器中都頭attention的輸入。其實就和主流的機器翻譯模型中的attention同樣,利用解碼器和編碼器attention來進行翻譯對齊。而後在編碼器和解碼器中都使用了多頭自注意力self-attention來學習文本的表示。Self-attention即K=V=Q,例如輸入一個句子,那麼裏面的每一個詞都要和該句子中的全部詞進行attention計算。目的是學習句子內部的詞依賴關係,捕獲句子的內部結構。翻譯

 

對於使用自注意力機制的緣由,論文中提到主要從三個方面考慮(每一層的複雜度,是否能夠並行,長距離依賴學習),並給出了和RNN,CNN計算複雜度的比較。能夠看到,若是輸入序列n小於表示維度d的話,每一層的時間複雜度self-attention是比較有優點的。當n比較大時,做者也給出了一種解決方案self-attention(restricted)即每一個詞不是和全部詞計算attention,而是隻與限制的r個詞去計算attention。在並行方面,多頭attention和CNN同樣不依賴於前一時刻的計算,能夠很好的並行,優於RNN。在長距離依賴上,因爲self-attention是每一個詞和全部詞都要計算attention,因此無論他們中間有多長距離,最大的路徑長度也都只是1。能夠捕獲長距離依賴關係。

最後咱們看一下實驗結果,在WMT2014的英德和英法機器翻譯任務上,都取得了先進的結果,且訓練速度優於其餘模型。

在模型的超參實驗中能夠看到,多頭attention的超參h過小也很差,太大也會降低。總體更大的模型比小模型要好,使用dropout能夠幫助過擬合。

做者還將這個模型應用到了句法分析任務上也取得了不錯的結果。

最後咱們看一下attention可視化的效果(這裏不一樣顏色表明attention不一樣頭的結果,顏色越深attention值越大)。能夠看到self-attention在這裏能夠學習到句子內部長距離依賴"making…….more difficult"這個短語。在兩個頭和單頭的比較中,能夠看到單頭"its"這個詞只能學習到"law"的依賴關係,而兩個頭"its"不只學習到了"law"還學習到了"application"依賴關係。多頭可以從不一樣的表示子空間裏學習相關信息。

3 Self-attention in NLP

3.1 Deep Semantic Role Labeling with Self-Attention[8]

這篇論文來自AAAI2018,廈門大學Tan等人的工做。他們將self-attention應用到了語義角色標註任務(SRL)上,並取得了先進的結果。這篇論文中,做者將SRL做爲一個序列標註問題,使用BIO標籤進行標註。而後提出使用深度注意力網絡(Deep Attentional Neural Network)進行標註,網絡結構以下。在每個網絡塊中,有一個RNN/CNN/FNN子層和一個self-attention子層組成。最後直接利用softmax當成標籤分類進行序列標註。

該模型在CoNLL-2005和CoNll-2012的SRL數據集上都取得了先進結果。咱們知道序列標註問題中,標籤之間是有依賴關係的,好比標籤I,應該是出如今標籤B以後,而不該該出如今O以後。目前主流的序列標註模型是BiLSTM-CRF模型,利用CRF進行全局標籤優化。在對比實驗中,He et al和Zhou and Xu的模型分別使用了CRF和constrained decoding來處理這個問題。能夠看到本論文僅使用self-attention,做者認爲在模型的頂層的attention層可以學習到標籤潛在的依賴信息。

3.2 Simultaneously Self-Attending to All Mentions for Full-Abstract Biological Relation Extraction[7]

這篇論文是Andrew McCallum團隊應用self-attention在生物醫學關係抽取任務上的一個工做,應該是已經被NAACL2018接收。這篇論文做者提出了一個文檔級別的生物關係抽取模型,裏面作了很多工做,感興趣的讀者能夠更深刻閱讀原文。咱們這裏只簡單提一下他們self-attention的應用部分。論文模型的總體結構以下圖,他們也是使用google提出包含self-attention的transformer來對輸入文本進行表示學習,和原始的transformer略有不一樣在於他們使用了窗口大小爲5的CNN代替了原始FNN。

咱們關注一下attention這部分的實驗結果。他們在生物醫學藥物致病數據集上(Chemical Disease Relations,CDR)取得了先進結果。去掉self-attention這層之後能夠看到結果大幅度降低,並且使用窗口大小爲5的CNN比原始的FNN在這個數據集上有更突出的表現。

4 總結

 

最後進行一下總結,self-attention能夠是通常attention的一種特殊狀況,在self-attention中,Q=K=V每一個序列中的單元和該序列中全部單元進行attention計算。Google提出的多頭attention經過計算屢次來捕獲不一樣子空間上的相關信息。self-attention的特色在於無視詞之間的距離直接計算依賴關係,可以學習一個句子的內部結構,實現也較爲簡單並行能夠並行計算。從一些論文中看到,self-attention能夠當成一個層和RNN,CNN,FNN等配合使用,成功應用於其餘NLP任務。

除了Google提出的自注意力機制,目前也有很多其餘相關工做,感興趣的讀者能夠繼續閱讀。

參考文獻

[1] Vaswani, Ashish, et al. Attention is all you need. Advances in Neural Information Processing Systems. 2017.

[2] Romain Paulus, Caiming Xiong, and Richard Socher. A deep reinforced model for abstractive summarization. arXiv preprint arXiv:1705.04304, 2017.

[3] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured self-attentive sentence embedding. arXiv preprint arXiv:1703.03130, 2017.

[4] Jianpeng Cheng, Li Dong, and Mirella Lapata. Long short-term memory-networks for machine reading. arXiv preprint arXiv:1601.06733, 2016.

[5] Shen, T.; Zhou, T.; Long, G.; Jiang, J.; Pan, S.; and Zhang, C. Disan: Directional self-attention network for rnn/cnn-free language understanding. arXiv preprint arXiv:1709.04696, 2017.

[6] Im, Jinbae, and Sungzoon Cho. Distance-based Self-Attention Network for Natural Language InferencearXiv preprint arXiv:1712.02047, 2017.

[7] Verga P, Strubell E, McCallum A. Simultaneously Self-Attending to All Mentions for Full-Abstract Biological Relation Extraction. arXiv preprint arXiv:1802.10569, 2018.

[8] Tan Z, Wang M, Xie J, et al. Deep Semantic Role Labeling with Self-Attention. AAAI 2018.

[9] Shaw, Peter, Jakob Uszkoreit, and Ashish Vaswani. Self-Attention with Relative Position RepresentationsarXiv preprint arXiv:1803.02155 ,2018.

參考博客

張俊林,深度學習中的注意力機制(2017版),https://blog.csdn.net/malefactor/article/details/78767781

蘇劍林,《Attention is All You Need》淺讀(簡介+代碼),https://kexue.fm/archives/4765

相關文章
相關標籤/搜索