谷歌的BERT算法已經(jīng)成為一種“統(tǒng)治它們的一種模式。”BERT建立在兩個(gè)關(guān)鍵概念的基礎(chǔ)上,NLP的許多最新進(jìn)展使用了這兩個(gè)概念:(1)transformer 架構(gòu)(2)無(wú)監(jiān)督預(yù)訓(xùn)練。
2018年標(biāo)志著自然語(yǔ)言處理領(lǐng)域的轉(zhuǎn)折點(diǎn),一系列深度學(xué)習(xí)模型在NLP任務(wù)中實(shí)現(xiàn)了最先進(jìn)的結(jié)果,從問(wèn)答到情感分類。最近,谷歌的BERT算法已經(jīng)成為一種“統(tǒng)治所有人的一種模式”,基于其在各種任務(wù)中的卓越性能。
BERT建立在兩個(gè)關(guān)鍵概念的基礎(chǔ)上,NLP的許多最新進(jìn)展使用了這兩個(gè)概念:
(1)transformer 架構(gòu)
(2)無(wú)人監(jiān)督預(yù)訓(xùn)練
該transformer是完全基于注意力的方法,放棄了RNN的順序結(jié)構(gòu),比如經(jīng)典的序列模型。
BERT也經(jīng)過(guò)預(yù)先訓(xùn)練; 通過(guò)兩個(gè)無(wú)監(jiān)督的任務(wù)預(yù)先學(xué)習(xí)它的權(quán)重:蒙面語(yǔ)言建模(預(yù)測(cè)給定左右上下文的缺失單詞)和下一個(gè)句子預(yù)測(cè)(預(yù)測(cè)一個(gè)句子是否跟隨另一個(gè)句子)。因此,對(duì)于每個(gè)新任務(wù),BERT不需要從頭開始訓(xùn)練; 相反,它的重量是微調(diào)的。
有關(guān)BERT的更多詳細(xì)信息,請(qǐng)查看 The Illustrated Bert:https://jalammar.github.io/illustrated-bert/
BERT是一個(gè)(多頭)野獸
Bert不像傳統(tǒng)的注意力模型那樣在RNN的隱藏狀態(tài)上使用平坦的注意力結(jié)構(gòu)。相反,BERT使用多層注意力(12或24取決于模型),并且還在每層(12或16)中包含多個(gè)注意力“頭”。由于模型權(quán)重不在層之間共享,因此單個(gè)BERT模型有效地具有多達(dá)24 x 16 = 384種不同的注意機(jī)制。
可視化BERT
由于BERT的復(fù)雜性,可能難以直觀了解其學(xué)習(xí)權(quán)重的含義。一般而言,深度學(xué)習(xí)模型是眾所周知的不透明的,并且已經(jīng)開發(fā)了各種可視化工具來(lái)幫助理解它們。
但是,作者沒有找到一個(gè)可以闡明BERT正在學(xué)習(xí)的注意模式。幸運(yùn)的是,Tensor2Tensor在編碼器 - 解碼器變換器模型中具有可視化注意力的優(yōu)秀工具,因此作者使用BERT的PyTorch實(shí)現(xiàn)對(duì)其進(jìn)行了修改以使用BERT的架構(gòu),改編的界面如下所示。你可以在Github(https://github.com/jessevig/bertviz)上找到它。
該工具將注意力視為連接正在更新的位置(左)與正在關(guān)注的位置(右)的線。顏色識(shí)別相應(yīng)的注意頭,而線條厚度反映注意力得分。在工具的頂部,用戶可以選擇模型層,以及一個(gè)或多個(gè)注意頭(通過(guò)單擊頂部的色塊,代表12個(gè)頭)。
BERT實(shí)際上學(xué)到了什么?
作者使用該工具探索預(yù)訓(xùn)練BERT模型(BERT-Base,無(wú)套裝版本)的各個(gè)層/頭的注意模式,嘗試了不同的輸入值,但出于演示目的,只使用以下輸入:
句子A: I went to the store.
句子B: At the store, I bought fresh strawberries.
BERT使用WordPiece標(biāo)記化并插入特殊分類器([CLS ])和分隔符([SEP])標(biāo)記,因此實(shí)際輸入序列為:
[CLS] i went to the store . [SEP] at the store , i bought fresh straw ##berries . [SEP]
作者發(fā)現(xiàn)了一些相當(dāng)獨(dú)特且令人驚訝的直觀注意模式。下面確定了六個(gè)關(guān)鍵模式,每個(gè)關(guān)鍵模式都顯示了展示模式的特定圖層/頭部的可視化。
模式1:注意下一個(gè)詞
在這種模式中,特定位置的大部分注意力都指向序列中的下一個(gè)標(biāo)記。下面我們看到第2層頭部0的示例。(所選頭部由頂部顏色條中突出顯示的方塊表示。)左邊的圖顯示所有標(biāo)記的注意力,而右側(cè)顯示一個(gè)選定標(biāo)記(“i”)的注意力。在這個(gè)例子中,幾乎所有的注意力都集中在“去”,即序列中的下一個(gè)標(biāo)記。
左:所有代幣的注意力。 右:選定標(biāo)記的注意權(quán)重(“i”)
在左側(cè),我們可以看到 [SEP] 令牌破壞了下一個(gè)令牌注意模式,因?yàn)閇SEP]的大多數(shù)注意力都是針對(duì) [CLS] 而不是下一個(gè)令牌。因此,這種模式似乎主要在每個(gè)句子中運(yùn)作。
該模式與后向RNN有關(guān),其中狀態(tài)更新從右到左依次進(jìn)行。模式1出現(xiàn)在模型的多個(gè)層上,在某種意義上模擬了RNN的周期性更新。
模式2:注意前一個(gè)詞
在這種模式中,大部分注意力都集中在句子中的前一個(gè)標(biāo)記上。例如,“go”的大部分注意力都指向下圖中的前一個(gè)單詞“i”。這種模式與最后一種模式不同; 一些注意力也分散到其他令牌,尤其是[SEP]令牌。與模式1一樣,這與順序RNN松散相關(guān),在這種情況下是前向RNN。
模式3:注意相同/相關(guān)的單詞
在這種模式中,注意相同或相關(guān)的單詞,包括源詞本身。在下面的例子中,第一次出現(xiàn)的“store”的大部分注意力都集中在它自身和第二次出現(xiàn)的“store”上。這種模式并不像其他一些模式那樣明顯,注意力分散在許多不同的詞語(yǔ)上。
左:所有代幣的注意力。 右:所選令牌的注意權(quán)重(“商店”)
模式4:注意其他句子中相同/相關(guān)的單詞
在這種模式中,注意另一句中相同或相關(guān)的單詞。例如,第二句中“store”的大部分注意力都集中在第一句中的“store”??梢韵胂筮@對(duì)于下一句話預(yù)測(cè)任務(wù)(BERT預(yù)訓(xùn)練的一部分)特別有用,因?yàn)樗兄谧R(shí)別句子之間的關(guān)系 。
左:所有代幣的注意力。 右:所選令牌的注意權(quán)重(“store”)
模式5:注意預(yù)測(cè)單詞的其他單詞
在這種模式中,注意力似乎是針對(duì)可預(yù)測(cè)源詞的其他詞,不包括源詞本身。在下面的例子中,“straw” 的大部分注意力都集中在“##berries” 上,“##berries” 的大部分注意力都集中在“straw” 上。
左:所有代幣的注意力。 右:所選標(biāo)記的注意力(“## berries”)
這種模式并不像其他一些模式那樣明顯。例如,大部分注意力都集中在分隔符令牌([CLS])上,這是下一個(gè)討論的模式6的定義特征。
模式6:注意分隔符令牌
在這種模式中,大部分注意力都集中在分隔符令牌上,即 [CLS] 令牌或 [SEP] 令牌。在下面的示例中,大部分注意力都集中在兩個(gè) [SEP] 令牌上。這可能是模型將句子級(jí)狀態(tài)傳播到單個(gè)標(biāo)記的一種方式。
左:所有代幣的注意力。 右:所選令牌的注意權(quán)重(“store”)
筆記
有人說(shuō) ,數(shù)據(jù)可視化有點(diǎn)像羅夏測(cè)驗(yàn):我們的解釋可能會(huì)被我們自己的信念和期望所染色。雖然上面的一些模式非常明顯,但其他模式有點(diǎn)主觀,所以這些解釋只應(yīng)作為初步觀察。
此外,上述6種模式描述了BERT的粗略注意結(jié)構(gòu),并不試圖描述注意力可能捕獲的語(yǔ)言模式。例如,模式3和模式4中可以表現(xiàn)出許多不同類型的“相關(guān)性”,如同義詞,共同參照等??纯床煌淖⒁饬κ欠駥W⒂诓煌愋偷恼Z(yǔ)義和句法關(guān)系會(huì)很有趣。
信息來(lái)源:https://www.kdnuggets.com/2019/02/deconstructing-bert-distilling-patterns-100-million-parameters.html
學(xué)術(shù)頭條已建立微信交流群,想進(jìn)群的同學(xué)請(qǐng)加學(xué)術(shù)君微信:AMiner308,記得備注:名字+單位/學(xué)校噢!
聯(lián)系客服