一文圖解BERT注意力機(jī)制
2018年是自然語(yǔ)言處理領(lǐng)域的轉(zhuǎn)折點(diǎn),一系列深度學(xué)習(xí)模型在從問(wèn)答到情感分類的NLP任務(wù)上取得了最先進(jìn)的成果。
谷歌的BERT算法已經(jīng)成為一種“一個(gè)模型來(lái)統(tǒng)治其他所有NLP模型”,基于其在各種各樣的任務(wù)上的優(yōu)異性能。
這篇文章通過(guò)可視化輸出,嘗試使用BertViz進(jìn)行交互式演示。
??https://github.com/jessevig/bertviz??
BERT建立在兩個(gè)關(guān)鍵思想的基礎(chǔ)上,這兩個(gè)思想是NLP最近取得的許多進(jìn)展的原因:
- Transformer架構(gòu);
- 無(wú)監(jiān)督預(yù)訓(xùn)練。
Transformer是一種序列模型,它放棄了RNN的遞歸結(jié)構(gòu),采用了完全基于注意力的方法,如經(jīng)典的Attention Is All You Need中所述。
BERT也是預(yù)先訓(xùn)練的;它的權(quán)重是通過(guò)兩個(gè)無(wú)監(jiān)督任務(wù)提前學(xué)習(xí)的:Mask語(yǔ)言建模(在給定左右上下文的情況下預(yù)測(cè)丟失的單詞)和下一個(gè)句子預(yù)測(cè)(預(yù)測(cè)一個(gè)句子是否跟隨另一個(gè)句子)。
因此,BERT不需要為每個(gè)新任務(wù)從頭開(kāi)始訓(xùn)練。相反,它的權(quán)重可以通過(guò)微調(diào)優(yōu)化下游任務(wù)。
BERT is a (multi-headed) model
Bert不像傳統(tǒng)的注意力模型,它在RNN的隱藏狀態(tài)上使用平面注意力結(jié)構(gòu)。相反,BERT使用多層注意力(12層或24層,取決于模型),并且在每一層中包含多個(gè)注意力“頭”(12層或16層)。
由于模型權(quán)重在層之間不共享,單個(gè)BERT模型有效地具有多達(dá)24 x 16 = 384個(gè)不同的注意力機(jī)制。
Visualizing BERT
由于BERT的復(fù)雜性,很難直觀地理解其學(xué)習(xí)的權(quán)重的含義。深度學(xué)習(xí)模型通常是出了名的不透明,人們開(kāi)發(fā)了各種可視化工具來(lái)幫助理解它們。
然而,我還沒(méi)有找到一個(gè)可以闡明BERT正在學(xué)習(xí)的注意力模式的方法。還好Tensor2Tensor有一個(gè)很好的工具,可以在編碼器-解碼器Transformer模型中可視化注意力,所以我們使用BERT的PyTorch實(shí)現(xiàn)來(lái)使用BERT的架構(gòu)。
該工具將注意力可視化為連接正在更新的位置(左)和正在關(guān)注的位置(右)的線條。
顏色標(biāo)識(shí)相應(yīng)的注意力頭部,而線條粗細(xì)反映注意力分?jǐn)?shù)。在工具的頂部,用戶可以選擇模型層,以及一個(gè)或多個(gè)注意力頭(通過(guò)點(diǎn)擊頂部的色塊,代表12個(gè)頭)。
What does BERT actually learn?
Sentence A: I went to the store.
Sentence 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 strawberries.[SEP]
我們發(fā)現(xiàn)了一些相當(dāng)獨(dú)特和令人驚訝的直覺(jué)注意力模式。下面,我確定了六個(gè)關(guān)鍵模式,并為每一個(gè)模式顯示了展示該模式的特定層/頭部的可視化。
Pattern 1: Attention to next word
在這種模式中,特定位置的大部分注意力都集中在序列中的下一個(gè)標(biāo)記上。下面我們看到一個(gè)例子,layer 2, head 0.(選定的頭部由頂部顏色條中突出顯示的正方形指示。
左邊的圖顯示了所有標(biāo)記的注意力,而右邊的圖顯示了一個(gè)選定標(biāo)記(“i”)的注意力。
在這個(gè)例子中,幾乎所有的注意力都集中在“went”上,即序列中的下一個(gè)標(biāo)記。
(左:所有標(biāo)記的注意力權(quán)重。右:所選標(biāo)記(“i”)的注意力權(quán)重)
在左邊,我們可以看到[SEP]標(biāo)記破壞了下一個(gè)標(biāo)記的注意力模式,因?yàn)閇SEP]的大部分注意力都指向[CLS]而不是下一個(gè)標(biāo)記。
因此,這種模式似乎主要在每句話中起作用。這種模式與后向RNN有關(guān),其中狀態(tài)更新從右到左順序進(jìn)行。
模式1出現(xiàn)在模型的多個(gè)層上,在某種意義上模擬了RNN的周期性更新。
Pattern 2: Attention to previous word
在這個(gè)句型中,大部分注意力都集中在句子的前一個(gè)標(biāo)記上。例如,“went”的大部分注意力都指向下圖中的前一個(gè)單詞“i”。
這個(gè)模式不像上一個(gè)那么明顯;一些注意力也分散到其他標(biāo)記上,特別是[SEP]標(biāo)記。
與模式1一樣,這與順序RNN(在本例中為前向RNN)有松散的關(guān)系。
(左:所有標(biāo)記的注意力權(quán)重。右:所選標(biāo)記的注意力權(quán)重(“went”)
Pattern 3: Attention to identical/related words
在這種模式中,注意力集中在相同或相關(guān)的詞上,包括源詞本身。在下面的示例中,第一次出現(xiàn)的“store”的大部分注意力都指向它本身和第二次出現(xiàn)的“store”。
這種模式不像其他一些模式那樣明顯,注意力分散在許多不同的單詞上。
(左:所有標(biāo)記的注意力權(quán)重。右:所選標(biāo)記(“store”)的注意力權(quán)重)
Pattern 4: Attention to identical/related words in other sentence
在這種模式中,注意力會(huì)集中在另一個(gè)句子中相同或相關(guān)的詞上。例如,第二句中的“store”的大部分注意力都指向第一句中的“store”。
可以想象,這對(duì)下一個(gè)句子預(yù)測(cè)任務(wù)(BERT預(yù)訓(xùn)練的一部分)特別有幫助,因?yàn)樗兄谧R(shí)別句子之間的關(guān)系。
(左:所有標(biāo)記的注意力權(quán)重。右:所選標(biāo)記(“store”)的注意力權(quán)重)
Pattern 5: Attention to other words predictive of word
在這種模式中,注意力似乎被引導(dǎo)到其他詞,這些詞是源詞的預(yù)測(cè),不包括源詞本身。
在下面的示例中,來(lái)自“straw”的大部分注意力都指向“##berries”,而來(lái)自“##berries”的大部分注意力都集中在“straw”上。
(左:所有標(biāo)記的注意力權(quán)重。右:所選標(biāo)記(“##berries”)的注意力權(quán)重)
這個(gè)模式不像其他一些那么明顯。例如,大部分注意力都集中在一個(gè)標(biāo)記([CLS])上,這是模式6的定義特征,下面將討論。
Pattern 6: Attention to delimiter tokens
在這種模式中,大部分注意力都集中在[CLS]token或[SEP]token上。在下面的例子中,大部分注意力都集中在兩個(gè)[SEP]tokens上。
正如本文所討論的,這種模式是一種“無(wú)操作”:當(dāng)注意力頭在輸入句子中找不到任何有意義的東西時(shí),它會(huì)專注于[SEP]標(biāo)記。
(左:所有標(biāo)記的注意力權(quán)重。右:所選標(biāo)記(“store”)的注意力權(quán)重)
參考:https://towardsdatascience.com/deconstructing-bert-distilling-6-patterns-from-100-million-parameters-b49113672f77
本文轉(zhuǎn)載自 ??沐白AI筆記??,作者: 楊沐白
