【NLP】 聊聊NLP中的attention机制
本篇介紹在NLP中各項任務及模型中引入相當廣泛的Attention機制。在Transformer中,最重要的特點也是Attention。首先詳細介紹其由來,然后具體介紹了其編解碼結構的引入和原理,最后總結了Attention機制的本質。
作者&編輯 | 小Dream哥
1 注意力機制的由來
在深度學習領域,注意力機制模仿的是人類認知的過程。當人看到如下“美女傷心流淚”圖時,細細想一下,人在做出圖片中美女是在傷心流淚的過程,應該是先整體掃描該圖片;然后將視覺注意力集中到美女的臉部;集中到臉部之后,再進一步將視覺注意力集中到眼睛部位。最后發現了眼淚,得出美女是在傷心流淚的結論。
人類在對信息進行處理的過程中,注意力不是平均分散的,而是有重點的分布。受此啟發,做計算機視覺的朋友,開始在視覺處理過程中加入注意力機制(Attention)。隨后,做自然語言處理的朋友們,也開始引入這個機制。在NLP的很多任務中,加入注意力機制后,都取得了非常好的效果。
那么,在NLP中,Attention機制是什么呢?從直覺上來說,與人類的注意力分配過程類似,就是在信息處理過程中,對不同的內容分配不同的注意力權重。下面我們詳細看看,在自然語言處理中,注意力機制是怎么實現的。
2 seq2seq結構及其中的Attention
如上圖所示,是標準的編解碼(seq2seq)機制的結構圖,在機器翻譯、生成式聊天機器人、文本摘要等任務中均有應用。其處理流程是通過編碼器對輸入序列進行編碼,生成一個中間的語義編碼向量C,然后在解碼器中,對語義編碼向量C進行解碼,得到想要的輸出。例如,在中英文翻譯的任務中,編碼器的輸入是中文序列,解碼器的輸出就是翻譯出來的英文序列。
可以看出,這個結構很"干凈",對于解碼器來說,在解碼出y1,y2,y3時,語義編碼向量均是固定的。我們來分析下這樣是否合理。
假設輸入的是"小明/喜歡/小紅",則翻譯結果應該是"XiaoMing likes XiaoHong"。根據上述架構,在解碼得到"XiaoMing","likes"," XiaoHong"時,引入的語義編碼向量是相同的,也就是"小明","喜歡","小紅"在翻譯時對得到"XiaoMing","likes"," XiaoHong"的作用是相同的。這顯然不合理,在解碼得到"XiaoMing"時,"小明"的作用應該最大才對。
鑒于此,機智的NLP研究者們,認為應該在編解碼器之間加入一種對齊機制,也就是在解碼"XiaoMing"時應該對齊到"小明"。在《Neural Machine Translation By Jointly Learning To Align And Translate》中首次將這種對齊機制引入到機器翻譯中。我們來看看,這是怎樣的一種對齊機制。
我們先回顧一下剛才的編解碼結構,其語義編碼向量和解碼器狀態,通過如下的公式得到:
通常在解碼時語義編碼向量是固定的。若要實現對齊機制,在解碼時語義編碼向量應該隨著輸入動態的變化。鑒于此,《Neural Machine Translation By Jointly Learning To Align And Translate》提出來一種對齊機制,也就是Attention機制。
如上圖示,論文中采用雙向RNN來進行語義的編碼,這不是重點,我們先不關注。其對齊機制整體思想是:編碼時,記下來每一個時刻的RNN編碼輸出(h1,h2,h3,..hn);解碼時,根據前一時刻的解碼狀態,即yi-1,計算出來一組權重(a1,a2,..an),這組權重決定了在當前的解碼時刻,(h1,h2,h3,..hn)分別對解碼的貢獻。這樣就實現了,編解碼的對齊。
下面我們用數學語言描述一下上面的過程。
首先,進行編碼計算(h1,h2,..hn),i時刻的編碼狀態計算公式如下:
然后,開始解碼,加入此時在解碼的i時刻,則需要計算i時刻的編碼向量Ci,通過如下的公式計算:
aij是對不同時刻的編碼狀態取的權重值。由此可見,i時刻的語義編碼向量由不同時刻的編碼狀態加權求和得到。
下面看看,如何取得權重向量a:
權重向量ai通過加入解碼器前一個時刻的狀態進行計算得到。eij表示,在計算Ci時,hj的絕對權重。通過對其使用softmax函數,得到aij。aij就是在計算Ci時,hj編碼狀態的權重值。
得到權重向量ai及語義編碼向量Ci后,就可以計算當前時刻的解碼狀態了:
這就是編解碼機制中注意力機制的基本內容了,本質上就是為了實現編解碼之間的對齊,在解碼時根據前一時刻的解碼狀態,獲取不同時刻編碼狀態的權重值并加權求和,進而獲得該時刻語義編碼向量。
那么,抽離編解碼機制,Attention機制的本質是什么呢?我們下面來看看。
3?Attention機制的本質
我們回想一下,引入Attention機制的本意,是為了在信息處理的時候,恰當的分配好”注意力“資源。那么,要分配好注意力資源,就需要給每個資源以不同的權重,Attention機制就是計算權重的過程。
如下圖所示,
如上圖所示,我們由資源Value,需要根據當前系統的其他狀態Key和Querry來計算權重用以分配資源Value。
也就是,可以用如下的數學公式來描述Attention機制:
F函數可以有很多,在transformer中用的是點積。
總結
Transformer中最重要的特點就是引入了Attention,其對于Transformer性能的重要性我們下一篇介紹。總的來說,Adttention機制是一種對齊機制,它通過對系統當前的某些狀態進行評估,來對系統資源進行權重分配,實現對齊,具體可以看機器翻譯的例子。
下期預告:當前最強大的特征抽取器transformer
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
【NLP】自然語言處理專欄上線,帶你一步一步走進“人工智能技術皇冠上的明珠”。
【NLP】用于語音識別、分詞的隱馬爾科夫模型HMM
【NLP】用于序列標注問題的條件隨機場(Conditional Random Field, CRF)
【NLP】經典分類模型樸素貝葉斯解讀
【NLP】 NLP專欄欄主自述,說不出口的話就交給AI說吧
【NLP】 深度學習NLP開篇-循環神經網絡(RNN)
【NLP】 NLP中應用最廣泛的特征抽取模型-LSTM
【技術綜述】深度學習在自然語言處理中的應用發展史
總結
以上是生活随笔為你收集整理的【NLP】 聊聊NLP中的attention机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AI不惑境】深度学习中的多尺度模型设计
- 下一篇: 有三AI 1000问回归,备战秋招,更多