电竞比分网-中国电竞赛事及体育赛事平台

分享

學習|遍地開花的 Attention ,你真的懂嗎?

 漢無為 2019-08-18

前言

       Attention 自2015年被提出后,在 NLP 領(lǐng)域,圖像領(lǐng)域遍地開花。Attention 賦予模型區(qū)分辨別能力,從紛繁的信息中找到應(yīng)當 focus 的重點。2017年 self attention 的出現(xiàn),使得 NLP 領(lǐng)域?qū)υ~句 representation 能力有了很大的提升,整個 NLP 領(lǐng)域開啟了全面擁抱 transformer 的年代。

本文會主要從2個方面來介紹 Attention。

初識 Attention,主要扒一扒 Attention 的歷史,然后給出一個通用的框架來回答一個終極問題:what is Attention?

細數(shù) Attention,以上文給出的通用框架視角來審視所有的 Attention,在這個章節(jié),你會和各種各樣的 Attention 相遇、相識、相戀(global/local、soft/hard、Bagdanau attention、 Luong attention、 self-attention、 multi-head attention , 以及它們的別名),了解它們之間的聯(lián)系與差異。


初識Attention

History

Attention 的發(fā)展可以粗暴地分為兩個階段。

2015-2017年,自從 attention 提出后,基本就成為 NLP 模型的標配,各種各樣的花式 attention 鋪天蓋地。不僅在 Machine Translation,在 Text summarization,Text Comprehend(Q&A), Text Classification 也廣泛應(yīng)用。奠定基礎(chǔ)的幾篇文章如下:

2015年 ICLR 《Neural machine translation by jointly learning to align and translate》首次提出 attention(基本上算是公認的首次提出),文章提出了最經(jīng)典的 Attention 結(jié)構(gòu)(additive attention 或者 又叫 bahdanau attention)用于機器翻譯,并形象直觀地展示了 attention 帶來源語目標語的對齊效果,解釋深度模型到底學到了什么,人類表示服氣。

2015年 EMNLP 《Effective Approaches to Attention-based Neural Machine Translation》在基礎(chǔ) attention 上開始研究一些變化操作,嘗試不同的 score-function,不同的 alignment-function。文章中使用的 Attention(multiplicative attention 或者 又叫 Luong attention)結(jié)構(gòu)也被廣泛應(yīng)用。

2015年 ICML 《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》是 attention(提出hard/soft attention的概念)在 image caption 上的應(yīng)用,故事圓滿,符合直覺,人類再次表示很服氣。

在上面幾篇奠基之作之上,2016和2017年 attention 開枝散葉,無往不利。Hiearchical Attention,Attention over Attention,multi-step Attention……這些或叫得上名的或叫不上名。

2017年-至今是屬于 transformer 的時代。基于 transformer 強大的表示學習能力,NLP 領(lǐng)域爆發(fā)了新一輪的活力,BERT、GPT 領(lǐng)跑各項 NLP 任務(wù)效果。奠基之作無疑是:

2017年 NIPS《Attention is all you need》提出 transformer 的結(jié)構(gòu)(涉及 self-attention,multi-head attention)。基于 transformer 的網(wǎng)絡(luò)可全部替代sequence-aligned 的循環(huán)網(wǎng)絡(luò),實現(xiàn) RNN 不能實現(xiàn)的并行化,并且使得長距離的語義依賴與表達更加準確(據(jù)說2019年的 transformer-xl《Transformer-XL:Attentive Lanuage Models Beyond a fixed-length context》通過片段級循環(huán)機制結(jié)合相對位置編碼策略可以捕獲更長的依賴關(guān)系)。

what is Attention ?

直奔主題,終極叩問 'what is attention?' 。這個章節(jié),嘗試以統(tǒng)一的抽象框架來定義 attention。如同先編寫一個抽象類,后續(xù)章節(jié)涉及所有的 attention 都繼承于這個抽象類。這里我寫了兩個抽象類,一個叫 alignment-based,一個叫 memroy-based。(兩名字我給起的,保留最終解釋權(quán))。

★ alignment-based

如下圖所示的 model setting,輸入 c(context,有的論文寫s),y(input,有的地方也寫作 h),輸出 z。圖中,英文表達原汁原味,細品一下。

我們細拆 Attention Model,以經(jīng)典的 Bahdanau attention 為例,看看抽象出來的三部曲:

  • score function :度量環(huán)境向量與當前輸入向量的相似性;找到當前環(huán)境下,應(yīng)該 focus 哪些輸入信息;

  • alignment function :計算 attention weight,通常都使用 softmax 進行歸一化;

  • generate context vector function :根據(jù) attention weight,得到輸出向量;

下圖,更加直觀地展示這三個接口的位置:

自此之后,要認清一個 attention 的詳情,只需要搞清楚這三個部分,所有的變換都是在3個位置進行調(diào)整,當然變化最豐富的是 score function。在后一個章節(jié)會詳細對比不同種類的 attention 在這三個維度上的變換。

★ memory-based

另一種視角是 QKV 模型,假設(shè)輸入為 q,Memory 中以(k,v)形式存儲需要的上下文。感覺在 Q&A 任務(wù)中,這種設(shè)置比較合理,transformer 是采用的這種建模方式。k 是 question,v 是 answer,q 是新來的 question,看看歷史 memory 中 q 和哪個 k 更相似,然后依葫蘆畫瓢,根據(jù)相似 k 對應(yīng)的 v,合成當前 question 的 answer。

圖片來源:

https://zhuanlan.zhihu.com/p/35571412

在這種建模方式下,也分為三步:

  • address memory (score function):,在 memory 中找相似;

  • normalize(alignment function) : 

  • read content (gen context vector function) : 

其實還是沒有逃出上文三部曲的框架。只是將 input 分裂成了 kvpair。

后文都會以統(tǒng)一的三部曲建模方式(score function,alignment function,generate context vector function)來分析所有 attention。

Attention in Detail

在上文,我們 high-level 地了解了 attention 三部曲的建模方式,接下來要把所有Attention 拉出來排排坐。

Framework

如下圖,通常聽到的一些 attention,他們的差異其實主要體現(xiàn)在 score-function 層面,其次是體現(xiàn)在 generate context vector function 的層面。我們分別來看看,這些 attention 之間的差異與聯(lián)系。

★ generate context vector function

hard / soft attention 是在文章《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》提出的概念,最直觀的一種理解是,hard attention 是一個隨機采樣,采樣集合是輸入向量的集合,采樣的概率分布是alignment function 產(chǎn)出的 attention weight。因此,hard attention 的輸出是某一個特定的輸入向量。soft attention 是一個帶權(quán)求和的過程,求和集合是輸入向量的集合,對應(yīng)權(quán)重是 alignment function 產(chǎn)出的 attention weight。hard / soft attention 中,soft attention 是更常用的(后文提及的所有 attention 都在這個范疇),因為它可導,可直接嵌入到模型中進行訓練,hard attention 文中 suggests a Monte Carlo based sampling approximation of gradient。

★ alignment function

在 soft attention 中,又劃分了 global/local attention(In this paper :《Effective Approaches to Attention-based Neural Machine Translation》)。

直觀理解就是帶權(quán)求和的集合不一樣,global attention 是所有輸入向量作為加權(quán)集合,使用 softmax 作為 alignment function,local 是部分輸入向量才能進入這個池子。為什么用 local,背后邏輯是要減小噪音,進一步縮小重點關(guān)注區(qū)域。接下來的問題就是,怎么確定這個 local 范圍?文中提了兩個方案 local-m 和 local-p。local-m 基于的假設(shè)生硬簡單,就直接 pass了。local-p 有一個預估操作,預計當前時刻應(yīng)該關(guān)注輸入序列(總長度為S)的什么位置 pt(引入了兩個參數(shù)向量,vp,wp),然后在 alignment function 中做了一點兒調(diào)整,在 softmax 算出來的attention wieght 的基礎(chǔ)上,加了一個以 pt 為中心的高斯分布來調(diào)整 alignment 的結(jié)果。

作者最后闡述 local-p + general(score-function 參考上圖中multiplicative attention 中的 general 版本)的方式效果是最好的。但從global/local 視角的分類來看,更常用的依然還是 global attention,因為復雜化的local attention 帶來的效果增益感覺并不大。

★ score-function

如何生成輸出向量,有上面提及的那些變換。接下來是變化更加豐富的 score function。最為常用的 score function 有上文圖中的那幾種(基本全乎了吧)。其實本質(zhì)就是度量兩個向量的相似度。如果兩個向量在同一個空間,那么可以使用 dot 點乘方式(或者 scaled dot product,scaled 背后的原因是為了減小數(shù)值,softmax 的梯度大一些,學得更快一些),簡單好使。如果不在同一個空間,需要一些變換(在一個空間也可以變換),additive 對輸入分別進行線性變換后然后相加,multiplicative 是直接通過矩陣乘法來變換(你是不是也曾迷惑過為什么attention 要叫做 additive 和 multiplicative attention?)。

后文我們將介紹幾個具有代表性的 attention,通過具體的 attention example 來進一步理解。以及一些花樣 attention,看大家都怎樣變著法兒用 attention。

Bahdanau Attention & Luong Attention

在對比之中,認知更清晰,一圖表達所有。這兩個 Attention 就是整個 Attention 的奠基之作。Tensorflow 中實現(xiàn)了這兩種 Attention 的 API。

Self Attention & Multi-head Attention

★ why self attention ?

有很多文章寫 self-attention,但是寫 why self-attention 的并不多。所以打算多花點筆墨來寫 why。

RNN 的長距離依賴比較 tricky:RNN 很強大(可以作為 encoder 對長度任意的序列進行特征抽取,基于特征抽取的能力可以勝任分類任務(wù),另一方面可以作為Generators 學習 Language Model),其實核心就是長距離依賴(gate architectures - 線性操作讓信息可以保持并流動,并選擇性地讓信息通過),可以對長度任意的序列進行表達,但是這種方式還是比較 tricky。并且這種序列建模方式,無法對具有層次結(jié)構(gòu)的信息進行很好的表達。

RNN 由于遞歸的本質(zhì),導致無法并行。

CNN 在 NLP 中扮演了 n-gram 的 detector 角色,在層內(nèi)可以并行。CNN works well,基于的假設(shè)是局部信息相互依賴。CNN 具有 Hierarchical Receptive Field,使得任意任意兩個位置之間的長度距離是對數(shù)級別的。

所以有沒有一種方法,能夠做到既能又能還能?

相對于 CNN,要 constant path length 不要 logarithmic path length , 要 variable-sized perceptive field,不要固定 size 的 perceptive field;
相對于 RNN,考慮長距離依賴,還要可以并行!

這就是 self attention。下圖可以看到 self-attention 和 convolution 有點兒神似,它摒棄了 CNN 的局部假設(shè),想要尋找長距離的關(guān)聯(lián)依賴。看下圖就可以理解 self-attention 的這幾個特點:

  • constant path length & variable-sized perceptive field :任意兩個位置(特指遠距離)的關(guān)聯(lián)不再需要通過 Hierarchical perceptive field 的方式,它的 perceptive field 是整個句子,所以任意兩個位置建立關(guān)聯(lián)是常數(shù)時間內(nèi)的。

  • parallelize : 沒有了遞歸的限制,就像 CNN 一樣可以在每一層內(nèi)實現(xiàn)并行。

圖片來源:

https://nlp./seminar/details/lkaiser.pdf

self-attention 借鑒 CNN中 multi-kernel 的思想,進一步進化成為 Multi-Head attention。每一個不同的 head 使用不同的線性變換,學習不同的 relationship。

★ what is self-attention?

已經(jīng)有很多很好的文章介紹 transformer 和 self-attention,以及內(nèi)部細節(jié)。有興趣的同學可以看下參考資料【11】,介紹得比較詳細,下圖是完整版本的 multi-head attention 的示例圖(引用自上述鏈接中)。這是基于上文中提及了 QKV 的 memory-based 的建模方式。需要說明的幾個點:

1. QKV 都是對輸入 x 的線性映射。
2. score-function 使用 scaled-dot product。
3. multihead 的方式將多個 head 的輸出 z,進行 concat 后,通過線性變換得到最后的輸出 z。

transformer 框架中 self-attention 本身是一個很大的創(chuàng)新,另一個有意思的是 three ways of attention 的設(shè)計。attention weight 一列以英譯中,encoder 輸入machine learning,decoder 輸入機器學習。

  1. Encoder self-attention:Encoder 階段捕獲當前 word 和其他輸入詞的關(guān)聯(lián);

  2. MaskedDecoder self-attention :Decoder 階段捕獲當前 word 與已經(jīng)看到的解碼詞之間的關(guān)聯(lián),從矩陣上直觀來看就是一個帶有 mask 的三角矩陣;

  3. Encoder-Decoder Attention:就是將 Decoder 和 Encoder 輸入建立聯(lián)系,和之前那些普通 Attention 一樣;

在 transformer 中除了上訴提及的東西,還有 positional encoding,residuals 這些小而美的東西。在復雜度方面在原文中也與 RNN-CNN 進行了對比。

花樣 Attention

下面簡要介紹幾種花樣的 attention:

RNN 對序列建模,但是缺乏層次信息。而語言本身是具有層次結(jié)構(gòu),短語組成句子,句子組成篇章。因此研究者十分希望把語言中的這些層次結(jié)構(gòu)在模型中得以體現(xiàn),Hierarchical 的方式就出現(xiàn)了?!禜ierarchical Attention Networks for Document Classification》,從 word attention 到 sentence attention,如下圖一。

在匹配或者檢索任務(wù)中(如Q&A,IR),要衡量 query,doc 相似度,這時候attention 的方法中,query 和 doc 就互為對方的 cotext,query 對 doc 算一次attention,doc對query 算一次 attention,《Attention-over-Attention Neural Networks for Reading Comprehension 》,如下圖二。

上文介紹 why self-attention 時已經(jīng)提及了 RNN 和 CNN 的一些優(yōu)點和問題,幾乎和 transformer 同時,facebook 發(fā)表了《Convolutional Sequence to Sequence Learning》,同樣地想借用 CNN 的優(yōu)點來補足 RNN 不能并行的弱點,用 CNN 結(jié)合 attention 來對序列進行建模,如下圖三。

隨著 transformer 的爆紅,圍繞 transformer 的花邊,出現(xiàn)了 weighted-transformer 《Weighted Transformer Network For Machine Translation》。今年出現(xiàn)了 transformer-xl 《Transformer-xl :attentive language models beyond a fixed-length context》,如下圖四, 想達到對任意長度的輸入進行特征抽取,而不是 transformer 切成 segment 的定長輸入。

總結(jié)

Why Attention Works?

從上面的建模,我們可以大致感受到 Attention 的思路簡單,四個字“帶權(quán)求和”就可以高度概括,大道至簡。做個不太恰當?shù)念惐龋祟悓W習一門新語言基本經(jīng)歷四個階段:死記硬背(通過閱讀背誦學習語法練習語感)->提綱挈領(lǐng)(簡單對話靠聽懂句子中的關(guān)鍵詞匯準確理解核心意思)->融會貫通(復雜對話懂得上下文指代、語言背后的聯(lián)系,具備了舉一反三的學習能力)->登峰造極(沉浸地大量練習)。

這也如同attention的發(fā)展脈絡(luò),RNN 時代是死記硬背的時期,attention 的模型學會了提綱挈領(lǐng),進化到 transformer,融匯貫通,具備優(yōu)秀的表達學習能力,再到 GPT、BERT,通過多任務(wù)大規(guī)模學習積累實戰(zhàn)經(jīng)驗,戰(zhàn)斗力爆棚。

要回答為什么 attention 這么優(yōu)秀?是因為它讓模型開竅了,懂得了提綱挈領(lǐng),學會了融會貫通。

那又是如何開竅的?是因為它懂得了'context is everything'。

1.在語言模型中:語言模型(language model)是整個 NLP 領(lǐng)域的基礎(chǔ),語言模型的精準程度基本上直接掌握所有 NLP 任務(wù)效果的命脈。而 context 又掌握著語言模型的命脈,語義不孤立,在特定 context 下展示特定的一面,模型如果可以學習到這些知識,就可以達到見人說人話,見鬼說鬼話的理想狀態(tài)。

在語義表達上能把 context 用好的都是成功的典范(參考:word2vec 靠學習 word 及其 context 發(fā)家,ELMo-deep contextualized word representations, BERT 從句子中摳掉一個詞用上下文去預測這個詞,transformer-xl 較 transformer 使用更全面的 context 信息,XLNet 一大重要貢獻也是研究如何使用上下文信息來訓練語言模型)。

2.在其他領(lǐng)域中:Attention 是把 context 用好的典范之一。Attention 背后本質(zhì)的思想就是:在不同的 context 下,focusing 不同的信息。這本來就是一個普適的準則。所以 Attention 可以用到所有類似需求的地方,不僅僅是 NLP,圖像,就看你對 context 如何定義。

在很多的應(yīng)用場景,attention-layer 肩負起了部分 feature-selection,featue-representation 的責任。舉個例子,transfer learning with Domain-aware attention network for item recommemdation in e-commerce 中提及:不同場景的用戶的行為有不同的偏好(場景是 context,價格,品牌是不同的信息),天貓用戶對品牌看重,親淘用戶 focus 價格,可以通過 attention-layer 學習到不同 context 下,用戶的 Attention 在哪里。在 ctr 預估中,Deep Interest Network for Click-Through Rate Prediction 出發(fā)點類似。在推薦場景中,文章 Feature Aware Multi-Head Attention 在手淘猜你喜歡排序模型中的應(yīng)用 。這些都是attention 在業(yè)務(wù)場景落地的參考。

Reference

1.Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.
2.Xu K, Ba J, Kiros R, et al. Show, attend and tell: Neural image caption generation with visual attention[J]. arXiv preprint arXiv:1502.03044, 2015.
3.Luong M T, Pham H, Manning C D. Effective approaches to attention-based neural machine translation[J]. arXiv preprint arXiv:1508.04025, 2015.
4.Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
5.Dai Z, Yang Z, Yang Y, et al. Transformer-xl: Attentive language models beyond a fixed-length context[J]. arXiv preprint arXiv:1901.02860, 2019.
6.Yang Z, Yang D, Dyer C, et al. Hierarchical attention networks for document classification[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 1480-1489.
7.Cui Y, Chen Z, Wei S, et al. Attention-over-attention neural networks for reading comprehension[J]. arXiv preprint arXiv:1607.04423, 2016.
8.Gehring J, Auli M, Grangier D, et al. Convolutional sequence to sequence learning[C]//Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017: 1243-1252.
9.https://github.com/kimiyoung/transformer-xl
10.https://lilianweng./lil-log/2018/06/24/attention-attention.html
11.https://jalammar./illustrated-transformer/
12.https://www.jianshu.com/p/b1030350aadb
13.https:///abs/1706.06978

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多