導(dǎo)語(yǔ)如果有人問(wèn)你,,Multi-Head-Attention的作用是什么?這個(gè)八股文一般的問(wèn)題相信大家也都司空見(jiàn)慣了,《Attention Is All You Need》這篇文章中作者解釋的原話是:將隱狀態(tài)向量分成多個(gè)頭,,形成多個(gè)子語(yǔ)義空間,可以讓模型去關(guān)注不同維度語(yǔ)義空間的信息,。不過(guò)真的是這樣的嗎,?如果是,這些子語(yǔ)義空間,、不同維度的語(yǔ)義空間信息到底指的是什么,? 本文欲對(duì)工作、學(xué)術(shù)中有可能出現(xiàn)的一些Multi-Head-Attention的疑問(wèn)進(jìn)行探討,,盡可能的用通俗 的語(yǔ)言和可視化的方法展現(xiàn)出Multi-Head-Attention的內(nèi)部運(yùn)作邏輯,,涉及問(wèn)題點(diǎn):
1.Self-Attention1.1 Attention矩陣應(yīng)該怎么讀,?一些文章里漫天飛舞的Attention矩陣的熱力圖,看的懵懵的,,到底應(yīng)該怎么理解,?比如'王者榮耀怎么玩’這句話某一頭的Attention矩陣熱力圖如下所示,該怎么理解,? 以ELMo為首的雙向LSTM,、RNN類(lèi)語(yǔ)言模型,LSTM擁有長(zhǎng)短時(shí)記憶門(mén)和循環(huán)輸入序列計(jì)算的機(jī)制,,可以關(guān)注到第i個(gè)單詞前的i-1個(gè)單詞的信息,,對(duì)文本進(jìn)行前向和后向的建模后,將前,、后向得到的隱狀態(tài)embedding拼接起來(lái)就可以得到第i個(gè)單詞的表達(dá),,這其實(shí)也做到了前后向信息的交互。 對(duì)同樣的4條query最后一層的多頭attention熱力圖也做了一個(gè)輸出,,如下: 可以看到,,第1~6、8,、10~12head的pattern在破壞了語(yǔ)法/句法/詞法前后都幾乎沒(méi)有任何改變: 只有7,、9發(fā)生了明顯預(yù)期的語(yǔ)法/詞法層面的注意力改變。詞法層面,,可以看到拆開(kāi)了“怎么”,、“王者”這樣的常見(jiàn)詞組,第7、9head詞語(yǔ)之間的注意力依然保持原來(lái)的相對(duì)水準(zhǔn)沒(méi)太大變化: 句法層面,,對(duì)于'王者榮耀怎么玩', '怎么玩王榮者耀'這兩句互為倒裝句的query: 可以看到第7個(gè)head,這兩句倒裝句的倒裝主體之內(nèi)的注意力是差不多的,,即紅框和綠框中的pattern在倒裝后依然后相似的pattern,,但是第9個(gè)head在倒裝后上下黃框和綠框之間的pattern就發(fā)生了比較明顯的變化。 筆者大量采樣query,,破壞語(yǔ)法/詞法結(jié)構(gòu)后觀察多頭pattern熱力圖,,發(fā)現(xiàn)這個(gè)規(guī)律非常明顯,因此可以說(shuō)明該BERT底層第7個(gè)head記錄下了語(yǔ)法和詞法層面的pattern,,第9個(gè)head只有詞法層面的pattern,。 那對(duì)于第1、3,、4,、5、11,、12這些頭就可以直接將其剪枝刪除掉或者只保留一個(gè)嗎,?很遺憾,筆者目前也沒(méi)辦法給出一個(gè)結(jié)論,,筆者更傾向于它們其實(shí)都有作用,,只能讓下游任務(wù)模型自己去甄別這些pattern。目前已經(jīng)有論文證明在機(jī)器翻譯等場(chǎng)景下剪枝掉某些head效果會(huì)更好:論文地址,。 2.2 可疑的大多數(shù)對(duì)于大多數(shù)沒(méi)怎么發(fā)生變化的pattern,,實(shí)在太奇怪了。筆者懷疑大部分head只是學(xué)習(xí)到了position embedding主導(dǎo)的相關(guān)信息,,即對(duì)于任何的query,,只要是這個(gè)位置,attention pattern是差不多的,,果然當(dāng)筆者把position embedding去掉后,,記錄了詞法、語(yǔ)法層面的第7,、9head的pattern幾乎沒(méi)怎么變,,而那些之前大部分一成不變的pattern,除了第5,、12head外都發(fā)生了劇烈的變化,,有的甚至開(kāi)始凸顯出了詞法信息和語(yǔ)法信息(比如4、6head): 2.3 多頭注意力初步的結(jié)論這里可以得到一個(gè)結(jié)論,,多頭attention的有些頭的功能是不一樣的,,有的頭可能沒(méi)啥信息(如第5head),有的頭pattern由位置信息主導(dǎo),有的頭由語(yǔ)法信息主導(dǎo),,有的頭由詞法信息主導(dǎo),,而能夠捕捉到語(yǔ)法/句法/詞法信息的頭其實(shí)是非常少的(這一點(diǎn)已被大量學(xué)術(shù)論文證明,筆者的句法破壞實(shí)驗(yàn)也驗(yàn)證了這一點(diǎn)),,但是為了保證這些pattern能夠被抽取出來(lái),,需要讓其有一定的頭的基數(shù),因?yàn)閱晤^很容易就變成自己注意力全在自己身上了,,這一點(diǎn)也可以從'以上pattern中大部分pattern都是自己關(guān)注自己’這個(gè)現(xiàn)象身上得到佐證。假如將12頭強(qiáng)行變成2頭,,注意力pattern就會(huì)變成如下這種自己注意自己的pattern,,因?yàn)?2個(gè)頭大部分pattern都是自己關(guān)注自己,向量拼接起來(lái)后token間的向量相似度會(huì)被大部分分量所裹挾,,因此也變成自己關(guān)注自己,。 從1.4和1.5我們可以知道,bert本身是不期望self-attention收斂到某一種固定pattern上的,,它期望可以捕捉到一些多樣化的pattern,,bert這類(lèi)語(yǔ)言模型,token的注意力很容易只看到自己,,出現(xiàn)只關(guān)注自己的pattern,,如下圖所示: 而我們更期望還能捕捉出這類(lèi)多樣的pattern出來(lái): 注意!這里并不是說(shuō)這種pattern就一定好,,也不是說(shuō)那種位置信息主導(dǎo)的pattern就一定不好,,只是說(shuō)我們期望捕捉更多的模式,從而利于下游多樣的任務(wù)微調(diào)時(shí),,一旦這類(lèi)pattern有用就可以激活出來(lái)讓下游任務(wù)可以學(xué)習(xí)到,,所以Transformer的角色定位是特征抽取器。所以多頭對(duì)一個(gè)向量切分不同的維度來(lái)捕捉不同的pattern,,這里就可以解釋論文里原話中的不同維度的語(yǔ)義信息,。 從另一個(gè)方面來(lái)解釋?zhuān)囝^的核心思想就是ensemble,如隨機(jī)森林一樣,,將特征切分,,每個(gè)head就像是一個(gè)弱分類(lèi)器,讓最后得到的embedding關(guān)注多方面信息,,不要過(guò)擬合到某一種pattern上,,這一點(diǎn)上面的實(shí)驗(yàn)圖像可以很清晰的看出來(lái)。 2.4 多多益善,?那這樣來(lái)說(shuō),,頭是不是越多越好呢?答案是否定的,已有論文證明,,頭數(shù)不是越多越好,,論文實(shí)驗(yàn)結(jié)果如下: 可以看到8/16個(gè)頭時(shí),PPL/BLEU最好,,4/32個(gè)頭次之,,1個(gè)頭最差。頭確實(shí)不是越多越好,,頭太多了,,每個(gè)qkv分到的維度就會(huì)降低,表達(dá)能力也就變差,,也未必能更好的捕捉到語(yǔ)法/句法/詞法信息,。 2.5 其它層也有話要說(shuō)!為了進(jìn)一步驗(yàn)證BERT多層,、多頭之間的變化,,筆者對(duì)10w條長(zhǎng)度相同的query繪制了1~4層的多頭Attention矩陣熱力圖,將其多頭Attention矩陣求平均后繪制出如下熱力圖,,從上到下依次是1~4層,,從左到右依次是1~12個(gè)head: 這種大量數(shù)據(jù)矩陣平均的情況,如果某一頭的均值attention還能保持一個(gè)明顯的pattern,,那就說(shuō)明對(duì)于任何一個(gè)query,,該層該頭的pattern是差不多的,因此該頭的pattern是以位置信息為主導(dǎo)的,,幾乎不包含語(yǔ)義信息,,因?yàn)椴徽撋秖uery,在這個(gè)位置的pattern都一個(gè)樣,。反之如果該層該頭熱力圖出現(xiàn)大片同色系區(qū)域,,則可以一定程度上說(shuō)明該層該頭有可能記錄了大量的語(yǔ)義、語(yǔ)法,、詞法信息,,因?yàn)檫@些信息有可能出現(xiàn)在該query的任意位置,因此每個(gè)位置平均值大概率就是趨于相同,。 可以看到,,對(duì)于第1、3,、4,、5、11,、12這些頭基本pattern是很固定的,,而且隨著層數(shù)的增加,,pattern越來(lái)越固定,而2,、7,、8、9,、10的pattern在某幾層或者全部層都比較多樣化(接近于同色系),,這也可以說(shuō)明,為什么需要多層的Transformer堆疊,,因?yàn)橛行┬畔⒖赡茉谀骋粚又袩o(wú)法捕捉到,,需要在其它層捕捉。 最后,,基本所有head在最后一層都變得很固定(顏色很深,,pattern很明顯),隨著層數(shù)的加深,,頭和頭之間的差異越來(lái)越小,。 已有論文對(duì)層和多頭pattern之間的關(guān)系做了探討:論文地址,,這篇文章對(duì)12層的BERT繪制了層數(shù)和頭pattern分布的關(guān)系,,如下圖所示,不同的顏色代表不同的層,,同一顏色的分布代表了同一層的頭差距,。比如:
由此可以得到這邊論文的結(jié)論:頭之間的差距隨著所在層數(shù)變大而減少,。換句話說(shuō),,頭之間的方差隨著所在層數(shù)的增大而減小。筆者這里的觀察實(shí)驗(yàn)也論證了這一點(diǎn),,隨著層數(shù)的增加,,pattern在慢慢固定且趨同。 3. 總結(jié) 在此,,筆者可以得到一些對(duì)Multi-Head-Attention的結(jié)論:
——————————————————————————————— 【AI科研看愛(ài)加】也歡迎各領(lǐng)域科研愛(ài)好者或AI愛(ài)好者們加入到愛(ài)加大家庭中來(lái),,共同運(yùn)營(yíng)與維護(hù)這個(gè)公益性AI公眾號(hào),,讓我們站在各研究領(lǐng)域、學(xué)習(xí)領(lǐng)域或者工作領(lǐng)域,,共同講好AI故事,、傳播AI聲音,受益于更多對(duì)AI有興趣的伙伴們.
|
|