深度學習預訓練模型可解釋性的一點概述
作者|蔡傑
研究方向|問答系統
近年來預訓練模型(ELMo, GPT, BERT, XLNet, ALBERT 等)給許多 NLP 任務帶來了顯著的改進,但是有一個問題一直困擾著大家:
被當做黑盒的神經網路到底是如何做的以及為什麼會這樣做?
最近,人們對解決這個謎團越來越感興趣,就此,我將最近看的一些相關論文進行總結,希望可以和大家一起探討學習。
引言
在正式介紹論文之前,先給大家簡單介紹一下目前比較主流的分析方法:
Analyse Pre-trained Model
我們都知道預訓練(pre-train)方法因為資料量巨大需要消耗大量的計算資源,那這麼多計算資源最後都變成了啥?或者說
在整個pre-train的過程中,模型到底學到了什麼能力?
以下的 pre-train model 以 BERT 為例。
Probing tasks:
一般做法是設計一些簡單的分類任務(一種任務包含一種特定的語言學資訊),將 BERT 每一層的輸出作為 embedding,在得到 embedding 後透過簡單的分類器(例如一層的 FFN,為了不過多幹擾模型本身的能力),來驗證模型的不同層在不同 probing task 上的能力。
Visualization:
我們都知道 BERT 是由多層 Transformer 構成的,每一層 Transformer 都有一個 multi-head self-attention 模組。在這個模組中,每個 word 和其他所有 word 都會有互動,從而得到一個注意力(attention)分數,透過視覺化這個分數,可以知道在不同層,甚至不同 head 中,不同的 word 關注的部分。還有的做法是將不同層的特定詞 embedding 做聚類,同樣也可以瞭解模型不同層的能力。
Analyse Fine-tuned Model
目前 NLP 許多工的 SOTA 都是透過微調(fine-tune)預訓練(pre-train)的模型達到的。那麼問題來了,
在 Fine-tune 的過程中,模型又學到了什麼能力?
在這一部分同樣有 Probing tasks 和 Visualization 兩種做法,而且做法同上述方法類似,只是將 pre-train 的 model 作為對比物件。
Adversarial attacks:
對於fine-tuned model,對抗性攻擊是一種新做法。對抗性攻擊透過使用特定干擾資訊建立的例子來驗證模型的魯棒性。具體例子請見之後的論文。
Pre-trained model Analysis
1. Probing tasks Method
論文標題:
Open Sesame: Getting Inside BERT’s Linguistic Knowledge
論文來源:
ACL 2019
論文連結:
https://
arxiv。org/abs/1906。0169
8
引言
本文在嘗試解釋 BERT 上主要做了兩件事:
透過設計 probing tasks 來證明 BERT 在 pre-train 之後得到的 word embeddings 包含語法資訊;
提出了基於 attention 的對主謂一致和共指消解問題的評價分數,根據 self-attention 來確定 BERT 對語言相關元素的關注程度。
實驗1
設計了三個 probing tasks 分別是識別一句話中的助動詞、主語名詞以及第 n 個 token。
Training 和 Development 集合是原有資料集。Generalization 集合是根據一些語法規則(加了一些從句,名詞替換為複合名詞或所有格名詞等)在 Training 和 Development 基礎上生成的。Generalization 集合才是最後實驗的資料。
之後實驗獲取 BERT 每一層的 embedding,每一層都訓練一個簡單的分類器,這樣每個 token 都有一個結果(如下圖)。label 是一個 one-hot 向量,使用交叉熵作為損失函式。
結果1
Figure 1 在第 4 層突然準確率變得很高,作者認為是因為淺層特徵是一個高度 localized 的特徵,包含的句子上下文資訊不足以確定 main auxiliary。隨著 self-attention 的作用,層數加深,資訊變得越來越抽象,到 4-6 層左右正好能足夠表示 main auxiliary,之後層數再加深,資訊變得更抽象,導致 acc 有所下降。
在複合名詞的分類任務(Figure 2 是複合名詞的結果)中,large 的效果就要差很多了。base 上的效果很好,作者認為是由於主語名詞特徵的顯著性。至於為什麼 large 效果很差,作者也沒有給出很好的解釋。
在所有格問題(Figure 3 是所有格名詞的結果)上,base 和 large 的表現都很差,作者認為是是所有格的歧義性導致的(she‘s sleeping 中的 ’s 可能表示的是所有格關係,也有可能表示的是 is 的縮寫)。
N_th token(Figure 4 是 N_th token 的結果)對比了兩個 baseline,一個是 pre-embedding,另一個是 pre-embedding 去掉 position-encoding,可以看到 1-3 層判斷 2-9 位置的準確率都還是挺高的,其餘的準確率隨層數增加而降低。沒有 position-encoding 的在第一層就很低,表明 BERT 的 position 資訊主要來源於 position-encoding。
之所以在 4 層之後會下降有可能是因為捨棄了位置資訊,轉而獲得一些抽象的層次資訊。而 position 1-3 的準確率隨著層數增加一直沒有下降,作者認為這有可能是因為自然語言分佈的特性造成的,句子開頭的詞性可能是固定的,但是隨著句子長度的增加,詞性的類別就不固定了。
實驗2
主謂一致和共指消解都具有一個先行詞(trigger)元素,比如判斷謂詞(target)的時候需要先知道主語,共指消解的時候也得先知道後面的詞指代的是什麼。但是如果這個先行詞有多個,就可能導致模型不知道那個先行詞才是正確的。因此作者提出了一個叫“confusion score”的概念,定量地表示一句話給模型帶來的混淆程度。
由 Table 2 可知,上半部分是主謂一致的 example,下半部分是共指消解的 example。
A1 和 A2 是帶有介詞短語的 example,A3 和 A4 是帶有關係從句的 example,有論文指出帶有介詞短語的句子要比帶有關係從句的句子更難處理,因此 A1 和 A2 的 score 要更高,而 A1 和 A3 中的“dog”和“the cat”一樣都是可以接“does”的,而 A2 和 A4 的“dogs”是不能接“does”的,所以 A2 和 A4 的 score 要比 A1 和 A3 低。
對於共指消解問題,作者同樣在插入了一些 distractor,比如 R1,“the lord”是先行詞,但是“the wizard”的語法同樣正確,但是 R2 中的語法就不對了,所以 R2 的 score 比 R1 低。R3 和 R4 在關係從句中插入了 distractor,因為如果“himself”共指了關係從句中的 distractor 的話語法是不正確的,所以分數要比 R1 和 R2 低。R5-R8 包括相對修飾語,賓語名詞短語,分數普遍要高很多。
接下來就講講這個 confusion score 是怎麼計算的:作者根據兩種語法現象(主謂一致和反身回指)設計了透過 self-attention 來確定 BERT 對語言相關元素的關注程度。
首先先計算一個 attention_score,token 可能包含多個 word(比如 Table 2 裡的 the lord),相當於讓每個 word 都和 Y 計算 attention,這裡的 attn 函式就是 self-attention 計算的值。求和之後再在 head 層面上求和取平均,得到每個 token 對 target 的 attention。
之後根據上式得到“confusion score”。
結果2
Figure 5 和 Table 3 顯示了共指消解的混淆程度與層深度的負相關。主謂一致性的混淆分數呈現出相似的趨勢。作者推測 BERT 隨著層數的加深,包含的資訊也更抽象。還有就是作者觀察到的 BERT 的自我注意值對語法扭曲的敏感性表明,BERT 的句法知識實際上被編碼在其注意力矩陣中。
最後,值得注意的是,對於共指消解和主語動詞一致的混淆在第 4 層增加,而在 N_th token 的實驗中,正好也是第 4 層之後結果開始下降。作者為未來留下了一個對這兩者之間聯絡的伏筆。
2. Visualization Method
論文標題:
What does BERT look at? An Analysis of BERT’s Attention
論文來源:
ACL 2019
論文連結:
https://
arxiv。org/abs/1906。0434
1
引言
本文主要透過視覺化 BERT 的 attention 層,以瞭解 BERT 的 attention 層都在關注什麼地方,發現有很多 attention 集中在 [CLS] 和 [SEP] 符號上。文章還透過實驗得出不同的 multi-head 中不同的 head 關注的是不同的語法現象。此外文章也實驗了融合多個 head,得出模型關於語法整體的建模程度。
實驗
Surface-Level Patterns in Attention
作者透過視覺化 attention 的權重,得到了幾種不同的 attention 的 pattern。如 Figure 1 所示,有的 attention 是 broadly 形式(關注所有的詞),有的 attention 是關注的是其下一個 token,有的 attention 則集中關注 [SEP] 符號上,還有的 attention 則關注標點符號。
Attending to Separator Tokens
作者在分析 attention 的過程中發現一個很有趣的現象。在 6-10 層,有超過一半的 attention 關注的是 [SEP](Figure 2 的上圖),一開始作者的想法是 [SEP] 用於聚合段與段之間的資訊,方便後面的 head 去獲取資訊。
如果假設成立的話,那 [SEP] 關注的資訊應該是整句話,但是 Figure 2 的下圖表明,90% 以上的 [SEP] 關注的是他們自身,所以作者又推測,指向 [SEP] 很可能是一種“no-op”(無作用)的操作。
為了進一步驗證以上的假設,作者又採用了一種基於梯度的可以衡量特徵重要性的方法(Sundararajan et al。, 2017) 簡單地說,這個值的大小意味著將注意力轉移到 token 上會多大程度改變 BERT 的輸出。Figure 3 中可以看到,在 5 層之後,[SEP] 的梯度就基本下降到 0,說明這個時候給 [SEP] 或多或少的 attention 都改變不了模型的輸出,進一步驗證了作者“no-op”的結論。
Figure 4 是作者計算每一層的 attention 的熵值,可以看到低層的熵值比較大,說明在低層模型更偏向於 broadly 的 attention 方式,基本上每個單詞在其餘每個單詞上的 attention 只有 10%,對 [CLS] attention 的熵值分佈也和 Figure 4 類似,最後一層有較高的熵值,因為這層的 [CLS] 聚合了之前的所有資訊,之後用於 next-sentence prediction 任務中。
看看每個attention head都學到了什麼
上圖是直接賓語,名詞修飾語的例子。除此之外,作者還例舉了好幾種例子,在這裡就不一一列舉了,感興趣的讀者可以去看論文。
接下來作者在 Penn Tree bank 的資料集上做了統計,每個詞都有一個 dependency。為了測試 BERT 中對詞與詞的 dependency 的建模程度,作者直接把 attention map 拿了出來,把每個詞給了最多 attention 的詞作為 dependency,baseline 的話就是把括號內的數字(正數表示右邊第幾個詞,負數則表示左邊第幾個詞)對應的 word 作為 baseline,可以看到 BERT 還是學到了很多 dependency 的資訊的。
作者還做了一個共指消解的任務,在句子中找出給定詞之前的 antecedent。發現某一個 head 的正確率在 65% (neural supervised model 是 83%)。
Fine-tuned Model Analysis
1. Adversarial attacks
論文標題:
What does BERT Learn from Multiple-Choice Reading Comprehension Datasets?
論文連結:
https://
arxiv。org/abs/1910。1239
1
引言
目前最新模型已經在多個 MCRC 資料集上實現了 SOTA。然而,作者認為這樣的表現可能並不能反映模型真正的語言理解和推理能力。在這項工作中,作者採用了兩種方法來研究 BERT 從 MCRC 資料集中學到了什麼:
不可讀的資料攻擊:
新增一些不可讀資料來混淆 BERT,誤導其作出錯誤的判斷;
不可回答的訓練資料:
增加不可回答的訓練資料或者洗牌 examples 來訓練 BERT。
實驗
不可讀的資料攻擊
Un-Readable Data Attack(不可讀資料攻擊)例子,在原始的文章結尾加上一句亂序的話(這句話由原始問題和錯誤選項拼接而成),該方法就是 Figure 2 中的 (a)。
作者探索了三種對抗攻擊方法(Figure 2 (a),(b),(c),詳細的例子請見論文),透過在文章或原始干擾源(錯誤的選項)中新增額外的干擾資訊來測試模型的魯棒性。對抗性攻擊的目標是操縱輸入,誤導模型做出錯誤的預測,而人類在這些攻擊下仍然能夠選擇正確的答案。
不可回答的訓練資料
透過用不可回答的資料來訓練 BERT(Un-Answerable Data Training),從這些資料中,人類可以學到一些關於如何回答問題的知識。
Figure 4 中文章(passage)的次順序被打亂了(P-Shuffle),變成了不可讀的資料。作者還嘗試了另外兩種方法:
打亂 question 中的詞序(Q-Shuffle)
既打亂 passage 的詞序,也打亂 question 的詞序(PQ-Shuffle)
作者同樣嘗試了刪除整個 passage (P-Remove),刪除整個 question (Q-Remove) 以及刪除 passage 和 question (PQ-Remove)。
結果
不可讀的資料攻擊
頂端的兩行分別是隨機猜測的結果和正常訓練 BERT 的結果。
我們可以看到幾乎所有的資料集上 BERT 的效能都顯著下降,而且對於某些資料集,BERT 的效能甚至低於隨機猜測。這意味著 BERT 無法檢測出正確的詞序和語法,嚴重依賴於關鍵詞匹配。
不可回答的訓練資料
我們可以看到在所有這些設定上訓練的 BERT 比“Random Guess”和“Longest Baseline”要好得多,“Longest Baseline”總是選擇最長的答案作為預測。而且BERT在“P-Shuffle”設定下進行訓練,隨機地對訓練集中的所有段落單詞進行洗牌,甚至可以獲得與原始完全訓練設定非常接近的效能,特別是在 MCScript 和 MCScript2。0 資料集上。
進一步比較“P-Shuffle”和“P-Remove”,我們會發現,儘管被洗牌的段落沒有遵循正確的語法,不再是可解釋的,但它仍然比刪除整個段落要好。透過比較“Q-Shuffle”和“Q-Remove”、“PQ Shuffle”和“PQ Remove”,也可以發現類似的結論。 那麼說明 BERT 仍然可以從無序輸入中學習,這表明它對詞序或句法資訊不敏感。
小結
以上論文解讀更多的是希望給大家瞭解該領域的進展,以及在該領域中大家的普遍做法,涉及到結論性的內容還得具體細看論文,歡迎大家共同學習交流。
相關論文推薦
Pre-trained model Analysis
論文標題:
What do you learn from context? Probing for sentence structure in contextualized word representations
論文來源:
ICLR 2019
論文連結:
https://
arxiv。org/abs/1905。0631
6
論文標題:
BERT Rediscovers the Classical NLP Pipeline
論文來源:
ACL 2019
論文連結:
https://
arxiv。org/abs/1905。0595
0
Fine-tuned Model Analysis
論文標題:
How Does BERT Answer Questions? A Layer-Wise Analysis of Transformer Representations
論文來源:
CIKM 2019
論文連結:
https://
arxiv。org/abs/1909。0492
5