1. 作者以及單位
Tianyang Lin(復(fù)旦邱錫鵬組)
2. 解決問題
對各種各樣的 Transformer 變體(又名 X-former)分了2類4種優(yōu)化派別:
2.1 原版類 Transformer。
2.2 變種 X-former類:2.2.1架構(gòu)修改、2.2.2預(yù)訓(xùn)練劫拢、2.2.3應(yīng)用盏求。
下面是4種類的對應(yīng)的文章:
3. 研究動機(jī)
這應(yīng)該是第一篇關(guān)于Transformers結(jié)構(gòu)的綜述(之前有類似A Survey on Visual Transformer训裆、Efficient Transformers: A Survey類似的文章)撼唾。但是本文注重是結(jié)構(gòu)坎背,主要?jiǎng)訖C(jī)是把變種X-former根據(jù)優(yōu)化目的分了3類。這3類比較有概括性赔硫。
模型效率。應(yīng)用 Transformer 的一個(gè)關(guān)鍵挑戰(zhàn)是其處理長序列的效率較低盐肃,這主要是由于 self-attention 的計(jì)算和內(nèi)存復(fù)雜性爪膊。改進(jìn)方法包括輕量化注意力模塊(例如稀疏注意力)和分而治之的方法(例如循環(huán)和分層機(jī)制)权悟。
模型泛化。由于 Transformer 是一種靈活的架構(gòu)推盛,并且對輸入數(shù)據(jù)的結(jié)構(gòu)偏差幾乎沒有假設(shè)峦阁,因此很難在小規(guī)模數(shù)據(jù)上進(jìn)行訓(xùn)練。改進(jìn)方法包括引入結(jié)構(gòu)偏差或正則化耘成,對大規(guī)模未標(biāo)記數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練等拇派。我看BERT(時(shí)序優(yōu)化)都在這一層。
模型適配凿跳。這一系列工作旨在使 Transformer 適應(yīng)特定的下游任務(wù)和應(yīng)用程序件豌。
根據(jù)以上3個(gè)方面,改進(jìn)原版 Transformer 的方式提出新的分類法控嗜,架構(gòu)修改茧彤,預(yù)訓(xùn)練和應(yīng)用。
4. 研究方法
下面就按照4個(gè)種類:2.1原版疆栏,2.2架構(gòu)修改曾掂,2.3預(yù)訓(xùn)練,2.4應(yīng)用壁顶,分別講究規(guī)律(左是原版珠洗,右是架構(gòu)修改,預(yù)訓(xùn)練若专,應(yīng)用)许蓖。
4.1原版Attention
原版我準(zhǔn)備掰開揉碎了說一下,把Attention和Transformer關(guān)系也說一下(Transformer中一共使用了三次Attention)调衰。
本部分分兩節(jié):第一部分介紹一下Transformers之前的Attention是怎么演變過來的(我發(fā)現(xiàn)很多分析這個(gè)文章的blog都沒有介紹清楚)膊爪。第二部分在說transformer在文章中談到的問題。
4.1.1 Attention到底是什么
Attention的經(jīng)典定義嚎莉,是來源于Attention is all you need這篇曠世奇作(Transformer也是這個(gè)文章提出的)米酬。這個(gè)公式看似復(fù)雜,但是理解了之后就會發(fā)現(xiàn)非常的簡單和基本趋箩。先講一下每個(gè)字母的含義赃额。字面意思:Q表示query,表示的是K表示key叫确,V表示value跳芳, 是K的維度。如果類比QKV在推薦系統(tǒng)中:在淘寶買東西启妹,key就是淘寶數(shù)據(jù)庫中所有的商品信息筛严,query就是你最近關(guān)注到的商品信息,比如高跟鞋饶米、緊身褲桨啃,value就是推送給你的商品信息车胡。這個(gè)例子比較的具體,但是往往在人工智能運(yùn)用中照瘾,key匈棘,query,value都是隱變量特征析命。因此主卫,他們的含義往往不那么顯然,我們需要把握的是這種計(jì)算結(jié)構(gòu)鹃愤。
回到公式本身簇搅,這個(gè)公式本質(zhì)上就是表示按照關(guān)系矩陣進(jìn)行加權(quán)平均。關(guān)系矩陣就是 软吐,而softmax就是把關(guān)系矩陣歸一化到概率分布瘩将,然后按照這個(gè)概率分布對V進(jìn)行重新采樣,最終得到新的attention的結(jié)果凹耙。
拆開看的話主要有以下幾個(gè)模塊(重點(diǎn)是2和3):
- 左右分別是encoder(enc)和decoder(dec)姿现。encoder對輸入序列進(jìn)行編碼,即變成肖抱;decoder對進(jìn)行解碼备典,得到。但encoder和decoder都不用RNN意述,而且換成了多個(gè)attention提佣。
- enc和dec的底部是embedding;而embedding又分為兩部分:input embedding和positional embedding欲险;其中input embedding就是seq2seq中的embedding镐依。而為什么要positional embedding呢匹涮?因?yàn)閠ransformer中只有attention天试;回想一下attention,任意一對(query, key)的計(jì)算都是完全一樣的然低,不像CNN和RNN喜每,有一個(gè)位置或者時(shí)序的差異:CNN框住一塊區(qū)域,隨著卷積核移動雳攘,邊緣的少量點(diǎn)會跟著有序變化带兜;因此為了體現(xiàn)出時(shí)序或者在序列中的位置差異,要對input加入一定的位置信息吨灭,即positional embedding刚照。
- enc和dec的中部分別是兩個(gè)block,分別輸入一個(gè)序列喧兄、輸出一個(gè)序列无畔;這兩個(gè)block分別重復(fù)N次啊楚。enc的每個(gè)block里有兩個(gè)子網(wǎng),分別是multihead attention和feedforward network(ffn)浑彰;dec的block里有三個(gè)子網(wǎng)恭理,分別是兩個(gè)multihead attention和一個(gè)ffn。這些子網(wǎng)后面都跟了一個(gè)add&norm郭变,即像resnet一樣加一個(gè)跳邊颜价,然后做一個(gè)layer norm。難理解是ffn和multihead attention诉濒。先說ffn:就是對一個(gè)輸入序列周伦,對每個(gè)進(jìn)行一次channel的重組,512→2048→512未荒,也可以理解為對整個(gè)序列做一個(gè)1X1的卷積 横辆。再說*multihead attention:原始的attention, 就是一個(gè)query (以下簡稱Q) 和一組key (以下簡稱K) 算相似度, 然后對一組value (以下簡稱V) 做加權(quán)和; 假如每個(gè)Q和K都是512維的向量, 那么這就相當(dāng)于在512維的空間里比較了兩個(gè)向量的相似度. 而multihead就相當(dāng)于把這個(gè)512維的空間人為地拆成了多個(gè)子空間, 比如head number=8, 就是把一個(gè)高維空間分成了8個(gè)子空間, 相應(yīng)地V也要分成8個(gè)head; 然后在這8個(gè)子空間里分別計(jì)算Q和K的相似度, 再分別組合V. 這樣可以讓attention能從多個(gè)不同的角度進(jìn)行結(jié)合, 這對于NMT是很有幫助的,
- dec最后還有一個(gè)linear和softmax。這個(gè)就無需解釋了茄猫。
我起初一直沒有看懂Attention上面那個(gè)圖狈蚤,為什么左邊是Encoder?右邊是Decoder划纽,他輸入輸出走勢為什么這樣的脆侮?我覺得看下面圖就明白了,Decoder生成輸出序列的過程是逐個(gè)進(jìn)行的勇劣,已經(jīng)生成的子序列會指導(dǎo)新的item的生成靖避。如圖所示,輸入的序列是法語的我是一個(gè)學(xué)生比默,翻譯成英語的時(shí)候, Decoder的輸入是Encoder的輸出幻捏,輸出第一個(gè)item “I”,然后再將 I 和Encoder的輸出輸入到Decoder命咐,輸出“am”篡九,之后依次類推。所以醋奠,圖中Decoder的輸入有兩個(gè)榛臼,一個(gè)是output embedding,另外一個(gè)是Encoder的輸出窜司。
很多文章都說Attention吊打cnn沛善,總結(jié)一下有2個(gè)優(yōu)勢的原因:
1.Attention比recurrent相比,需要的序列操作變成了O(1)塞祈,而卷積是O(log(n))金刁,典型的計(jì)算機(jī)內(nèi)犧牲空間換時(shí)間的想法,由于計(jì)算結(jié)構(gòu)的改進(jìn)(如加約束、共享權(quán)重)和硬件的提升尤蛮,這點(diǎn)空間并不算什么漠秋。
2.Attention是可以有比CNN更好的解釋性的。CNN的解釋性不高抵屿,大家都知道庆锦,但是剛剛粗體說了attention是對V的加權(quán)分析,天然就具有解釋性的屬性轧葛。
在說說本文對self-Attention缺點(diǎn)的分析搂抒,說了2點(diǎn)挑戰(zhàn):
- 復(fù)雜性。self-attention 的復(fù)雜度是尿扯。因此求晶,在處理長序列時(shí) Attention 模塊會成為瓶頸。
- 結(jié)構(gòu)先驗(yàn)衷笋。Self-attention 不假設(shè)對輸入有任何結(jié)構(gòu)性偏見(我覺得這一點(diǎn)很重要)芳杏。甚至順序信息也需要從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)。因此辟宗,無預(yù)訓(xùn)練的 Transformer 通常很容易在小型或中等規(guī)模的數(shù)據(jù)上過擬合爵赵。
4.1.2 Transformer機(jī)制的改進(jìn)方向
原文針對以上調(diào)整有6點(diǎn)建議(具體可以看原文):
- 稀疏注意力。這一系列工作將稀疏偏差引入 Attention 機(jī)制泊脐,從而降低了復(fù)雜性空幻。
- 線性化注意力。這一系列工作將注意力矩陣與核特征圖分解容客,然后以相反的順序計(jì)算注意力以實(shí)現(xiàn)線性復(fù)雜度秕铛。
- 原型和內(nèi)存壓縮。這類方法減少了查詢或鍵值記憶對的數(shù)量缩挑,以減少注意力矩陣的大小但两。
- 低秩的自注意力。這一系列工作捕獲了 Self-attention 的低秩屬性供置。
- 先驗(yàn)注意力谨湘。該研究領(lǐng)域探索用先驗(yàn)的注意力分布來補(bǔ)充或替代標(biāo)準(zhǔn)注意力。
- 改進(jìn)的多頭機(jī)制士袄。這一系列工作探索了多個(gè)不同的多頭(Multi-head)機(jī)制悲关。
1-4我都沒有看太懂(或者我感覺提升可能甚微),主要說說5和6娄柳。
先驗(yàn)注意力:之前提過注意力機(jī)制通常將預(yù)期的注意力值輸出為向量的加權(quán)和。作為一般情況艘绍,注意力分布也可以來自其他來源赤拒,我們稱之為先驗(yàn)的。預(yù)先注意分布可以補(bǔ)充或替代輸入產(chǎn)生的分布。我們將注意力的這種表述抽象為具有先驗(yàn)的注意力挎挖,如圖所示这敬。在大多數(shù)情況下,兩個(gè)注意力分布的融合可以通過在應(yīng)用 softmax 之前計(jì)算對應(yīng)于先驗(yàn)注意力和生成注意力的分?jǐn)?shù)的加權(quán)和來完成蕉朵。優(yōu)化方式有:模型位置先驗(yàn)崔涂、從下層模塊先驗(yàn)、多任務(wù)適配器先驗(yàn)和僅注意力先驗(yàn)始衅。
改進(jìn)的多頭機(jī)制:多頭(Multi-head)注意力的吸引力在于能夠共同關(guān)注來自不同位置的不同表示子空間的信息冷蚂。然而,沒有機(jī)制可以保證不同的注意力頭確實(shí)捕捉到不同的特征汛闸。所有有:頭部行為建模蝙茶、跨度受限的多頭和精細(xì)聚合的多頭行為。
除此之外诸老,還可以做:調(diào)整位置表示(Transformer 中的自注意力模塊和位置前饋層都是置換等變的隆夯,這可能在建模時(shí)成為一個(gè)問題,而不是需要輸入結(jié)構(gòu)的集合輸入問題别伏。例如蹄衷,在對文本序列建模時(shí),單詞的順序很重要厘肮,因此在 Transformer 架構(gòu)中正確編碼單詞的位置至關(guān)重要)宦芦。層歸一化(Layer Normalization, LN)以及殘差連接被認(rèn)為是一種穩(wěn)定深度網(wǎng)絡(luò)訓(xùn)練的機(jī)制(例如,減輕不適定梯度和模型退化)轴脐。位置前饋網(wǎng)絡(luò) (FFN) 層對于 Transformer 實(shí)現(xiàn)良好性能很重要调卑,可以換FFN 中的激活函數(shù),調(diào)整 FFN 以獲得更大容量大咱,刪除 FFN 層(我感覺提升不大)恬涧。
4.2架構(gòu)
在原文中羅列了好幾種架構(gòu)修改方法,畢竟是綜述碴巾,把問題說全很重要溯捆。但是有一些,在推薦系統(tǒng)厦瓢,或者算法解決上用不上提揍,我把架構(gòu)的修改方法簡單分為兩類:功能性修改操作和分治策略。
4.2.1 功能性修改(我覺得推薦系統(tǒng)用不上的)
有的功能性使 Transformer 輕量化煮仇,適合移動設(shè)備劳跃。 有的加強(qiáng)跨塊連接,在相鄰的 Transformer 塊之間創(chuàng)建了一條前向路徑浙垫。有的自適應(yīng)計(jì)算時(shí)間刨仑,目的減少的計(jì)算時(shí)間來提取特征郑诺。
4.2.2 分治策略(我覺得推薦系統(tǒng)用的上的)
長序列的有效方法是使用分治策略,即將輸入序列分解為可以由 Transformer 或 Transformer 模塊有效處理的更細(xì)段杉武。有兩類有代表性的方法辙诞,循環(huán)和分層 Transformer,如圖所示轻抱。這些技術(shù)可以被理解為 Transformer 模型的包裝器飞涂,其中 Transformer 作為一個(gè)基本組件,被重用以處理不同的輸入段祈搜。
(a)循環(huán) Transformer:在循環(huán) Transformer 中较店,會維護(hù)一個(gè)緩存以合并歷史信息。在處理一段文本時(shí)夭问,網(wǎng)絡(luò)從緩存中讀取作為附加輸入泽西。處理完成后,網(wǎng)絡(luò)通過簡單地復(fù)制隱藏狀態(tài)或使用更復(fù)雜的機(jī)制來寫入內(nèi)存(很多時(shí)序的文章講這個(gè)TI-SASR)缰趋。
(b)分層 Transformer:分層 Transformer (論文HIBERT就屬于這種)將輸入分層分解為更細(xì)粒度的元素捧杉。低級特征首先被送到 Transformer 編碼器,產(chǎn)生輸出表示秘血,然后聚合(使用池化或其他操作)以形成高級特征味抖,然后由高級 Transformer 處理。這類方法可以理解為一個(gè)層次抽象的過程灰粮。這種方法的優(yōu)點(diǎn)有兩個(gè):1)分層建模允許模型以有限的資源處理長輸入仔涩;2)它有可能產(chǎn)生更豐富的對任務(wù)有益的表征。
4.3預(yù)訓(xùn)練Pre-Train-Model(PTM)
Transformer 不對數(shù)據(jù)的結(jié)構(gòu)做出任何假設(shè)(例如粘舟,卷積假設(shè)數(shù)據(jù)是二維的)熔脂,優(yōu)點(diǎn)是有效地使 Transformer 成為一種非常通用的架構(gòu),具有捕獲不同范圍依賴關(guān)系的潛力柑肴。缺點(diǎn)是使得 Transformer 在數(shù)據(jù)有限時(shí)容易過擬合霞揉。緩解此問題的一種方法是在模型中引入歸納偏置。
歸納偏置(預(yù)訓(xùn)練PTM)有以下方法:
- 僅 Encoder晰骑。大名鼎鼎的BERT是典型的 PTM适秩。
- 僅 Decoder。大規(guī)模 PTM 可以通過將任務(wù)和示例作為構(gòu)造提示輸入模型來在低資源場景下實(shí)現(xiàn)不錯(cuò)的功能硕舆。
- Encoder-Decoder秽荞。使用 Encoder-Decoder 架構(gòu)的好處是,誘導(dǎo)模型具備執(zhí)行自然語言理解和生成的能力抚官。
4.4應(yīng)用
還有一些綜合修改扬跋,我覺得其實(shí)和上面架構(gòu)訓(xùn)練比較有重合,例如NLP的BERT耗式,CV的DERT胁住,多媒體的VLBERT趁猴,推薦系統(tǒng)的DIN等刊咳。
5. 創(chuàng)新點(diǎn)
文章很長彪见,由于是survey,每個(gè)人看創(chuàng)新點(diǎn)都是帶著自己的問題看娱挨,所以各不同余指,我談?wù)勍扑]系統(tǒng)下從這個(gè)文章的啟發(fā)。
1.把 Transformer 分了2類4種跷坝。如果只保留干貨酵镜,這個(gè)文章主要談了3種:基本 Transformer模型哪些點(diǎn)可以優(yōu)化(把 Transformer 當(dāng)成山,每個(gè)優(yōu)化的點(diǎn)是石頭)柴钻、 Transformer 的架構(gòu)修改(把 Transformer 當(dāng)成山淮韭,每個(gè)優(yōu)化的點(diǎn)是山峰)、Transformer 預(yù)訓(xùn)練處理(把 Transformer 當(dāng)成山贴届,每個(gè)優(yōu)化的點(diǎn)又是一座山)靠粪。優(yōu)化的目的是:效率,泛化和適配(我覺得推薦系統(tǒng)主要關(guān)注是效率)毫蚓。這一點(diǎn)還是很重要占键,基本定了未來所有Transformer 優(yōu)化歸類的思路。
2.首先元潘,確定一點(diǎn)畔乙,Transformer 的核心是利用QK矩陣的softmax是概率分布,對V的加權(quán)平均翩概。默認(rèn)Transformer 對輸入有任何結(jié)構(gòu)性偏見牲距,甚至順序信息也需要從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)。因此钥庇,無預(yù)訓(xùn)練的 Transformer 通常很容易在小型或中等規(guī)模的數(shù)據(jù)上過擬合牍鞠。所以可以探索用先驗(yàn)的Attention分布來補(bǔ)充或替代標(biāo)準(zhǔn)Attention分布(這里的“標(biāo)準(zhǔn)Attention分布”說的是)。
- 架構(gòu)的修改上沐,這個(gè)survey主要談了分治策略皮服。就跟CNN可以搭建起非常厲害的檢測模型或者更高級的模型一樣,attention的最厲害的地方参咙,是它可以作為基本模塊搭建起非常復(fù)雜的模型龄广。結(jié)合其他文章舉兩個(gè)例子:
首先是全局attention和部分attention。全局attention就是上面講的基本attention蕴侧,部分attention主要是還允許某些特征在做attention之前先做融合择同,再進(jìn)一步attention。如swintransformer净宵。
其次是hard attention和soft attention敲才。之前我們講的基本都是soft attention裹纳。但是站到采樣的角度來講,可以考慮hard attention紧武,把概率當(dāng)成一個(gè)分布剃氧,然后再進(jìn)行多項(xiàng)式采樣。這個(gè)或許在強(qiáng)化學(xué)習(xí)里面阻星,有啟發(fā)性作用朋鞍。
4.Transformer 預(yù)訓(xùn)練處理方面(和第二點(diǎn)先驗(yàn)區(qū)別是,這里“預(yù)”主要關(guān)注的點(diǎn)是Encoder和Decoder)如推薦系統(tǒng)里面的阿里寫的BERT4REC妥箕。BERT的全稱是Bidirectional Encoder Representations from Transformer滥酥,從名稱上可以看出來BERT從Transformer中取Encoder部分,進(jìn)行Bidirectional Representation的representation learning畦幢。BERT的作用類似CNN, 扮演的是feature extractor提取的角色坎吻,阿里這個(gè)文章很長,這里就說結(jié)論:BERT的輸出中宇葱,不同的mask會有不同的embedding瘦真,該mask的增強(qiáng)后embedding,含有豐富的context信息贝搁,對增強(qiáng)后embedding放到softmax 預(yù)測性能提高了吗氏。因?yàn)轭A(yù)測被mask的詞是從序列的前后雙向獲得的信息,不是單向從左往右或者從右往左的雷逆,所以這也是BERT中bidirectional的來歷弦讽。
總結(jié)一下:在看基本模型有哪些值得優(yōu)化的(灌水)的點(diǎn)基本跳不出這個(gè)創(chuàng)新點(diǎn)框架。要不是不改架構(gòu)膀哲,對默認(rèn)模型進(jìn)行防止過擬合的優(yōu)化往产;要不組合起來優(yōu)化,采樣上動動腦筋某宪;最后是Encoder和Decoder上比原來更豐富仿村。
6. 結(jié)論
當(dāng)前的關(guān)注點(diǎn)(例如效率和泛化)之外,Transformer 的進(jìn)一步改進(jìn)可能在于以下幾個(gè)方向:
理論分析兴喂。Transformer 的架構(gòu)已被證明能夠支持具有足夠參數(shù)的大規(guī)模訓(xùn)練數(shù)據(jù)集蔼囊。許多工作表明,Transformer 具有比 CNN 和 RNN 更大的容量衣迷,因此具有處理大量訓(xùn)練數(shù)據(jù)的能力畏鼓。當(dāng) Transformer 在足夠的數(shù)據(jù)上進(jìn)行訓(xùn)練時(shí),它通常比 CNN 或 RNN 具有更好的性能壶谒。一個(gè)直觀的解釋是 Transformer 對數(shù)據(jù)結(jié)構(gòu)的先驗(yàn)假設(shè)很少云矫,因此比 CNN 和 RNN 更靈活。然而汗菜,理論原因尚不清楚让禀,我們需要對Transformer能力進(jìn)行一些理論分析挑社。
超越注意力的更好的全局交互機(jī)制。Transformer 的一個(gè)主要優(yōu)點(diǎn)是使用注意力機(jī)制來模擬輸入數(shù)據(jù)中節(jié)點(diǎn)之間的全局依賴關(guān)系巡揍。然而痛阻,許多研究表明,對于大多數(shù)節(jié)點(diǎn)來說吼肥,完全注意是不必要的录平。在某種程度上麻车,無法區(qū)分地計(jì)算所有節(jié)點(diǎn)的注意力是低效的缀皱。因此,在有效地對全局交互進(jìn)行建模方面仍有很大的改進(jìn)空間动猬。一方面啤斗,self-attention 模塊可以看作是一個(gè)具有動態(tài)連接權(quán)重的全連接神經(jīng)網(wǎng)絡(luò),它通過動態(tài)路由聚合非局部信息赁咙。因此钮莲,其他動態(tài)路由機(jī)制是值得探索的替代方法。另一方面彼水,全局交互也可以由其他類型的神經(jīng)網(wǎng)絡(luò)建模崔拥,例如記憶增強(qiáng)模型。
多模態(tài)數(shù)據(jù)統(tǒng)一框架凤覆。在許多應(yīng)用場景中链瓦,集成多模態(tài)數(shù)據(jù)對于提高任務(wù)性能是有用且必要的。此外盯桦,通用人工智能還需要能夠捕捉不同模態(tài)之間的語義關(guān)系慈俯。由于 Transformer 在文本、圖像拥峦、視頻和音頻方面取得了巨大成功贴膘,我們有機(jī)會構(gòu)建一個(gè)統(tǒng)一的框架,更好地捕捉多模態(tài)數(shù)據(jù)之間的內(nèi)在聯(lián)系略号。然而刑峡,模內(nèi)和跨模態(tài)注意力的設(shè)計(jì)仍有待改進(jìn)。