讓我如何相信你 -- NLP模型可解釋性的6種經常使用方法

1、前言網絡



關於NLP模型可解釋性的方法有不少種,有一些須要深刻到模型內部,透視出參數的傳遞過程,咱們能夠將其歸類爲「白盒方法」。
而有一些方法,則不須要模型內部的參數,是經過輸入和輸出的關係,來「猜想」模型可能的推理過程,咱們能夠將其歸類爲「黑盒方法」。
兩種類型的方法具備各自的優缺點和不一樣的目標。「白盒方法」因爲其透視模型內部的結構和參數傳遞過程,其目的是爲了解釋出模型「真正的」推理過程。
然而,不少白盒方法僅限於特定的模型,且當模型內部參數不可得到時,這些方法就不適用。「黑盒方法」因爲不知道模型內部的參數,所以沒法解釋模型真正的推理過程。
這種方法更多的是「猜想」模型的推理過程,而且能夠對模型的能力進行解釋。相比之下,「黑盒方法」在業務場景中,能更快的落地併發揮出價值。
本文分別介紹了三種常見的「白盒方法」和三種「黑盒方法」。「白盒方法」包括神經元分析、診斷分類器、Attention。「黑盒方法」包括「對抗數據集」、「Rationales」、「局部代理模型」。
併發

2、神經元分析app



2015年,斯坦福大學Karpathy & Johnson對比了不一樣的循環神經網絡,而且將LSTM的不一樣的memory cells 的值按照charactor可視化出來,有一些有趣的發現。 
他們發現,在LSTM中, 不一樣的memory cells有着不一樣的功能。有的cell能夠判斷句子是不是在引號內,有的cell能夠判斷句子的長度。若是輸入的是代碼文本,則有的cell能夠判斷是不是if語句或註釋,有的cell能夠判斷縮進量。
同時,他們分析了forget gate, in gate和out gate的開關狀況,若gate值低於0.1則認爲是「左飽和」,若gate值高於0.9則認爲是「右飽和」。他們發現,在forget gate中,存在「右飽和」的gate去記錄遠距離的信息,而在output gate中,則不存在連續飽和的gate。這個發現與LSTM的特性吻合。

2017年,OpenAI的研究者們發現,在循環神經網絡中,存在一個對於情感十分敏感的神經元。
他們證實了這個神經元的數值對於情感分類任務十分重要。而且,若是僅僅用這個神經元進行情感分類,也能夠取得很是好的效果。下圖展現了該神經元在charactor level的數值大小,綠色表示正向情感,紅色表示負向情感。

筆者認爲,神經元的可視化能夠很客觀的體現模型推理的過程。然而,這種方法也存在一些問題。
其一,並不是全部的神經元可視化出來都能讓人發現規律。大多數神經元看起來都是沒有規律的。所以,可視化的方法須要人爲判斷它可能表示哪些信息,這並不具備廣泛性。
其二,可視化的方法雖然能夠直觀看出神經元的功能,可是卻沒法經過一個量化指標來評判。其三,這種方法具有不少不肯定性,在業務場景中很難發揮價值。


3、診斷分類器ide



經過可視化的方法有時很難看出一個向量包含什麼樣的信息。所以咱們能夠換一個思路。即:若是一個向量包含某個信息,那麼它就有能力去作須要這個信息的任務。
所以,另外一個經常使用的方法是:對於模型內部的一個向量,咱們能夠訓練一個簡單的模型(一般是線性分類器)去預測一些特徵(一般是一些語言學特徵)。用這種方法,咱們就能夠知道,在模型內部的每一層究竟學到了什麼。
2019年,Google的研究員用這種方法對Bert進行了分析。他們將Bert每一層輸出的embedding提取出來,在8個任務上用診斷分類器進行試驗。
實驗代表,Bert在它的transormer層中,進行了傳統NLP的pipeline(pos tagging, 指代消解等)的任務。
同時還代表,這些pipeline中的細分任務能夠動態調整本身以得到更好的表現。下圖展現了完成這些任務所須要信息在哪一層的指望值,以及這些層的「重心」在哪裏。

從結果能夠看出,對於一些底層的任務(例如pos tagging,實體識別等),會在較低層就得到了須要的信息,而對於一些複雜任務(例如指代消解)則在較高層才能得到須要的信息。這和咱們的預期相符合。
筆者認爲,診斷分類器這種方法能夠較爲簡單地對模型的訓練過程進行剖析,而且更適合於深層模型。
同時,這對於模型的優化能起到啓發做用。2020年Jo & Myaeng的ACL文章指出,在使用Bert時,若選擇中間層的一些embedding和最後一層的embedding一塊兒進行任務,比僅僅用最後一層可以取得更好的效果。


4、Attention工具



因爲Attention自己的特色,詞與詞之間會有一個權重,這個權重也許可以表達出模型的推理過程。
2019年,斯坦福大學和facebook的研究人員對Bert中的attention的head進行分析,發現不一樣的head會提取到不一樣的信息,且直接用head進行細分任務也能夠取得較爲不錯的效果。
圖片
然而,對於attention是否可以表示模型的推理過程,還存在不少的爭議。
一樣在2019年,Jain & Wallance的文章《Attention is not explaination》,指出attention和gradient-based分析方法得出的結論不一樣,且不一樣的attention weight能夠致使相同的預測。
所以主張attention和輸出結果沒有直接的聯繫。而Wiegreffe & Pinter 的文章《Attention is not not explaination》反駁了J&W的觀點,認爲其實驗設計不充分,不能證實其結論。
2020年的ACL文章中,關於attention的討論依舊是熱點。Abnar & Zuidema提出一種可使attention更加具備解釋性的方法。
因爲在第一層Transformer以後,不一樣token的信息被混合了起來,所以他們提出一種rollout的方法能夠將混合的信息抽離出來。
Sen 等人提出,將模型的attention和人爲標註的attention進行比對,並提出計算兩者類似程度的方法。而Pruthi等人認爲,基於attention的解釋不具備可靠性,由於能夠經過人爲操縱的方法令人人爲模型是無偏的,而事實卻並不是如此。
筆者認爲,attention自帶可解釋的特性,相較於其餘模型有着自然的優點。而如何運用attention進行解釋,還須要更多的研究。而且,這種方法侷限在模型自己,並不適用於其餘的模型。此外,有關attention的可解釋性如何應用在模型優化上,還須要更多的思考。


5、Rationals測試



Rationals能夠認爲是作一項任務的"Supporting evidence", 能夠理解爲「關鍵詞」組合。
2019年,DeYoung等人提出一個benchmark,叫作ERASER(Evaluating Rationals and Simple English Reasoning). 
他們認爲,人們在進行NLP相關任務時,會重點關注一些「關鍵詞」。將輸入文本的部分詞語抹去,會致使任務的置信度降低甚至失敗。而使得任務置信度降低最大的關鍵詞組合,就能夠認爲是模型認爲的「關鍵詞」。
他們提出了7個任務的數據集,其中包含了人爲標註的「關鍵詞」。經過判斷模型認爲的「關鍵詞」和人工標註的「關鍵詞」之間的關係,就能夠判斷出模型是否在用人們認爲的關鍵信息進行任務。
以下圖所示,第一個圖展現了4個任務的人爲標註的「關鍵詞」,第二張圖展現了判別模型認爲的「關鍵詞」的方法。

筆者認爲,這種方法雖然不能解釋出模型的推理過程,可是能夠探究出對模型而言的關鍵詞有哪些。 而且,這種方法適用於全部的模型。
此外,這種方法的成本在於人爲標註「關鍵詞」,而做爲評測的數據集,並不須要大量的數據,且能夠重複利用。所以,這種方法在模型質量保證方面,能夠較好的落地。


6、對抗數據集優化




將數據進行一些微小的改變,根據這些擾動是否會對模型結果形成干擾,能夠分析出模型的推理過程。
例如,2019年,Niven & Kao在Bert進行推理任務的數據集中,加入了not,致使Bert的推理能力直線降低到盲猜水平。由此能夠看出,Bert在進行推理時,是將not做爲一個明顯的「線索」。若將這個線索改變,模型的能力就會大幅降低。

然而,對抗數據集的構造比較有難度,在某些任務中,須要大量語言學知識。所以,對抗數據集的構形成本很高。
2020年ACL最佳論文《Beyond Accuracy: Behavioral Testing of NLP Models with CheckList》提出了一套NLP模型診斷的方法。
他們提出一個經常使用語言學特徵的capabilities和test types的矩陣,能夠幫助較爲完善的構造測試數據集。他們根據軟件測試的方法,提出了三個capabilities, 即,最小單元(MFT)、不變性(INV)和方向性。而且提出了一個工具可以快速生成大量的測試數據。
圖片
筆者認爲,這種checklist的方法,具備較低的成本,而且可以較爲完善的構造對抗數據集。
雖然其沒法解釋出模型的推理過程,可是它能夠解釋出模型是「怎樣看數據」的。即,哪些類型的數據擾動會對模型產生較大的影響,模型更關注哪些類型的擾動信息等等。這在實際業務場景中,能夠做爲模型魯棒性保證的方法。目前咱們也已經嘗試用這種方法進行模型評測。
ui

7、局部代理模型 lua



局部代理模型是一種「過後分析」的方法。它能夠適用於全部的模型。它的基本思想是,用一些可解釋的模型,去局部擬合不可解釋的黑盒模型,使得模型結果具備必定的可解釋性。
2016年,Ribeiro等人提出了LIME方法。對於每一條數據,對其進行微小的擾動,生成一個數據子集,而且獲得模型對於這個子集中的數據的預測結果。而後,用可解釋的模型(例如線性迴歸),對這個子集中的結果進行擬合,以此就能夠局部解釋這條數據的結果。
圖片
相似的方法還有SHAP。然而,這種方法獲得的解釋並不具備魯棒性。
由於咱們認爲,微小的調整並不會對結果形成很大的影響,而這對於局部代理模型而言並不老是成立。而且,若是訓練數據和測試數據的分佈不一樣,局部代理模型的結果就不可信。
Rahnama等人的研究《A study of data and label shift in the LIME framework》就提出了這一點。
他們經過實驗發現,經過LIME的擾動過程獲得的數據和訓練數據的分佈有較大的差別。此外,LIME的解釋很大程度上依賴於超參數的選擇。例如,應該選擇多少個擾動數據點?如何設置這些點的權重?正則化的強度須要多少?
筆者認爲,局部代理模型雖然可以對全部模型進行解釋,但這個解釋並不能反映模型的推理過程,而是「人們認爲的模型推理過程」。在業務場景中,對於決策支持的模型(例如智能投顧)也許有效,可是這種方法的faithfulness仍然值得討論和研究。spa

相關文章
相關標籤/搜索