隨著深度學(xué)習(xí)的發(fā)展,越來(lái)越多的模型誕生,并且在訓(xùn)練集和測(cè)試集上的表現(xiàn)甚至于高于人類(lèi),但是深度學(xué)習(xí)一直被認(rèn)為是一個(gè)黑盒模型,我們通俗的認(rèn)為,經(jīng)過(guò)訓(xùn)練后,機(jī)器學(xué)習(xí)到了數(shù)據(jù)中的特征,進(jìn)而可以正確的預(yù)測(cè)結(jié)果,但是,對(duì)于機(jī)器到底學(xué)到了什么,仍然是個(gè)黑盒模型,我們迫切想要知道機(jī)器所學(xué)習(xí)到的特征,這就需要對(duì)模型的可解釋性進(jìn)行研究。
本文主要介紹一下機(jī)器學(xué)習(xí)可解釋性的相關(guān)內(nèi)容與實(shí)現(xiàn)方法,并回答以下問(wèn)題。
- 什么是機(jī)器學(xué)習(xí)可解釋性?
- 為什么要進(jìn)行可解釋性的研究
- Lime可解釋性的原理
- Lime可解釋性的代碼實(shí)現(xiàn)
什么是機(jī)器學(xué)習(xí)可解釋性?
對(duì)于機(jī)器學(xué)習(xí)的用戶(hù)而言,模型的可解釋性是一種較為主觀的性質(zhì),我們無(wú)法通過(guò)嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)表達(dá)方法形式化定義可解釋性。通常,我們可以認(rèn)為機(jī)器學(xué)習(xí)的可解釋性刻畫(huà)了“人類(lèi)對(duì)模型決策或預(yù)測(cè)結(jié)果的理解程度”,即用戶(hù)可以更容易地理解解釋性較高的模型做出的決策和預(yù)測(cè)。
從哲學(xué)的角度來(lái)說(shuō),為了理解何為機(jī)器學(xué)習(xí)的可解釋性,我們需要回答以下幾個(gè)問(wèn)題:首先,我們應(yīng)該如何定義對(duì)模型的“解釋”,怎樣的解釋才足夠好?許多學(xué)者認(rèn)為,要判斷一個(gè)解釋是否足夠好,取決于這個(gè)解釋需要回答的問(wèn)題是什么。對(duì)于機(jī)器學(xué)習(xí)任務(wù)而言,我們最感興趣的兩類(lèi)問(wèn)題是“為什么會(huì)得到該結(jié)果”和“為什么結(jié)果應(yīng)該是這樣”。而理想狀態(tài)下,如果我們能夠通過(guò)溯因推理的方式恢復(fù)出模型計(jì)算出輸出結(jié)果的過(guò)程,就可以實(shí)現(xiàn)較強(qiáng)的模型解釋性。
實(shí)際上,我們可以從“可解釋性”和“完整性”這兩個(gè)方面來(lái)衡量一種解釋是否合理?!翱山忉屝浴敝荚谕ㄟ^(guò)一種人類(lèi)能夠理解的方式描述系統(tǒng)的內(nèi)部結(jié)構(gòu),它與人類(lèi)的認(rèn)知、知識(shí)和偏見(jiàn)息息相關(guān);而“完整性”旨在通過(guò)一種精確的方式來(lái)描述系統(tǒng)的各個(gè)操作步驟(例如,剖析深度學(xué)習(xí)網(wǎng)絡(luò)中的數(shù)學(xué)操作和參數(shù))。然而,不幸的是,我們很難同時(shí)實(shí)現(xiàn)很強(qiáng)的“可解釋性”和“完整性”,這是因?yàn)榫_的解釋術(shù)語(yǔ)往往對(duì)于人們來(lái)說(shuō)晦澀難懂。同時(shí),僅僅使用人類(lèi)能夠理解的方式進(jìn)行解釋由往往會(huì)引入人類(lèi)認(rèn)知上的偏見(jiàn)。
此外,我們還可以從更宏大的角度理解“可解釋性人工智能”,將其作為一個(gè)“人與智能體的交互”問(wèn)題。如圖 1所示,人與智能體的交互涉及人工智能、社會(huì)科學(xué)、人機(jī)交互等領(lǐng)域。
為什么要進(jìn)行可解釋性的研究
在當(dāng)下的深度學(xué)習(xí)浪潮中,許多新發(fā)表的工作都聲稱(chēng)自己可以在目標(biāo)任務(wù)上取得良好的性能。盡管如此,用戶(hù)在諸如醫(yī)療、法律、金融等應(yīng)用場(chǎng)景下仍然需要從更為詳細(xì)和具象的角度理解得出結(jié)論的原因。為模型賦予較強(qiáng)的可解釋性也有利于確保其公平性、隱私保護(hù)性能、魯棒性,說(shuō)明輸入到輸出之間個(gè)狀態(tài)的因果關(guān)系,提升用戶(hù)對(duì)產(chǎn)品的信任程度。下面,我們從“完善深度學(xué)習(xí)模型”、“深度學(xué)習(xí)模型與人的關(guān)系”、“深度學(xué)習(xí)模型與社會(huì)的關(guān)系”3 個(gè)方面簡(jiǎn)介研究機(jī)器學(xué)習(xí)可解釋性的意義。
(1)完善深度學(xué)習(xí)模型
大多數(shù)深度學(xué)習(xí)模型是由數(shù)據(jù)驅(qū)動(dòng)的黑盒模型,而這些模型本身成為了知識(shí)的來(lái)源,模型能提取到怎樣的知識(shí)在很大程度上依賴(lài)于模型的組織架構(gòu)、對(duì)數(shù)據(jù)的表征方式,對(duì)模型的可解釋性可以顯式地捕獲這些知識(shí)。
盡管深度學(xué)習(xí)模型可以取得優(yōu)異的性能,但是由于我們難以對(duì)深度學(xué)習(xí)模型進(jìn)行調(diào)試,使其質(zhì)量保證工作難以實(shí)現(xiàn)。對(duì)錯(cuò)誤結(jié)果的解釋可以為修復(fù)系統(tǒng)提供指導(dǎo)。
(2)深度學(xué)習(xí)模型與人的關(guān)系
在人與深度學(xué)習(xí)模型交互的過(guò)程中,會(huì)形成經(jīng)過(guò)組織的知識(shí)結(jié)構(gòu)來(lái)為用戶(hù)解釋模型復(fù)雜的工作機(jī)制,即「心理模型」。為了讓用戶(hù)得到更好的交互體驗(yàn),滿(mǎn)足其好奇心,就需要賦予模型較強(qiáng)的可解釋性,否則用戶(hù)會(huì)感到沮喪,失去對(duì)模型的信任和使用興趣。
人們希望協(xié)調(diào)自身的知識(shí)結(jié)構(gòu)要素之間的矛盾或不一致性。如果機(jī)器做出了與人的意愿有出入的決策,用戶(hù)則會(huì)試圖解釋這種差異。當(dāng)機(jī)器的決策對(duì)人的生活影響越大時(shí),對(duì)于這種決策的解釋就更為重要。
當(dāng)模型的決策和預(yù)測(cè)結(jié)果對(duì)用戶(hù)的生活會(huì)產(chǎn)生重要影響時(shí),對(duì)模型的可解釋性與用戶(hù)對(duì)模型的信任程度息息相關(guān)。例如,對(duì)于醫(yī)療、自動(dòng)駕駛等與人們的生命健康緊密相關(guān)的任務(wù),以及保險(xiǎn)、金融、理財(cái)、法律等與用戶(hù)財(cái)產(chǎn)安全相關(guān)的任務(wù),用戶(hù)往往需要模型具有很強(qiáng)的可解釋性才會(huì)謹(jǐn)慎地采用該模型。
(3)深度學(xué)習(xí)模型與社會(huì)的關(guān)系
由于深度學(xué)習(xí)高度依賴(lài)于訓(xùn)練數(shù)據(jù),而訓(xùn)練數(shù)據(jù)往往并不是無(wú)偏的,會(huì)產(chǎn)生對(duì)于人種、性別、職業(yè)等因素的偏見(jiàn)。為了保證模型的公平性,用戶(hù)會(huì)要求深度學(xué)習(xí)模型具有檢測(cè)偏見(jiàn)的功能,能夠通過(guò)對(duì)自身決策的解釋說(shuō)明其公平。
深度學(xué)習(xí)模型作為一種商品具有很強(qiáng)的社會(huì)交互屬性,具有強(qiáng)可解釋性的模型也會(huì)具有較高的社會(huì)認(rèn)可度,會(huì)更容易被公眾所接納。
Lime可解釋性的原理
Lime(Local Interpretable Model-Agnostic Explanations)是使用訓(xùn)練的局部代理模型來(lái)對(duì)單個(gè)樣本進(jìn)行解釋。假設(shè)對(duì)于需要解釋的黑盒模型,取關(guān)注的實(shí)例樣本,在其附近進(jìn)行擾動(dòng)生成新的樣本點(diǎn),并得到黑盒模型的預(yù)測(cè)值,使用新的數(shù)據(jù)集訓(xùn)練可解釋的模型(如線(xiàn)性回歸、決策樹(shù)),得到對(duì)黑盒模型良好的局部近似。值得注意的是,可解釋性模型是黑盒模型的局部近似,而不是全局近似。
實(shí)現(xiàn)步驟
- 如上圖是一個(gè)非線(xiàn)性的復(fù)雜模型,藍(lán)/粉背景的交界為決策函數(shù);
- 選取關(guān)注的樣本點(diǎn),如圖粗線(xiàn)的紅色十字叉為關(guān)注的樣本點(diǎn)X;
- 定義一個(gè)相似度計(jì)算方式,以及要選取的K個(gè)特征來(lái)解釋?zhuān)?/li>
- 在該樣本點(diǎn)周?chē)M(jìn)行擾動(dòng)采樣(細(xì)線(xiàn)的紅色十字叉),按照它們到X的距離賦予樣本權(quán)重;
- 用原模型對(duì)這些樣本進(jìn)行預(yù)測(cè),并訓(xùn)練一個(gè)線(xiàn)性模型(虛線(xiàn))在X的附近對(duì)原模型近似。
其數(shù)學(xué)表示如下:
對(duì)于實(shí)例x的解釋模型g,我們通過(guò)最小化損失函數(shù)來(lái)比較模型g和原模型f的近似性,其中,代表了解釋模型g的模型復(fù)雜度,G表示所有可能的解釋模型(例如我們想用線(xiàn)性模型解釋?zhuān)瑒tG表示所有的線(xiàn)性模型),定義了x的鄰域。我們通過(guò)最小化L使得模型f變得可解釋。其中,模型g,鄰域范圍大小,模型復(fù)雜度均需要定義。
對(duì)于結(jié)構(gòu)化數(shù)據(jù),首先確定可解釋性模型,興趣點(diǎn)x,鄰域的范圍。LIME首先在全局進(jìn)行采樣,然后對(duì)于所有采樣點(diǎn),選出興趣點(diǎn)x的鄰域,然后利用興趣點(diǎn)的鄰域范圍擬合可解釋性模型。如圖。
其中,背景灰色為負(fù)例,背景藍(lán)色為正例,黃色為興趣點(diǎn),小粒度黑色點(diǎn)為采樣點(diǎn),大粒度黑點(diǎn)為鄰域范圍,右下圖為L(zhǎng)IME的結(jié)果。
LIME的優(yōu)點(diǎn)我們很容易就可以看到,原理簡(jiǎn)單,適用范圍廣,可解釋任何黑箱模型。
Lime可解釋性的代碼實(shí)現(xiàn)
算法流程
宏觀來(lái)看:
首先,在待解釋的模型中取一個(gè)待解釋樣本,之后隨機(jī)生成擾動(dòng)樣本,并以與待解釋樣本的距離作為標(biāo)準(zhǔn)附加權(quán)重,再將得到的結(jié)果作為輸入投入待解釋模型中,同時(shí)選擇在局部考察的待訓(xùn)練可解釋模型(如決策樹(shù)、邏輯回歸等等),最終即可訓(xùn)練出在可解釋特征維度上的可解釋性模型。
微觀來(lái)看:
選取待解釋樣本X,并轉(zhuǎn)換為可解釋特征維度上的樣本X’。
通過(guò)隨機(jī)擾動(dòng),得到其余在可解釋特征維度上的樣本Z’。
將Z’恢復(fù)至原始維度,計(jì)算f(z)與相似度。
利用自適應(yīng)相似度對(duì)各個(gè)樣本點(diǎn)進(jìn)行加權(quán)。
以X’作為特征,f(z)作為標(biāo)準(zhǔn)訓(xùn)練局部可解釋模型(如圖虛線(xiàn))。
import sklearn
import sklearn.datasets
import sklearn.ensemble
import numpy as np
import lime
import lime.lime_tabular
#讀取數(shù)據(jù)
x = np.array(data[feats].fillna(-99999))
y = np.array(data['target'])
# 數(shù)據(jù)集劃分
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state = 400)
# 以XGBoost模型為例
model_xgb = xgb.XGBClassifier(
learning_rate =0.05,
n_estimators=50,
max_depth=3,
min_child_weight=1,
gamma=0.3,
subsample=0.8,
colsample_bytree=0.8,
objective= 'multi:softprob',
nthread=4,
scale_pos_weight=1,
num_class=2,
seed=27
).fit(X_train, y_train)
# 生成解釋器
explainer = lime.lime_tabular.LimeTabularExplainer(X_train, feature_names=feats,
class_names=[0,1], discretize_continuous=True)
# 對(duì)局部點(diǎn)的解釋
i = np.random.randint(0, X_test.shape[0])
#參數(shù)解釋
#image:待解釋圖像
#classifier_fn:分類(lèi)器
#labels:可解析標(biāo)簽
#hide_color:隱藏顏色
#top_labels:預(yù)測(cè)概率最高的K個(gè)標(biāo)簽生成解釋
#num_features:說(shuō)明中出現(xiàn)的最大功能數(shù)
#num_samples:學(xué)習(xí)線(xiàn)性模型的鄰域大小
#batch_size:批處理大小
#distance_metric:距離度量
#model_regressor:模型回歸器,默認(rèn)為嶺回歸
#segmentation_fn:分段,將圖像分為多個(gè)大小
#random_seed:隨機(jī)整數(shù),用作分割算法的隨機(jī)種子
exp = explainer.explain_instance(X_test[i], model_xgb.predict_proba, num_features=6)
# 顯示詳細(xì)信息圖
exp.show_in_notebook(show_table=True, show_all=True)
# 顯示權(quán)重圖
exp.as_pyplot_figure()
結(jié)果示例:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-803274.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803274.html
到了這里,關(guān)于機(jī)器學(xué)習(xí)可解釋性一(LIME)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!