自然語言處理中的自注意力機制(Self-Attention Mechanism)

2021-12-17 PaperWeekly
Attention is All You Need

接下來我將介紹 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)。

下面我們重點關注一下這篇論文中的 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 可視化來驗證。


那麼在整個模型中,是如何使用 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"依賴關係。多頭能夠從不同的表示子空間裡學習相關信息。

Self-Attention in NLP

■ 論文 | Deep Semantic Role Labeling with Self-Attention

■ 連結 | https://www.paperweekly.site/papers/1786

■ 源碼 | https://github.com/XMUNLP/Tagger

這篇論文來自 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 層能夠學習到標籤潛在的依賴信息

■ 論文 | Simultaneously Self-Attending to All Mentions for Full-Abstract Biological Relation Extraction

■ 連結 | https://www.paperweekly.site/papers/1787

■ 作者 | Patrick Verga / Emma Strubell / Andrew McCallum

這篇論文是 Andrew McCallum 團隊應用 Self-Attention 在生物醫學關係抽取任務上的一個工作,應該是已經被 NAACL 2018 接收。這篇論文作者提出了一個文檔級別的生物關係抽取模型,裡面做了不少工作,感興趣的讀者可以更深入閱讀原文。

我們這裡只簡單提一下他們 Self-Attention 的應用部分。論文模型的整體結構如下圖,他們也是使用 Google 提出包含 Self-Attention 的 transformer 來對輸入文本進行表示學習,和原始的 transformer 略有不同在於他們使用了窗口大小為 5 的 CNN 代替了原始 FNN

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

總結

最後進行一下總結,Self-Attention 可以是一般 Attention 的一種特殊情況,在 Self-Attention 中,Q=K=V 每個序列中的單元和該序列中所有單元進行 Attention 計算。

Google 提出的多頭 Attention 通過計算多次來捕獲不同子空間上的相關信息。Self-Attention 的特點在於無視詞之間的距離直接計算依賴關係,能夠學習一個句子的內部結構,實現也較為簡單並行可以並行計算。

從一些論文中看到,Self-Attention 可以當成一個層和 RNN,CNN,FNN 等配合使用,成功應用於其他 NLP 任務。

除了 Google 提出的自注意力機制,目前也有不少其他相關工作,感興趣的讀者可以繼續閱讀。

相關連結

[1] 注意力機制在自然語言處理中的應用

http://www.cnblogs.com/robert-dlut/p/5952032.html

[2] Attention is All You Need

https://www.paperweekly.site/papers/224

[3] 深度學習中的注意力機制(2017版)

https://blog.csdn.net/malefactor/article/details/78767781

[4] Recurrent Models of Visual Attention

https://www.paperweekly.site/papers/1788

[5] Neural Machine Translation by Jointly Learning to Align and Translate

https://www.paperweekly.site/papers/434

參考文獻

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

[2] 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.

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

[4] 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.

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

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

點擊以下標題查看相關內容: 

#作 者 招 募#


讓你的文字被很多很多人看到,喜歡我們不如加入我們

          

 我是彩蛋

 解鎖新功能:熱門職位推薦!

PaperWeekly小程序升級啦

今日arXiv√猜你喜歡√熱門職位

找全職找實習都不是問題

 

 解鎖方式 

1. 識別下方二維碼打開小程序

2. 用PaperWeekly社區帳號進行登陸

3. 登陸後即可解鎖所有功能

 職位發布 

請添加小助手微信(pwbot02)進行諮詢

 

長按識別二維碼,使用小程序

*點擊閱讀原文即可註冊

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。

▽ 點擊 | 閱讀原文 | 加入社區一起刷論文

相關焦點

  • 注意力機制(Attention Mechanism)在自然語言處理中的應用
    基於注意力(attention)機制的神經網絡成為了最近神經網絡研究的一個熱點,本人最近也學習了一些基於attention機制的神經網絡在自然語言處理(NLP)領域的論文,現在來對attention在NLP中的應用進行一個總結,和大家一起分享。
  • nlp中的Attention注意力機制+Transformer詳解
    > 本文以QA形式對自然語言處理中注意力機制
  • 乾貨 | NLP中的self-attention【自-注意力】機制
    在2017年6月google機器翻譯團隊在arXiv上放出的《Attention is all you need》論文受到了大家廣泛關注,自注意力(self-attention)機制開始成為神經網絡attention的研究熱點,在各個任務上也取得了不錯的效果。
  • 注意力機制Attention
    注意力機制(attention mechanism)Attention實質上是一種分配機制,其核心思想是突出對象的某些重要特徵。根據Attention對象的重要程度,重新分配資源,即權重,實現核心思想是基於原有的數據找到其之間的關聯性,然後突出其某些重要特徵。注意力可以被描述為將一個查詢和一組鍵值對映射到一個輸出,其中查詢、鍵、值和輸出都是向量。
  • 乾貨|理解attention機制本質及self-attention
    的知識,這篇接上篇,更加深入的理解attention的有關思想和最新的self-attention機制一、Attention機制的本質思想如果把Attention機制從上文講述例子中的Encoder-Decoder框架中剝離,並進一步做抽象,可以更容易看懂Attention機制的本質思想。
  • Self-Attention GAN 中的 self-attention 機制
    最大的亮點當然是 self-attention 機制,該機制是 Non-local Neural Networks [1] 這篇文章提出的。其作用是能夠更好地學習到全局特徵之間的依賴關係。因為傳統的 GAN 模型很容易學習到紋理特徵:如皮毛,天空,草地等,不容易學習到特定的結構和幾何特徵,例如狗有四條腿,既不能多也不能少。
  • Attention 掃盲:注意力機制及其 PyTorch 應用實現
    機制是對人類視覺注意力機制的仿生,本質上是一種資源分配機制。attention 機制的最典型應用是統計機器翻譯。給定任務,輸入是「Echt」, 「Dicke」 and 「Kiste」進 encoder,使用 rnn 表示文本為固定長度向量 h3。但問題就在於,當前 decoder 生成 y1 時僅僅依賴於最後一個隱層狀態h3,也就是 sentence_embedding。那麼這個 h3 必須 encode 輸入句子中的全部信息才行。
  • Self-Attention與Transformer
    當模型處理這個單詞「it」的時候,自注意力機制會允許「it」與「animal」建立聯繫。隨著模型處理輸入序列的每個單詞,自注意力會關注整個輸入序列的所有單詞,幫助模型對本單詞更好地進行編碼。如果你熟悉RNN(循環神經網絡),回憶一下它是如何維持隱藏層的。
  • 一文解讀NLP中的注意力機制
    本文深入淺出地介紹了近些年的自然語言中的注意力機制包括從起源、變體到評價指標方面。本文便對NLP的注意力機制進行了綜述。Source和Target可以是同一種語言,也可以是兩種不同的語言,若是不同語言,就可以處理翻譯問題了。若是相同語言,輸入序列Source長度為篇章,而目標序列Target為小段落則可以處理文本摘要問題 (目標序列Target為句子則可以處理標題生成問題)等等等。
  • 專題 自然語言處理學習筆記(二):encoder-decoder框架和attention mechanism兩種研究
    上述三個難點對於人類來說都不是一件容易的事情,何況是發展沒太多年的自然語言處理技術。人工智慧領域中AI能夠領先人類的例子很多,包括前不久很火的Alpha狗,圖片識別,主要是利用計算機遠強於人類的計算能力,但也有很多的領域,AI離人類的水平還有很遠,比如paper的survey,summarization,機器翻譯等等。
  • CV中的Attention機制:簡單而有效的CBAM模塊
    什麼是注意力機制?注意力機制(Attention Mechanism)是機器學習中的一種數據處理方法,廣泛應用在自然語言處理、圖像識別及語音識別等各種不同類型的機器學習任務中。通俗來講:注意力機制就是希望網絡能夠自動學出來圖片或者文字序列中的需要注意的地方。
  • 關於attention機制的一些細節的思考
    之前看過的一些attention機制,除了self attention之外,基於rnn或者cnn的attention在處理文本問題的時候基本上是embedding之後經過了rnn或者cnn結構的映射之後得到了映射後的向量V,然後attention是針對於V進行注意力weights的計算,問題來了,能不能直接在embedding上進行score的計算?
  • 【Attention】淺談Attention機制的理解
    接著attention機制就被廣泛應用在基於RNN/CNN等神經網絡模型的各種NLP任務中去了,效果看樣子是真的好,仿佛誰不用誰就一點都不fashion一樣。2017年,google機器翻譯團隊發表的《Attention is all you need》中大量使用了自注意力(self-attention)機制來學習文本表示。這篇論文引起了超大的反應,本身這篇paper寫的也很贊,很是讓人大開眼界。
  • 【Self-Attention】幾篇較新的計算機視覺Self-Attention
    來自 | 知乎地址 | https://zhuanlan.zhihu.com/p/44031466作者 | Fisher Yu餘梓彤編輯 | 機器學習算法與自然語言處理公眾號Soft-attention,[0,1]間連續分布問題,每個區域被關注的程度高低,用0~1的score表示Self-attention自注意力,就是 feature map 間的自主學習,分配權重(可以是 spatial,可以是 temporal,也可以是 channel間)[1] Non-local NN, CVPR2018FAIR的傑作,主要 inspired by
  • 動手推導Self-Attention
    基於Transformer的架構主要用於對自然語言理解任務進行建模,避免使用神經網絡中的遞歸神經網絡,而是完全依賴Self-Attention機制來繪製輸入和輸出之間的全局依存關係。但是,這背後的數學原理是什麼?這就是我們今天要發掘的問題。這篇文章的主要內容是引導您完成Self-Attention模塊中涉及的數學運算。在本文結尾處,您應該能夠從頭開始編寫或編寫Self-Attention模塊。
  • 綜述|計算機視覺中的注意力機制
    設為星標,第一時間獲取更多乾貨連結:https://zhuanlan.zhihu.com/p/146130215之前在看DETR這篇論文中的self_attention,然後結合之前實驗室組會經常提起的注意力機制,所以本周時間對注意力機制進行了相關的梳理,以及相關的源碼閱讀了解其實現的機制。
  • 如何理解attention中的Q,K,V?
    )社區是國內外最大的自然語言處理社區之一,匯聚超過50w訂閱者,受眾覆蓋國內外NLP碩博生、高校老師以及企業研究人員。為什麼叫自注意力網絡?因為可以看到Q/K/V都是通過同一句話的輸入算出來的,按照上面的流程也就是一句話內每個字對其它字(包括自己)的權重分配;那如果不是自注意力呢?簡單來說,Q來自於句A,K、V來自於句B即可~5.
  • 屠榜的新自注意力機制!PSA:極化自注意力,助力語義分割/姿態估計漲點!
    寫在前面注意力機制是一個被廣泛應用在各種CV任務中的方法。注意力機制根據施加的維度大致可以分為兩類:通道注意力和空間注意力。對於通道注意力機制,代表性的工作有SENet[2]、ECANet[3];對於空間注意力機制,代表性的工作有Self-Attention[4]。
  • 視覺注意力機制 | 視覺注意力機制用於分類:SENet、CBAM、SKNet
    點擊上方「AI算法修煉營」,選擇加星標或「置頂」標題以下,全是乾貨前面的話上次文章中,我們主要關注了視覺應用中的Self-attention機制及其應用——Non-local網絡模塊,從最開始的了解什麼是視覺注意力機制到對自注意力機制的細節把握,再到Non-local模塊的學習。
  • Attention!當推薦系統遇見注意力機制
    NewBeeNLP原創出品公眾號專欄作者@上杉翔二悠閒會 · 信息檢索當注意力機制都已經變成很tasteless的手法的時候,使用或者魔改注意力機制一定要專注講好自己的故事:即『為什麼要用Attention,為什麼要魔改Attention』