|
公司基本資料信息
|
問題背景:
機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型在賦能2B的實(shí)際業(yè)務(wù)場景時,模型的可解釋性一直是影響模型快速落地的瓶頸。為非AI相關(guān)背景的客戶或合作伙伴解釋模型(尤其是黑盒模型)的訓(xùn)練和預(yù)測過程,以及某個預(yù)測結(jié)果背后蘊(yùn)含的推理,往往是一件很有必要但很棘手的事情。對于我們目前從事的智能司法場景尤其如此:案件的判決往往在一定的司法框架內(nèi)進(jìn)行推理,每一個步驟都必須有法可依;那么智能司法產(chǎn)品的結(jié)果同樣需要基于對應(yīng)的法律法規(guī)給出令人信服的解釋,否則模型盡管在驗(yàn)證集上效果很好,也并不能得到用戶的信任。
為此,我們希望我們構(gòu)建的模型創(chuàng)建一個相對通用的解釋器(explainer)模塊。該模塊能夠給出模型預(yù)測行為的一種相對直觀的表征形式,以便我們清晰地知道這個“AI律師”是否足夠有經(jīng)驗(yàn);同時也希望該解釋器具有一定的模型無關(guān)性(Model-Agnostic),這樣我們可以擴(kuò)展更多得模型。LIME(Local Interpretable Model-Agnostic Explanations)的出現(xiàn)為我們提供了一種解決的思路。目前司法場景下的數(shù)據(jù)大致可以分為文本形式(Text)和結(jié)構(gòu)化形式(Tabular),本次我們的探索主要集中在對結(jié)構(gòu)化特征的應(yīng)用上。
LIME簡介:
LIME在2016年的KDD上提出,其論文《“Why Should I Trust You?” Explaining the Predictions of Any Classifier》提出了一種用預(yù)測值附近的局部線性模型來解釋整體復(fù)雜模型的思想,其中包括的主要技術(shù)有:
◎ 預(yù)測值附近的樣本點(diǎn)選擇
◎ 評估模型整體需要的預(yù)測值集合篩選
◎ 解釋器好壞評估的實(shí)驗(yàn)
后兩點(diǎn)在實(shí)際場景中應(yīng)用的不多,因此我們只關(guān)注如何選擇預(yù)測值附近的樣本點(diǎn)及構(gòu)建對應(yīng)的線性模型,以及如何用該線性模型來解釋模型。
樣本點(diǎn)選擇:對結(jié)構(gòu)化特征的分類模型,LIME樣本點(diǎn)選擇主要在lime_tabular.py中LimetabularExplainer類的__data_inverse函數(shù)實(shí)現(xiàn)。正如注釋所提到,對于非categorical類型的特征,LIME在預(yù)測點(diǎn)附近用一個正態(tài)分布Norm(0,1)來產(chǎn)生指定個數(shù)(num_samples)的樣本:
1. data = self.random_state.normal(
2. 0, 1, num_samples * data_row.shape[0]).reshape(
3. num_samples, data_row.shape[0])
并根據(jù)指定的尺度做變換:
1. if self.sample_around_instance:
2. data = data * self.scaler.scale_ + data_row
3. else:
4. data = data * self.scaler.scale_ + self.scaler.mean_
而對于categorical類型的特征,則根據(jù)訓(xùn)練集的分布進(jìn)行頻率采樣,并且當(dāng)某一樣本的categorical特征和預(yù)測值對應(yīng)特征相等時置1。采樣過程將生成一個num_sample * K的矩陣,其中K表示待解釋的特征維度,后續(xù)的線性模型則在此基礎(chǔ)上建模:
1. nverse_column = self.random_state.choice(values, size=num_samples, replace=True, p=freqs)
2. binary_column = np.array([1 if x == first_row[column]
3. else 0 for x in inverse_column])
線性模型構(gòu)建:局部線性擬合的實(shí)現(xiàn)在lime_base.py的explain_instance_with_data中,回歸方法的選擇上應(yīng)用了有偏的嶺回歸模型,這種回歸方法通過對回歸系數(shù)增加懲罰項(xiàng)來控制模型的復(fù)雜度,和ML/DL模型中在損失函數(shù)中加正則項(xiàng)是同樣的道理
通過懲罰項(xiàng)的引入,就使得模型的特征存在一定的共線性情況時,也能得到相比于一般的線性回歸更加魯棒的回歸結(jié)果,同時用線性回歸簇也充分考慮了回歸函數(shù)的復(fù)雜度問題。另外,在用sklearn的嶺回歸模型擬合樣本點(diǎn)過程中,對樣本點(diǎn)也進(jìn)行了加權(quán),具體的權(quán)重是和樣本點(diǎn)到預(yù)測點(diǎn)的距離有關(guān),這種做法的出發(fā)點(diǎn)在于給和預(yù)測點(diǎn)更相似的樣本賦予更大的權(quán)重,進(jìn)一步規(guī)避隨機(jī)采樣過程中帶來的解釋偏差問題
1、def kernel(d):
2、 np.sqrt(np.exp(-(d ** 2) / kernel_width ** 2))
通過嶺回歸擬合得到的各特征及其權(quán)重即可作為模型在該預(yù)測點(diǎn)的解釋。不過,在模型的特征比較多的時候,LIME也提供了對特征重要性的評估和篩選過程,包括三種模式的篩選:forward_selection、highest_weights、lasso_path,具體內(nèi)容感興趣的同學(xué)可以對其進(jìn)行深入探索。
LIME的實(shí)際應(yīng)用
就我們的智能司法場景來說,每個預(yù)測點(diǎn)代表了一次案例的結(jié)果推理,其中結(jié)構(gòu)化的特征是從對應(yīng)的訴求表述、法規(guī)法條和證據(jù)文本中加工得到,因此LIME在利用局部線性擬合獲得預(yù)測點(diǎn)附近的特征權(quán)重后,就可以反向映射到原始的文本數(shù)據(jù)中,進(jìn)而可視化的展示出模型在該預(yù)測點(diǎn)的原理表征:考慮了哪些特征,不同特征在不同分類上的權(quán)重分配是怎么樣。
LIME在結(jié)構(gòu)化特征上的應(yīng)用實(shí)際主要就是調(diào)用以下兩個方法的過程:
3.1 explainer = lime.lime_tabular.LimetabularExplaine()
傳入的參數(shù)包括:
X:訓(xùn)練樣本,從原始的文本數(shù)據(jù)通過分詞、關(guān)鍵詞提取、向量化等方式獲得,例如可以根據(jù)在訴求文本中是否出現(xiàn)了關(guān)鍵證據(jù)模式(1.出現(xiàn),0.未出現(xiàn))來將文本特征轉(zhuǎn)化為結(jié)構(gòu)化特征,這里我們通過一個.npy文件導(dǎo)入訓(xùn)練樣本;
feature_names: 特征名稱list,是各個特征具象化的表征;
class_names:分類名稱list,如果是兩類,可設(shè)置為[“0”,“1”],代表支持或不支持訴求;
sample_around_instance:True,表示在預(yù)測點(diǎn)附近采樣,選擇False則會在訓(xùn)練樣本的質(zhì)心點(diǎn)附近生成樣本集進(jìn)行擬合。
LimetabularExplaine構(gòu)造了一個解釋器的類,并完成一些初始化的工作,真正的解釋器實(shí)現(xiàn),包括局部線性模型的擬合都會調(diào)用到其中的explain_instance方法。
3.2 exp = explainer.explain_instance()
傳入的參數(shù)包括:
np.array(feature_list):是實(shí)際預(yù)測數(shù)據(jù)的結(jié)構(gòu)化特征表示,例如我們的預(yù)測數(shù)據(jù)假設(shè)為一段訴求文本,則根據(jù)生成訓(xùn)練樣本X的方法轉(zhuǎn)化為一個K維的向量,K表示特征維度;
clf.predict_proba:clf是通過sklearn的joblib導(dǎo)入的已訓(xùn)練好的模型文件,對于分類問題來說,需要以概率的形式給出屬于各個類的可能性;
num_features:希望在解釋器中展示的特征的個數(shù);
top_labels:對于多分類問題來說,選取預(yù)測概率的若干個類;
num_samples:采樣點(diǎn)的個數(shù),預(yù)測值附近采樣點(diǎn)的個數(shù)。
根據(jù)司法場景的實(shí)際情況處理好相應(yīng)的參數(shù),并將參數(shù)輸入到LIME的解釋器模塊,得到了一個Explainer對象,該對象可以通過as_list或as_map方法轉(zhuǎn)換為<特征,權(quán)重>對,并經(jīng)過一定的特征映射和可視化,作為模型的局部解釋進(jìn)行輸出。
LIME的性能問題
實(shí)際應(yīng)用以及對LIME的原理探索的過程中,我們發(fā)現(xiàn)應(yīng)用LIME對某個預(yù)測點(diǎn)進(jìn)行解釋的時間復(fù)雜度,和以下這些參數(shù)有比較強(qiáng)的關(guān)系:feature_selection(特征選擇方式)、discretize_continuous(是否針對連續(xù)數(shù)據(jù)做離散化)、num_samples(預(yù)測值附近的采樣個數(shù))等。而對于一個交付線上應(yīng)用的智能司法產(chǎn)品來說,解釋模塊如果時間復(fù)雜度太高,對于用戶而言體驗(yàn)會很差,同樣也是不可用的,反而會給用戶對AI模型的信任度有副作用。一個實(shí)際使用的解釋器需要充分考慮解釋準(zhǔn)確性和時間復(fù)雜度的trade off,為此我們基于上述參數(shù)對LIME的時間復(fù)雜度進(jìn)行了簡單對比:
從上述對比結(jié)果來看:特征的選擇方式對LIME的時間復(fù)雜度的影響,如果采用forward_selection的方式選擇特征,固然能獲得更好的擬合效果(R2-Score),但是整體的時間消耗是線上應(yīng)用不能接受的;是否對非categorical特征進(jìn)行離散化也是影響時間復(fù)雜度的重要因素,基于訓(xùn)練樣本的離散化過程同樣需要消耗比較多的時間;采樣點(diǎn)的個數(shù)和時間基本是正向相關(guān)的關(guān)系,同樣地,更細(xì)致的采樣雖然使得局部的擬合效果更好,但也是以更多的時間消耗為代價。
針對LIME的性能和效果的折衷問題,理論上可以通過以下兩種方案解決:
1、基于已知的訓(xùn)練數(shù)據(jù)集,把LIME的特征選擇過程、特征離散化過程等放到線下作為預(yù)處理的一部分,在線上直接使用預(yù)處理的結(jié)果;以特征的離散化為例,不論是按照四分位數(shù)還是按照十分位數(shù)進(jìn)行離散化,都可以把X預(yù)處理后,再以.npy的方式加載到模型中;
2、更一般性的,在線下訓(xùn)練一個訓(xùn)練集中樣本點(diǎn)到各特征權(quán)重向量的映射,再根據(jù)實(shí)際預(yù)測點(diǎn)和訓(xùn)練樣本點(diǎn)的距離度量求得預(yù)測點(diǎn)處的特征權(quán)重向量。
其他的Model Explainer:
其實(shí),對于ML/DL模型解釋性的探索并非在LIME提出后才開始:
簡單的線性模型,包括更廣義的LR其解釋性都是非常直觀的,每個特征的權(quán)重對于結(jié)果的影響蘊(yùn)含在模型本身之中,LIME其實(shí)也是通過局部的線性擬合來做局部點(diǎn)的解釋;
更復(fù)雜的如隨機(jī)森林模型的解釋,在2014年7月由Gilles Louppe給出了一種衡量特征重要性的工具,目前該工具已集成在scikit-learn的隨機(jī)森林Estimator中。但是和LIME相比,這個工具更關(guān)注的是整個模型特征重要性的評估,并未給出某個具體預(yù)測點(diǎn)的預(yù)測過程解釋,同時也只是支持了樹型的分類器。
于是在2015年8月,一個可對具體預(yù)測點(diǎn)進(jìn)行解釋的treeinterpreter出現(xiàn),該工具能夠?qū)⒕唧w預(yù)測點(diǎn)的預(yù)測概率,轉(zhuǎn)換為各個特征貢獻(xiàn)程度的求和,因此在單個點(diǎn)上進(jìn)行了模型的解釋;但是同樣的,目前只支持決策樹及其衍生相關(guān)算法。
2015年10月,Airbnb的研究團(tuán)隊(duì)同樣展示了在隨機(jī)森林上對決策閾值分布的研究。
直到2016年LIME提出,其意義不僅在于給出了一種相對來說模型無關(guān)的Explainer解決方案,同時還對模型解釋的好壞給出了一系列的衡量指標(biāo)并通過實(shí)驗(yàn)進(jìn)行了驗(yàn)證。
當(dāng)然,在LIME之后的2016年6月,論文《The Mythos of Model Interpretability》相對系統(tǒng)性地闡述了Machine Learning Model Transparency這件事。
在模型解釋性領(lǐng)域,目前state-of-the-art的結(jié)果來源于一個稱為SHAP的項(xiàng)目。SHAP(SHapley Additive exPlanations)也能對各種類型的機(jī)器學(xué)習(xí)模型給出一個相對統(tǒng)一的解釋結(jié)果,SHAP重要的是整合了包括LIME在內(nèi)的一系列Model-Explain方法,進(jìn)而給出了基于預(yù)測的特征貢獻(xiàn)值的衡量和可視化。
從Model Transparency的發(fā)展來看,對于單個預(yù)測點(diǎn)的解釋無論從理論還是可視化結(jié)構(gòu)上看都有了比較好的探索和結(jié)果,包括LIME和SHAP等工具;然而對于一個模型整體“解釋度”等指標(biāo)的定義,雖然LIME等也做過一定程度的定義和研究,但目前業(yè)界仍然沒有一個統(tǒng)一的標(biāo)準(zhǔn),不同的應(yīng)用場景對于模型的解釋性要求也不一樣,因此確實(shí)很難統(tǒng)一。我們在智能司法場景上目前雖然基于LIME做了一些嘗試,后續(xù)也會持續(xù)follow包括SHAP在內(nèi)的Model Explainer的進(jìn)展,但是更多的也是基于當(dāng)前業(yè)務(wù)場景的應(yīng)用,對于科學(xué)性地研究模型可解釋性,還是期待學(xué)術(shù)界有更多結(jié)果輸出。
圖1. 結(jié)構(gòu)化特征上的SHAP解釋結(jié)果,來源:https://github.com/slundberg/shap
圖2. 圖像分類模型的SHAP解釋結(jié)果,來源:https://github.com/slundberg/shap
代發(fā)趕集網(wǎng)信息http://www.b2bxc.com/