寫在前面: 本文是一篇關於深度學習中的 Attention機制 的文章。與之前的系列文章不同,本文並非定位於對Attention機制的各類框架和玩法進行綜述,因此不會花費過多的篇章去介紹Attention的發展歷史或數學計算方法;更多是簡單地介紹幾個Attention的代表性和有意思的工作,並去思考Attention機制的合理性,提出一些進一步的思考。
以下是本文的主要框架:
最近做了非常非常久的多任務學習工作(或許後面會整理一下),在嘗試到MMoE這個模型時,發現了一件有意思的事情。
我們知道,在MMoE模型中,專家層的下一層——Gate層的工作是針對不同的任務,對專家的輸出進行加權求和,使得不同任務按照自己的需要獲取不同專家的信息,最終目的應該是將不同專家提取到的特徵用一種更加無損的方式融合起來。
MMoE如下圖最右側的C模型,Gate A的工作是對專家0,1,2的輸出進行加權,並將加權之後的結果輸出給Tower A,用於A任務後續計算Logit。
圖1,MMoE模型結構,
在Gate A中採取了一種很有趣的方式來對專家0,1,2的方式進行加權融合:
專家0,1,2分別是從input處連接的全連接網絡。對於每個Tower(與Gate一一對應),從input處連接一個全連接網絡(網絡參數W的Size為input size * 3),並對這個全連接模塊的輸出進行Softmax。將Softmax後的結果作為權重,分別乘以專家0,1,2的輸出,作為加權融合後的結果,用作Tower A後續的操作。讀完Paper後,第一遍實現MMoE時並沒有發現什麼問題。後面和同事討論,我們感覺Gate模塊本質上就是一個對專家輸出進行加權融合的模塊,那這個模塊為何不用主流的Attention來實現一下呢?
於是,我們修改了MMoE Gate層的結構,為每個任務隨機設置了一個Context向量,作為Attention模塊的Query,用Context與MMoE專家的輸出計算相似度,根據相似度對於專家輸出進行加權。修改後的模型,在我們的場景下,在多個任務上的評價指標居然高於原生的MMoE Gate層不少。
這件事情讓我萌發了再深入思考一下Attention機制的想法!
2. 「樸素」的Attention思想如果用一句話來描述Attention機制的作用,你會怎麼選擇?
Attention機制的作用就是對信息進行更好地加權融合。
我們來看下這句話的關鍵詞。其實就兩個,第一,信息;第二,加權融合。
這兩個詞怎麼來理解呢?
「信息」。深度學習裡的信息,無非就是特徵,隱藏層的輸出。2. 「加權融合」。這個也比較好理解,我們可能通過不同的方式獲取了幾組信息後,並非簡單地將這幾組信息直接進行concat或者直接相加,而是根據每組信息的重要性,為其賦予一個權重,再按照權重求和。
從這個角度上來看,Attention機制人如其名——注意力機制,表現了對信息重要性程度的關注。Attention作為深度學習的一個組件,其實是通過信息加權融合的方式,目的是為了讓網絡獲取更好的特徵表達。
Attention的例子在生活中比比皆是。
男生:多喝熱水。
女生:你怎麼就知道讓我喝熱水,啥也不是!
因為女生情緒比較激動,可能忽略了平時男生對她也是體貼的,導致一個臨時事件的權重急速上升,權重失衡就生氣了(當然男生也有問題O(∩_∩)O~)。
再比如說,「顏狗」這個詞,說的就是你對於人評價的Attention權重過多分配在對方的顏值上,又是一個Attention機制沒有train好的例子。= =當然,如果「顏值」這個Value更適合你的Query就當我沒說。
大白話講完了,為了讓文章顯得更加直觀和科學一點,我們來簡單看下Attention的計算方式。
通常的文章在介紹Attention機制的時候往往是和Encoder-Decoder架構放在一起來講,我感覺多一些影響因素反而會影響理解。因此,我們拋離Encoder-Decoder架構來看看Attention機制。
我們先看看下面的圖,
圖2,Q, K, V
Value1到4是我們要用來加權的信息,類比搜索系統中的文檔內容。Key1到4是用於檢索Value的「索引」,與Value一一對應,類比搜索系統中的文檔摘要或者文檔關鍵詞。Query是用來檢索Key的信息,我們通過計算Q與各個K的「相似」或者說「匹配」程度,得到每個V對應的權重,根據權重對V進行加和。用數學語言來描述,通過Query與Key逐一計算「相似度」,得到相似度權重a,使用a對於Value進行加權得到最終的輸出。
3. Attention相關的有趣工作3.1 Hierarchical Attention Networks
《Hierarchical Attention Networks for Document Classification》本文的應用場景是文檔分類,本質上還是使用了Attention作為基礎組件,但是讓Attention的建模具有了層級結構:
圖3,Hierarchical Attention Networks網絡結構
文檔由句子組成,句子由單詞組成,這是一個兩層結構。
對於每個句子,通過Attention獲取到每個單詞的注意力權重,並詞級別信息進行加權,最終獲得句子的特徵表示。對於每個文檔,通過Attention獲取到每個句子的注意力權重,並句子級別信息進行加權,最終獲得文檔的特徵表示。具體做法為:
首先,設置兩個context向量: 是詞語級別的context vector; 是句子級別的context vector。
從句子的層面來看,針對每一個句子,用雙向GRU建模,計算出每個詞語的hidden vector。用與hidden vector通過內積計算相似度作為每個詞語的權重,加權以後就可以產生整個sentence的表示。
從document層面來看(hierarchical),針對每個document,對每個句子使用雙向GRU建模,同上使用來獲取句子的權重,加權以後就可以產生整個document的表示。
思想很簡單,結果很驚豔。
圖4,Hierarchical Attention Networks模型效果
3.2 Self-attention & multi-head attention
這個可能大家更熟悉一些,《Attention is all you need》中明確提出的思想,並成為Bert等預訓練模型的基礎框架。
圖5,Self-Attention和Multi-head attention
Self-Attention的提出是為了對句子信息進行更好的建模,讓每個詞中,都可以更好地融入其他單詞的信息。
而多頭Attention則是Concat了多組Self-attention的結果。
網上關於multi-head attention詳細描述比較多,在此就不展開贅述了,簡單推薦一篇文章:
《Attention is All You Need》淺讀(簡介+代碼)
https://spaces.ac.cn/archives/4765/comment-page-1
同時,大家可以關注一下這個不錯的問題
為什麼Transformer 需要進行 Multi-head Attention?https://www.zhihu.com/question/341222779/answer/814111138
Multi-head attention基本已經成為NLP領域的標配框架了,且在推薦領域有較好的應用場景,一個最簡單的轉化就是AutoInt(《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》)了,直接用Multi-head attention去對CTR問題進行建模。AutoInt在我們的嘗試中,效果較好,建議大家可以關注。
圖6,AutoInt網絡結構
3.3 Multi-Head Attention with Disagreement Regularization
如果在Multi-Head Attention中設置多個頭是為了讓模型關注不同的信息角度,但是在具體的實踐中會發現:如果讓每個attention的頭原生地自發生長會可能導致信息冗餘的發生——多個頭提取的特徵比較一致。
圖7,Bert Head可視化情況《A Multiscale Visualization of Attention in the Transformer Model》https://arxiv.org/pdf/1906.05714.pdf
如上圖所示,第三層的1, 2,3,4等幾個Head學習結果高度相似。那麼有沒有辦法來提升不同Head的學習能力呢?
《Multi-Head Attention with Disagreement Regularization》一文中,希望通過對不同的Head加正則的方式,來提升不同Head學習的差異性。
原文中,添加了三種類型的正則:
a. Disagreement on Subspaces (Sub.)——增大不同Head的Value空間中,Value的差異
b. Disagreement on Attended Positions (Pos.)——增大不同的Head中,注意力權重的差異
c. Disagreement on Outputs (Out.)——直接增加不同的Head的輸出的差異
最終,在NMT任務中,基於正則的多頭Attention取得了優於Base的普通多頭Attention的效果。
圖8,《Multi-Head Attention with Disagreement Regularization》模型效果
3.4 Attention的長程依賴問題
我們在計算Attention時,與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模型效果略有提升,但是相應地參數量增大。
文中提出了跨相鄰兩個區域的attention來解決長程依賴依賴的問題,使得Transfomer可以提取更長文本的信息。
圖8,Vanilla Attention處理長程依賴
圖9,Transformer-XL處理長程依賴
Transfomer-XL只能用於單向語言建模,後續在XLNet(效果優於Bert)中,為了使其可以解決雙向上下文的建模的問題,作者提出了排列語言模型。
4. What's more4.1 從「信息」層面
4.1.1 信息採集的區域——Global Attention VS Local Attention
Global Attention將會計算Q與所有K的相似性關係,並對所有Value進行加權,而Local Attention會先定位到一定的窗口,然後再對窗口內的K計算相似性關係,對窗口內的Value進行加權。
4.1.2 信息的線性——線性加權信息 VS 非線性加權信息
我們的「樸素的」Attention模型,如Hierarchical Attention Networks中的Attention中其實只是對信息V進行了線性的加權。
反觀Self-Attention中,每個V都會通過全連接(非線性地)映射到一個新的空間,然後在根據Q與K的相似性進行加權,這種先將Value非線性映射後再加權的方式是不是好呢?我們不得而知,這個選擇需要結合具體任務來實踐。
4.1.3 信息的交互性
在推薦領域,從最早的LR模型只能提取一階特徵,並依靠經驗進行二階的特徵組合;到FM模型提取二階特徵;再到DCN、xDeepFM等號稱可以顯式提取高階特徵的推薦模型,我們可以發現,在推薦領域非常在意特徵交互。
在Attention中,不同V在進行加權之前,Q和V在計算相似性之前,進行信息和特徵的交互是否是有用的呢?我們不得而知,也需要結合具體任務來實踐。
在DIN中,廣告信息和用戶側信息在進行Attention之前有一個out product的操作,然後將廣告信息,用戶側信息,Product信息三者Concat在一起之後,進行Attention。這個操作的效果筆者暫時沒有考慮清楚,有熟悉的小夥伴可以在評論區進行討論~
圖10,DIN模型
4.2 從「加權融合」層面
4.2.1 權重的計算方法
關於Q和K相似度的計算方法,這裡有一份總結,我覺得還不錯,大家可以參考一下。
圖11,Attention相似度計算方式,https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html#summary
5. 總結Attention機制的本質就是對信息進行更好地加權融合。信息可以用非線性進行變換,QKV之間可以進行特徵交互,可以選擇加權信息的區域。這就是本文核心的三句話啦,讀完本文之後,你理解了麼~
參考文獻
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 需要進行 Multi-head Attention?
https://zhuanlan.zhihu.com/p/106662375
Attention? Attention!