重新思考深度學(xué)習(xí)中的Attention機(jī)制

極市導(dǎo)讀
?本文的講述的是關(guān)于深度學(xué)習(xí)中的Attention機(jī)制,本文并非定位于對Attention機(jī)制的各類框架和玩法進(jìn)行綜述,而是介紹了四個(gè)Attention的有代表性和有意思的工作,并給出關(guān)于Attention機(jī)制的合理性的進(jìn)一步的思考。?>>明日直播!田值:實(shí)例分割創(chuàng)新式突破BoxInst,僅用Box標(biāo)注,實(shí)現(xiàn)COCO 33.2AP!
寫在前面: 本文是一篇關(guān)于深度學(xué)習(xí)中的 Attention機(jī)制?的文章。與之前的系列文章不同,本文并非定位于對Attention機(jī)制的各類框架和玩法進(jìn)行綜述,因此不會(huì)花費(fèi)過多的篇章去介紹Attention的發(fā)展歷史或數(shù)學(xué)計(jì)算方法;更多是簡單地介紹幾個(gè)Attention的代表性和有意思的工作,并去思考Attention機(jī)制的合理性,提出一些進(jìn)一步的思考。
以下是本文的主要框架:
問題來源 & 背景 “樸素”的Attention思想 Attention相關(guān)的有趣工作 What's more
1. 問題來源 & 背景
最近做了非常非常久的多任務(wù)學(xué)習(xí)工作(或許后面會(huì)整理一下),在嘗試到MMoE這個(gè)模型時(shí),發(fā)現(xiàn)了一件有意思的事情。
我們知道,在MMoE模型中,專家層的下一層——Gate層的工作是針對不同的任務(wù),對專家的輸出進(jìn)行加權(quán)求和,使得不同任務(wù)按照自己的需要獲取不同專家的信息,最終目的應(yīng)該是將不同專家提取到的特征用一種更加無損的方式融合起來。
MMoE如下圖最右側(cè)的C模型,Gate A的工作是對專家0,1,2的輸出進(jìn)行加權(quán),并將加權(quán)之后的結(jié)果輸出給Tower A,用于A任務(wù)后續(xù)計(jì)算Logit。

圖1,MMoE模型結(jié)構(gòu),
在Gate A中采取了一種很有趣的方式來對專家0,1,2的方式進(jìn)行加權(quán)融合:
專家0,1,2分別是從input處連接的全連接網(wǎng)絡(luò)。 對于每個(gè)Tower(與Gate一一對應(yīng)),從input處連接一個(gè)全連接網(wǎng)絡(luò)(網(wǎng)絡(luò)參數(shù)W的Size為input size * 3),并對這個(gè)全連接模塊的輸出進(jìn)行Softmax。 將Softmax后的結(jié)果作為權(quán)重,分別乘以專家0,1,2的輸出,作為加權(quán)融合后的結(jié)果,用作Tower A后續(xù)的操作。
讀完P(guān)aper后,第一遍實(shí)現(xiàn)MMoE時(shí)并沒有發(fā)現(xiàn)什么問題。后面和同事討論,我們感覺Gate模塊本質(zhì)上就是一個(gè)對專家輸出進(jìn)行加權(quán)融合的模塊,那這個(gè)模塊為何不用主流的Attention來實(shí)現(xiàn)一下呢?
于是,我們修改了MMoE Gate層的結(jié)構(gòu),為每個(gè)任務(wù)隨機(jī)設(shè)置了一個(gè)Context向量,作為Attention模塊的Query,用Context與MMoE專家的輸出計(jì)算相似度,根據(jù)相似度對于專家輸出進(jìn)行加權(quán)。修改后的模型,在我們的場景下,在多個(gè)任務(wù)上的評價(jià)指標(biāo)居然高于原生的MMoE Gate層不少。
這件事情讓我萌發(fā)了再深入思考一下Attention機(jī)制的想法!
2. “樸素”的Attention思想
如果用一句話來描述Attention機(jī)制的作用,你會(huì)怎么選擇?
Attention機(jī)制的作用就是對信息進(jìn)行更好地加權(quán)融合。
我們來看下這句話的關(guān)鍵詞。其實(shí)就兩個(gè),第一,信息;第二,加權(quán)融合。
這兩個(gè)詞怎么來理解呢?
“信息”。深度學(xué)習(xí)里的信息,無非就是特征,隱藏層的輸出。
2. “加權(quán)融合”。這個(gè)也比較好理解,我們可能通過不同的方式獲取了幾組信息后,并非簡單地將這幾組信息直接進(jìn)行concat或者直接相加,而是根據(jù)每組信息的重要性,為其賦予一個(gè)權(quán)重,再按照權(quán)重求和。
從這個(gè)角度上來看,Attention機(jī)制人如其名——注意力機(jī)制,表現(xiàn)了對信息重要性程度的關(guān)注。Attention作為深度學(xué)習(xí)的一個(gè)組件,其實(shí)是通過信息加權(quán)融合的方式,目的是為了讓網(wǎng)絡(luò)獲取更好的特征表達(dá)。
Attention的例子在生活中比比皆是。
男生:多喝熱水。
女生:你怎么就知道讓我喝熱水,啥也不是!
因?yàn)榕榫w比較激動(dòng),可能忽略了平時(shí)男生對她也是體貼的,導(dǎo)致一個(gè)臨時(shí)事件的權(quán)重急速上升,權(quán)重失衡就生氣了(當(dāng)然男生也有問題O(∩_∩)O~)。
再比如說,“顏狗”這個(gè)詞,說的就是你對于人評價(jià)的Attention權(quán)重過多分配在對方的顏值上,又是一個(gè)Attention機(jī)制沒有train好的例子。= =當(dāng)然,如果“顏值”這個(gè)Value更適合你的Query就當(dāng)我沒說。
大白話講完了,為了讓文章顯得更加直觀和科學(xué)一點(diǎn),我們來簡單看下Attention的計(jì)算方式。
通常的文章在介紹Attention機(jī)制的時(shí)候往往是和Encoder-Decoder架構(gòu)放在一起來講,我感覺多一些影響因素反而會(huì)影響理解。因此,我們拋離Encoder-Decoder架構(gòu)來看看Attention機(jī)制。
我們先看看下面的圖,

圖2,Q, K, V
Value1到4是我們要用來加權(quán)的信息,類比搜索系統(tǒng)中的文檔內(nèi)容。 Key1到4是用于檢索Value的“索引”,與Value一一對應(yīng),類比搜索系統(tǒng)中的文檔摘要或者文檔關(guān)鍵詞。 Query是用來檢索Key的信息,我們通過計(jì)算Q與各個(gè)K的“相似”或者說“匹配”程度,得到每個(gè)V對應(yīng)的權(quán)重,根據(jù)權(quán)重對V進(jìn)行加和。
用數(shù)學(xué)語言來描述,通過Query與Key逐一計(jì)算“相似度”,得到相似度權(quán)重a,使用a對于Value進(jìn)行加權(quán)得到最終的輸出。

3. Attention相關(guān)的有趣工作
3.1 Hierarchical Attention Networks
《Hierarchical Attention Networks for Document Classification》本文的應(yīng)用場景是文檔分類,本質(zhì)上還是使用了Attention作為基礎(chǔ)組件,但是讓Attention的建模具有了層級結(jié)構(gòu):

圖3,Hierarchical Attention Networks網(wǎng)絡(luò)結(jié)構(gòu)
文檔由句子組成,句子由單詞組成,這是一個(gè)兩層結(jié)構(gòu)。
對于每個(gè)句子,通過Attention獲取到每個(gè)單詞的注意力權(quán)重,并詞級別信息進(jìn)行加權(quán),最終獲得句子的特征表示。 對于每個(gè)文檔,通過Attention獲取到每個(gè)句子的注意力權(quán)重,并句子級別信息進(jìn)行加權(quán),最終獲得文檔的特征表示。
具體做法為:
首先,設(shè)置兩個(gè)context向量:?
?是詞語級別的context vector;?
?是句子級別的context vector。從句子的層面來看,針對每一個(gè)句子,用雙向GRU建模,計(jì)算出每個(gè)詞語的hidden vector。用
與hidden vector通過內(nèi)積計(jì)算相似度作為每個(gè)詞語的權(quán)重,加權(quán)以后就可以產(chǎn)生整個(gè)sentence的表示。從document層面來看(hierarchical),針對每個(gè)document,對每個(gè)句子使用雙向GRU建模,同上使用
來獲取句子的權(quán)重,加權(quán)以后就可以產(chǎn)生整個(gè)document的表示。
思想很簡單,結(jié)果很驚艷。

圖4,Hierarchical Attention Networks模型效果
3.2 Self-attention & multi-head attention
這個(gè)可能大家更熟悉一些,《Attention is all you need》中明確提出的思想,并成為Bert等預(yù)訓(xùn)練模型的基礎(chǔ)框架。

圖5,Self-Attention和Multi-head attention
Self-Attention的提出是為了對句子信息進(jìn)行更好的建模,讓每個(gè)詞中,都可以更好地融入其他單詞的信息。

而多頭Attention則是Concat了多組Self-attention的結(jié)果。

網(wǎng)上關(guān)于multi-head attention詳細(xì)描述比較多,在此就不展開贅述了,簡單推薦一篇文章:
《Attention is All You Need》淺讀(簡介+代碼)
https://spaces.ac.cn/archives/4765/comment-page-1
同時(shí),大家可以關(guān)注一下這個(gè)不錯(cuò)的問題
為什么Transformer 需要進(jìn)行 Multi-head Attention?
https://www.zhihu.com/question/341222779/answer/814111138
Multi-head attention基本已經(jīng)成為NLP領(lǐng)域的標(biāo)配框架了,且在推薦領(lǐng)域有較好的應(yīng)用場景,一個(gè)最簡單的轉(zhuǎn)化就是AutoInt(《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》)了,直接用Multi-head attention去對CTR問題進(jìn)行建模。AutoInt在我們的嘗試中,效果較好,建議大家可以關(guān)注。

圖6,AutoInt網(wǎng)絡(luò)結(jié)構(gòu)
3.3 Multi-Head Attention with Disagreement Regularization
如果在Multi-Head Attention中設(shè)置多個(gè)頭是為了讓模型關(guān)注不同的信息角度,但是在具體的實(shí)踐中會(huì)發(fā)現(xiàn):如果讓每個(gè)attention的頭原生地自發(fā)生長會(huì)可能導(dǎo)致信息冗余的發(fā)生——多個(gè)頭提取的特征比較一致。

圖7,Bert Head可視化情況《A Multiscale Visualization of Attention in the Transformer Model》https://arxiv.org/pdf/1906.05714.pdf
如上圖所示,第三層的1, 2,3,4等幾個(gè)Head學(xué)習(xí)結(jié)果高度相似。那么有沒有辦法來提升不同Head的學(xué)習(xí)能力呢?
《Multi-Head Attention with Disagreement Regularization》一文中,希望通過對不同的Head加正則的方式,來提升不同Head學(xué)習(xí)的差異性。
原文中,添加了三種類型的正則:
a. Disagreement on Subspaces (Sub.)——增大不同Head的Value空間中,Value的差異

b. Disagreement on Attended Positions (Pos.)——增大不同的Head中,注意力權(quán)重的差異

c. Disagreement on Outputs (Out.)——直接增加不同的Head的輸出的差異

最終,在NMT任務(wù)中,基于正則的多頭Attention取得了優(yōu)于Base的普通多頭Attention的效果。

圖8,《Multi-Head Attention with Disagreement Regularization》模型效果
3.4 Attention的長程依賴問題
我們在計(jì)算Attention時(shí),與RNN,CNN一樣,也存在長程依賴問題。
這里有一篇比較RNN,CNN,Transfomer長程依賴和效果的比較的論文供大家參考。
https://www.aclweb.org/anthology/D18-1458.pdf
在《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》中提出了Transfomer-XL模型,提出了一種相對位置編碼的方式,相對于Base的Transfomer模型效果略有提升,但是相應(yīng)地參數(shù)量增大。
文中提出了跨相鄰兩個(gè)區(qū)域的attention來解決長程依賴依賴的問題,使得Transfomer可以提取更長文本的信息。

圖8,Vanilla Attention處理長程依賴

圖9,Transformer-XL處理長程依賴
Transfomer-XL只能用于單向語言建模,后續(xù)在XLNet(效果優(yōu)于Bert)中,為了使其可以解決雙向上下文的建模的問題,作者提出了排列語言模型。
4. What's more
4.1 從“信息”層面
4.1.1 信息采集的區(qū)域——Global Attention VS Local Attention
Global Attention將會(huì)計(jì)算Q與所有K的相似性關(guān)系,并對所有Value進(jìn)行加權(quán),而Local Attention會(huì)先定位到一定的窗口,然后再對窗口內(nèi)的K計(jì)算相似性關(guān)系,對窗口內(nèi)的Value進(jìn)行加權(quán)。
4.1.2 信息的線性——線性加權(quán)信息 VS 非線性加權(quán)信息
我們的“樸素的”Attention模型,如Hierarchical Attention Networks中的Attention中其實(shí)只是對信息V進(jìn)行了線性的加權(quán)。
反觀Self-Attention中,每個(gè)V都會(huì)通過全連接(非線性地)映射到一個(gè)新的空間,然后在根據(jù)Q與K的相似性進(jìn)行加權(quán),這種先將Value非線性映射后再加權(quán)的方式是不是好呢?我們不得而知,這個(gè)選擇需要結(jié)合具體任務(wù)來實(shí)踐。
4.1.3 信息的交互性
在推薦領(lǐng)域,從最早的LR模型只能提取一階特征,并依靠經(jīng)驗(yàn)進(jìn)行二階的特征組合;到FM模型提取二階特征;再到DCN、xDeepFM等號稱可以顯式提取高階特征的推薦模型,我們可以發(fā)現(xiàn),在推薦領(lǐng)域非常在意特征交互。
在Attention中,不同V在進(jìn)行加權(quán)之前,Q和V在計(jì)算相似性之前,進(jìn)行信息和特征的交互是否是有用的呢?我們不得而知,也需要結(jié)合具體任務(wù)來實(shí)踐。
在DIN中,廣告信息和用戶側(cè)信息在進(jìn)行Attention之前有一個(gè)out product的操作,然后將廣告信息,用戶側(cè)信息,Product信息三者Concat在一起之后,進(jìn)行Attention。這個(gè)操作的效果筆者暫時(shí)沒有考慮清楚,有熟悉的小伙伴可以在評論區(qū)進(jìn)行討論~

圖10,DIN模型
4.2 從“加權(quán)融合”層面
4.2.1 權(quán)重的計(jì)算方法
關(guān)于Q和K相似度的計(jì)算方法,這里有一份總結(jié),我覺得還不錯(cuò),大家可以參考一下。

圖11,Attention相似度計(jì)算方式,https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html#summary
5. 總結(jié)
Attention機(jī)制的本質(zhì)就是對信息進(jìn)行更好地加權(quán)融合。 信息可以用非線性進(jìn)行變換,QKV之間可以進(jìn)行特征交互,可以選擇加權(quán)信息的區(qū)域。 在加權(quán)融合的時(shí)候可以采用多種方式計(jì)算相似度
這就是本文核心的三句話啦,讀完本文之后,你理解了么~
參考文獻(xiàn)
Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1930-1939.
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.
Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
Li J, Tu Z, Yang B, et al. Multi-head attention with disagreement regularization[J]. arXiv preprint arXiv:1810.10183, 2018.
Vig J. A multiscale visualization of attention in the transformer model[J]. arXiv preprint arXiv:1906.05714, 2019.
Song, Weiping, et al. "Autoint: Automatic feature interaction learning via self-attentive neural networks."Proceedings of the 28th ACM International Conference on Information and Knowledge Management. 2019.
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.
Tang G, Müller M, Rios A, et al. Why self-attention? a targeted evaluation of neural machine translation architectures[J]. arXiv preprint arXiv:1808.08946, 2018
Zhou G, Zhu X, Song C, et al. Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1059-1068.
https://spaces.ac.cn/archives/4765/comment-page-1
為什么Transformer 需要進(jìn)行 Multi-head Attention?
https://zhuanlan.zhihu.com/p/106662375
Attention? Attention!
推薦閱讀

