2018年標誌著自然語言處理領域的轉折點,一系列深度學習模型在NLP任務中實現了最先進的結果,從問答到情感分類。最近,谷歌的BERT演算法已經成為一種“統治所有人的一種模式”,基於其在各種任務中的卓越效能。
BERT建立在兩個關鍵概念的基礎上,NLP的許多最新進展使用了這兩個概念:
(1)transformer 架構
(2)無人監督預訓練
該transformer是完全基於注意力的方法,放棄了RNN的順序結構,比如經典的序列模型。
BERT也經過預先訓練; 通過兩個無監督的任務預先學習它的權重:蒙面語言建模(預測給定左右上下文的缺失單詞)和下一個句子預測(預測一個句子是否跟隨另一個句子)。因此,對於每個新任務,BERT不需要從頭開始訓練; 相反,它的重量是微調的。
有關BERT的更多詳細資訊,請檢視 The Illustrated Bert:https://jalammar.github.io/illustrated-bert/
BERT是一個(多頭)野獸
Bert不像傳統的注意力模型那樣在RNN的隱藏狀態上使用平坦的注意力結構。相反,BERT使用多層注意力(12或24取決於模型),並且還在每層(12或16)中包含多個注意力“頭”。由於模型權重不在層之間共享,因此單個BERT模型有效地具有多達24 x 16 = 384種不同的注意機制。
視覺化BERT
由於BERT的複雜性,可能難以直觀瞭解其學習權重的含義。一般而言,深度學習模型是眾所周知的不透明的,並且已經開發了各種視覺化工具來幫助理解它們。
但是,作者沒有找到一個可以闡明BERT正在學習的注意模式。幸運的是,Tensor2Tensor在編碼器 - 解碼器變換器模型中具有視覺化注意力的優秀工具,因此作者使用BERT的PyTorch實現對其進行了修改以使用BERT的架構,改編的介面如下所示。你可以在Github(https://github.com/jessevig/bertviz)上找到它。
該工具將注意力視為連線正在更新的位置(左)與正在關注的位置(右)的線。顏色識別相應的注意頭,而線條厚度反映注意力得分。在工具的頂部,使用者可以選擇模型層,以及一個或多個注意頭(通過單擊頂部的色塊,代表12個頭)。
BERT實際上學到了什麼?
作者使用該工具探索預訓練BERT模型(BERT-Base,無套裝版本)的各個層/頭的注意模式,嘗試了不同的輸入值,但出於演示目的,只使用以下輸入:
句子A: I went to the store.
句子B: At the store, I bought fresh strawberries.
BERT使用WordPiece標記化並插入特殊分類器([CLS ])和分隔符([SEP])標記,因此實際輸入序列為:
[CLS] i went to the store . [SEP] at the store , i bought fresh straw ##berries . [SEP]
作者發現了一些相當獨特且令人驚訝的直觀注意模式。下面確定了六個關鍵模式,每個關鍵模式都顯示了展示模式的特定圖層/頭部的視覺化。
模式1:注意下一個詞
在這種模式中,特定位置的大部分注意力都指向序列中的下一個標記。下面我們看到第2層頭部0的示例。(所選頭部由頂部顏色條中突出顯示的方塊表示。)左邊的圖顯示所有標記的注意力,而右側顯示一個選定標記(“i”)的注意力。在這個例子中,幾乎所有的注意力都集中在“去”,即序列中的下一個標記。
左:所有代幣的注意力。 右:選定標記的注意權重(“i”)
在左側,我們可以看到 [SEP] 令牌破壞了下一個令牌注意模式,因為[SEP]的大多數注意力都是針對 [CLS] 而不是下一個令牌。因此,這種模式似乎主要在每個句子中運作。
該模式與後向RNN有關,其中狀態更新從右到左依次進行。模式1出現在模型的多個層上,在某種意義上模擬了RNN的週期性更新。
模式2:注意前一個詞
在這種模式中,大部分注意力都集中在句子中的前一個標記上。例如,“go”的大部分注意力都指向下圖中的前一個單詞“i”。這種模式與最後一種模式不同; 一些注意力也分散到其他令牌,尤其是[SEP]令牌。與模式1一樣,這與順序RNN鬆散相關,在這種情況下是前向RNN。
左:所有代幣的注意力。右:所選令牌的注意力(“went”)
模式3:注意相同/相關的單詞
在這種模式中,注意相同或相關的單詞,包括源詞本身。在下面的例子中,第一次出現的“store”的大部分注意力都集中在它自身和第二次出現的“store”上。這種模式並不像其他一些模式那樣明顯,注意力分散在許多不同的詞語上。
左:所有代幣的注意力。 右:所選令牌的注意權重(“商店”)
模式4:注意其他句子中相同/相關的單詞
在這種模式中,注意另一句中相同或相關的單詞。例如,第二句中“store”的大部分注意力都集中在第一句中的“store”。可以想象這對於下一句話預測任務(BERT預訓練的一部分)特別有用,因為它有助於識別句子之間的關係 。
左:所有代幣的注意力。 右:所選令牌的注意權重(“store”)
模式5:注意預測單詞的其他單詞
在這種模式中,注意力似乎是針對可預測源詞的其他詞,不包括源詞本身。在下面的例子中,“straw” 的大部分注意力都集中在“##berries” 上,“##berries” 的大部分注意力都集中在“straw” 上。
左:所有代幣的注意力。 右:所選標記的注意力(“## berries”)
這種模式並不像其他一些模式那樣明顯。例如,大部分注意力都集中在分隔符令牌([CLS])上,這是下一個討論的模式6的定義特徵。
模式6:注意分隔符令牌
在這種模式中,大部分注意力都集中在分隔符令牌上,即 [CLS] 令牌或 [SEP] 令牌。在下面的示例中,大部分注意力都集中在兩個 [SEP] 令牌上。這可能是模型將句子級狀態傳播到單個標記的一種方式。
左:所有代幣的注意力。 右:所選令牌的注意權重(“store”)
筆記
有人說 ,資料視覺化有點像羅夏測驗:我們的解釋可能會被我們自己的信念和期望所染色。雖然上面的一些模式非常明顯,但其他模式有點主觀,所以這些解釋只應作為初步觀察。
此外,上述6種模式描述了BERT的粗略注意結構,並不試圖描述注意力可能捕獲的語言模式。例如,模式3和模式4中可以表現出許多不同型別的“相關性”,如同義詞,共同參照等。看看不同的注意力是否專注於不同型別的語義和句法關係會很有趣。
資訊來源:https://www.kdnuggets.com/2019/02/deconstructing-bert-distilling-patterns-100-million-parameters.html