PPT下載:http://www.aicug.cn/#/docs
(視頻回放)
導讀
在商業(yè)領域的機器學習應用中,讓業(yè)務方理解模型邏輯,提升對預測結(jié)果的信心,對于算法項目的推進與落地起著關(guān)鍵的推動K作用。因此模型與預測輸出的可解釋性也日漸成為一個重要議題。在本次分享中,我們將介紹可解釋機器學習的技術(shù)原理,以及在模型開發(fā),項目落地中的一些應用案例介紹。
嘉賓介紹:周遠,觀遠數(shù)據(jù)聯(lián)合創(chuàng)始人,首席數(shù)據(jù)科學。致力于算法前沿技術(shù)在泛消費零售領域的應用落地,深度參與主導了多個AI項目在世界五百強客戶的應用和上線,和團隊一起多次斬獲智能零售方向的Hackathon冠軍。曾就職于微策略,阿里云從事商業(yè)智能產(chǎn)品與云計算系統(tǒng)研發(fā)工作。目前研究興趣主要包括可解釋機器學習,AutoML和云原生機器學習系統(tǒng)方向。
目錄
首先介紹下為什么需要可解釋機器學習。平時在做機器學習的項目中,會碰到不同的場景,比如淘寶推薦系統(tǒng),推薦了一些你可能感興趣的商品,如果推薦的不準確,其實不會造成什么大的損失,或不好的影響。那這種場景下,只需要關(guān)注下模型的準確率,盡可能做的越高越好。
另外一種場景,像OCR光學字符識別,它是一個比較成熟的場景,基本上可以達到100%的準確率。而像其他一些需求預測產(chǎn)品,比如金融信用評級系統(tǒng),醫(yī)學診斷系統(tǒng),它給出的是預測,比如需求預測接下來可能要買10箱可口可樂,假如預測多了,可能會造成貨物囤積,直接造成經(jīng)濟損失。在這種情況下,我們對機器學習的輸出是需要有要求的。還有信用評級,如果我申請了一個信用卡被拒絕了,我就會比較想知道為什么被拒絕,是不是對我的年齡或者性別有歧視等。還比如對Responsible AI這個話題,也會有涉及到這方面的需求,所以我們需要可解釋機器學習,讓模型輸出預測的同時,也要輸出預測變化的原因。
上圖介紹了在面對一個黑盒的 AI模型時,其不同職能的人,比如企業(yè)管理者、客服、IT或是模型開發(fā)工程師,他們對于機器學習的輸出是有不同訴求的。比如作為一個算法工程師,如果從黑盒的機器學習模型中得到的預測不好,和真實值偏差得非常遠,那他可能會想為什么這個模型給了這樣的預測,以及如何做能讓模型更好。
總結(jié)下,第一,模型輸出的影響重大,如果給出一個錯誤預測,代價會比較大,就需要可解釋機器學習。第二,特別是對算法工程師來說,在開發(fā)模型中便于Debug。當然也有一些其他的應用場景,比如規(guī)避模型的Bias?,F(xiàn)在社區(qū)上也有很多這方面的討論,如果模型是有一些性別歧視,或者種族歧視的話,這個模型是不能上線的。還有在模型交互時,如果碰到業(yè)務方的挑戰(zhàn),能給出一些解釋,也能提升業(yè)務用戶的接受度。還有各種各樣的審計需求、法規(guī)需求,像信用評級系統(tǒng),如果在線上部署系統(tǒng),就必須要符合透明性,或者可解釋性的需求。
下面我們切入正題,可解釋機器學習的各種各樣的方法。右邊這張圖,分為兩個維度,一個是模型預測的準確率,另一個是可解釋性。
當用一些簡單的模型,如右下角的線性模型,Decision Tree決策樹,或者一些概率圖模型,他們的準確率可能會差一些,因為模型本身結(jié)構(gòu)比較簡單,但它們的可解釋性會非常好。左上角,像神經(jīng)網(wǎng)絡或者一些集成學習方法,模型復雜度會非常高,準確率也會相應提高,但它的解釋性就會差一點。
方法分類上,線性模型這種屬于內(nèi)在可解釋模型。神經(jīng)網(wǎng)絡這種屬于事后解釋的方法,去打開黑盒看一下它里面到底是怎樣來做預測的。還有些是模型特定的方法,像神經(jīng)網(wǎng)絡可以通過后續(xù)模型的梯度來做些解釋。還有一些是黑盒的模型解釋方法,像SHAP這些技術(shù),它對模型沒有任何要求,都可以做一些解釋。
局部解釋和全局解釋,全局解釋類似于線性模型,它的權(quán)重就是這個模型全局上的表現(xiàn)是怎樣來做決策的。局部性的解釋,相當于對某一條單獨的樣本給出些特定的解釋。
接下來介紹一些內(nèi)在解釋性的模型,像線性回歸、線性邏輯回歸、決策樹等。訓練完這些模型后,通過系數(shù)和模型的結(jié)構(gòu)就能得到一個解釋。系數(shù)比較大,說明這個特征對整個輸出是有比較大的影響的。系數(shù)小,影響就較小。這是自帶的一個解釋性質(zhì)。
還有一些類似思路,比如RuleFit或者 Skope-rules這些軟件包,可以從數(shù)據(jù)中提取一些規(guī)則,自動構(gòu)建如右圖中顯示的這種規(guī)則。在預測的同時它的可解釋性是非常強的。像樸素貝葉斯,kNN,可以通過其他的樣本來進行解釋。
還有一些其他的內(nèi)在解釋模型,大體方法也都是在一些簡單模型上附加一些方法。像EBM或者 GAMxNN,它們屬于廣義加性模型,相當于在線性模型的基礎上,多構(gòu)建幾個線性模型,每一個線性模型描述系統(tǒng)的一部分,然后把它們加起來。像 Facebook的 Prophet也是一個典型的加性模型,它會分別給出seasonality或trend這方面的一些解釋。最近谷歌開源的 TFT,是一個時間序列的模型,它對于 attention機制做了特殊的處理,可以訓練完之后,同時讓注意力機制也可以作為一個對模型解釋的輸出。
還有像神經(jīng)網(wǎng)絡,大多是在訓練模型完成之后事后解釋。我們利用神經(jīng)網(wǎng)絡,去計算它的梯度然后做一些反向傳播,去做一些解釋。上圖是早年研究中我們怎么來理解 CNN模型它學到些什么,可以通過改變它的輸入,去讓它的每個CNN filter的 activation最大化。這樣就可以看到,前面幾層 CNN的層能學到邊緣,中間的能學到一些形狀,再高些能學到一些概念。這個其實就是利用了神經(jīng)網(wǎng)絡的求梯度,然后做反向傳播的原理,來做一些解釋。
這個例子也類似,是來自于 《Deep Learning with Python》那本書,里面介紹實現(xiàn)了 Grad-CAM的方法。像這個圖片,為什么預測這個圖片是大象呢?我們就去找大象 class的 activation,然后把它的梯度反向傳回去,再看整個 CNN的 layer上面各個像素對它的激活度影響最大的那些像素點是什么,然后用heat-map的形式畫出來。就可以看出是因為兩個象的頭部,這張圖片被分類為大象是最有貢獻度的,就形成了一個解釋。
除了神經(jīng)網(wǎng)絡模型之外,還有一大部分像樹模型、 Gradient Boosting這些,其實都可以用一些 Post-hoc模型無關(guān)的方法來做一些解釋。大致流程是,當有了一個 Black Box Model之后,可以用一些解釋的方法,去最終給用戶輸出一些說明。我們重點講一下 PDP、LIME和Shapley。
PDP的思想就是去修改特征值。把一個特征值在模型訓練完后,有了黑色模型,再輸入的時候,把它的特征值做一些修改,比如從0改到100,去看下模型的輸出是什么樣子。跟what-if的分析非常類似,去看它的輸出跟隨特征變化會有什么樣的變化。右邊這張圖,是兩個特征的交互,兩個特征分別做修改,去看它整體對模型輸出的影響。
LIME是一個局部解釋的方法。對每一個 instance都做出單獨的解釋,它的做法是在instance附近做些采樣。左邊這張圖,是要解釋紅色加粗的加號,首先在它周圍采了很多樣本,在局部樣本周圍采樣之后構(gòu)建一個線性模型。線性模型對各個特征的系數(shù)本身就是可解釋的。包括旁邊在LIME基礎上還有xLIME,它是對這個特征從小變到大,從當前這個點到更大的方向,構(gòu)造兩個線性模型來做解釋。
LIME也可以應用于文本。文本圖片的挑戰(zhàn)是,如果是表格類數(shù)據(jù)它是比較好采樣的。在采樣點附近加一點或者減一點,就很容易采到一個新的樣本,文本和圖片就會稍微難一點。比如圖片,它可能要用Super-pixel的方法去做一些像素塊的一些采樣。作者也在這篇文章里面提了他的一些具體做法效果還是不錯的。
Shapley背后的原理是博弈論的一個理論。比如上面這張圖,要解決的問題是,三個人去拼車,三個人在不同的地點下車,那么最后車費應該怎么均攤?遷移到機器學習解釋的問題就是,最后總的車費是模型的預測輸出,每個人要付多少車費就是三個特征的貢獻度。這背后有一套很復雜的運作邏輯,去把各個特征的 attribution算出來,也就是一個 local的解釋,對每一條預測樣本都做出一些解釋。
在Shapley理論的基礎上開源出一個Shap庫。也是目前模型解釋領域應用最廣泛的一個庫。它有很多內(nèi)置的可視化,在原版Shapley的運行基礎上做了很多運算的優(yōu)化。因為原版的計算開銷非常大,Shap在樹模型和深度學習模型中分別做了一些優(yōu)化,可以讓運行時間在一個可接受范圍內(nèi)。
接下來講下基于樣本的一些方法?;谶@個樣本得出的這個預測,那么怎么來解釋它呢?就是去找一條跟它類似的樣本,或是找一條具有代表性的樣本,然后去解釋這個模型的行為,或是解釋訓練數(shù)據(jù)它其實就是這么分布的。這個方法要有反事實的方法,或prototypes原型方法,還有像 adversarial對神經(jīng)網(wǎng)絡的攻擊方法。
下面講下反事實解釋。比如模型對貸款申請的模型進行判斷,輸入數(shù)據(jù)后它拒絕了貸款申請。Shapley的反事實解釋就是,需要在特征值上做哪些改變,可以在下一次就通過申請,預測的 label會從0變成1,這就是一個反事實解釋。
接下來是原型樣本解釋。Prototype是數(shù)據(jù)中具有代表性的樣本,反之,如果不太具有代表性,就稱為Criticism,類似于outlier,這種方法它能夠幫我們發(fā)現(xiàn)數(shù)據(jù)和模型的缺點。舉個例子,我們訓練的一個CNN模型做物體分類識別,prototype是一些正常的照片,Criticism里面發(fā)現(xiàn)了一些晚上光照不好拍的照片,如果這些照片分類為Criticism,就說明我們的數(shù)據(jù)集中可能對于夜間拍攝的照片的數(shù)量不夠。這個模型在這部分的數(shù)據(jù)準確率比較差需要加以改進。
最后這個是影響力樣本。相當于原先有全量數(shù)據(jù)去訓練,它會擬合出這條紅色線的信息模型。當把右下角這個離其他的點非常遠的 influential instance去掉之后,它就擬合出來新的藍色這條線了,可以看到斜率改變非常大,所以就可以叫右下角這個點是一個influential instance ,就是很有影響力的樣本。但這個方法也有些效率上的問題,是和Shapley的原理差不多,要考慮每一個樣本的影響力,要把每一個樣本去掉,重新訓練一個模型來看,開銷很大。也有些其他方法,像在神經(jīng)網(wǎng)絡模型上,可以快速在一個構(gòu)建好的模型上去尋找它影響力樣本,還有像集成樹模型也有方法是可以快速找到影響力樣本。
前面講了很多解釋方法,我們再來看一下解釋方法的對比。最上面是圖像類型的解釋。比較了Grad-CAM等類似于顯著圖的方法,還有像LIME、SHAP,最右邊這種通過 example數(shù)據(jù)的實例來進行解釋,中間是text的一些任務,最下面是一個時間序列的input,它分別通過不同的方法來做解釋。然后把這些解釋的方法放到了亞馬遜的 Mechanical Turk眾包平臺上去,讓人工來評判到底哪種解釋比較好??梢钥吹浇邮芏茸罡叩氖荅xplanation by example。
這個也給我們一個啟示,如果解釋是用于這種業(yè)務系統(tǒng),或者需要像業(yè)務方式進行解釋的話,使用樣本解釋的方式更好。但如果作為開發(fā)者的話, Shapley可能會更有用些。
這也是推特上的一個對模型解釋的方法選擇。包括你能不能接受精度比較差的模型,是不是需要做全局的解釋,還是 local的每一條instance的解釋,列了一個類似于決策圖,也可以根據(jù)這個來選擇。
那什么是好的解釋?也有很多這方面研究。尤其是當解釋的對象受眾是不一樣的群體的時候,要特別去關(guān)注一些點,從社會心理學層面,去看人們?nèi)绾谓邮苁裁礃邮且粋€好的解釋。學術(shù)界多這塊也有一些研究。
最近 AAAI 2021年的tutorial從數(shù)學性質(zhì)上總結(jié)了一系列的好的解釋的性質(zhì)。上面是各個解釋的方法它擁有這些性質(zhì)的多少,數(shù)量比較多的兩個是 Shapley Value和Integrated Gradient。這兩個方法如果用神經(jīng)網(wǎng)絡的話,可以用 IG,如果用一些傳統(tǒng)模型,Shapley Value也是一個非常好的選擇。
前面我們講了怎么用模型解釋的方法來Debug模型。右邊這張圖是如何構(gòu)建模型。中間這個人站在一堆矩陣、運算的東西上面,左邊這個漏斗是數(shù)據(jù)進來,右邊出口那邊結(jié)果會出來。當構(gòu)建起一個很復雜的模型后,數(shù)據(jù)進來結(jié)果出來,你一看這個準確率不太好,那接下來你會怎么做?
這個人把中間這堆很復雜的東西搗鼓下,就是調(diào)參數(shù),然后改一改模型結(jié)構(gòu),換個不同的激活函數(shù)或損失函數(shù),然后看看效果是不是變好了,不行的話再繼續(xù)進行調(diào)試。這樣的調(diào)試可能效率是比較低的,而且也不能準確的知道中間的模型到底做了些什么,所以對于模型的迭代開發(fā)來說,并沒有什么大的幫助。
有了模型解釋工具之后,可以幫助來改進這個流程。當有了結(jié)果之后,可以用模型解釋工具,對預測不太好的一些條目進行解釋??匆幌掠玫奶卣魇遣皇欠项A期,如果不符合,可以把人工經(jīng)驗植入到模型的構(gòu)建流程中去。通過模型解釋發(fā)現(xiàn)問題之后,跑了一輪新的訓練,出了一個新的結(jié)果,這個時候還可以繼續(xù)用解釋工具去驗證改進是不是有效。做實驗時,除了過擬合和欠擬合這種很直接從指標上看到的,其他一些更細節(jié)的問題,有了模型解釋工具之后是很有幫助的,會幫你加快迭代速度,而且很好的把人工業(yè)務經(jīng)驗融入進去。
這是一個挺好玩的例子,叫Dark Sight,同時做了一個降維和模型壓縮。訓練了classifier多分類的模型之后,可以把模型的預測輸出結(jié)果降維而且可視化在一個二維平面上。這個降維有個很好的特性,可以看到這中間兩個,一個是藍色塊,是一系列9的數(shù)字,粉色塊是4的數(shù)字。這兩個圈中間有個交界,把交界點數(shù)字實例點選出來,會發(fā)現(xiàn)這個數(shù)字長的既像9又像4。這個特性就能夠把模型覺得不好判斷的部分很直觀的可視化在畫布上,而且通過點擊交互的去分析,中間那些樣本又像9又像4,對模型來說比較困難,那么可以有針對性去做一些處理。這也給我們帶來一個啟發(fā),其實很多模型的降維和數(shù)據(jù)的降維,也是對模型的解釋有幫助的。
這是利用IG – Integrated Gradients,做 X光片的疾病診斷??梢钥吹皆驾斎氲膱D片是左邊。輸出的 label是這個人有疾病,我們用了 IG去做解釋后,可以看到右邊這邊有一些粉紅色的高亮,這表示在這些像素點上的模型認為樣本被分類為有問題,是貢獻度最大的像素點。
我們可以再把像素點放大,看看模型到底是做了什么樣的判斷。結(jié)果發(fā)現(xiàn)這個其實是上面有兩條用黑色記號筆畫的線,應該是醫(yī)生在診斷過程中看了X光片,確診出來有問題,就在這邊畫了兩條馬克筆的線,那模型學到的是醫(yī)生的標記,并不是學到了病理組織的 pattern,所以模型的判斷其實是有問題的。這樣就可以很方便的通過模型解釋的方法去找到模型中的一些弱點。
下面這個例子也是類似的,它也是用了IG的方法。這是一個VQA - Visual Question Answering看圖問題的任務。這個問題是在圖片中 white bricks有多對稱。模型給出的回答是very,它是很對稱這個回答是很make sense的正確回答。但是我們用了技術(shù)去對它進行了分析之后,發(fā)現(xiàn)紅色的文字具有很高貢獻度,藍色的是比較有負面貢獻度,灰色的幾乎是沒有什么貢獻度的,所以其實模型給出的這個回答預測,其實它是重點關(guān)注在這個How上面,所以關(guān)注度是有問題的。
因此如果我們把中間 symmetrical換成別的詞,比如asymmetrical,是不是不對稱的,或者how big有多大,甚至改成一句完全沒有什么含義的話。White bricks speaking, how fast,它回答是very。這樣就幫我們發(fā)現(xiàn)了這個模型的問題,它其實沒有真正的去理解這句話和圖片,但是它看似給出了一個很好的預測,這樣也是幫我們發(fā)現(xiàn)模型的一些問題。
如果是一些傳統(tǒng)的表格類的數(shù)據(jù),那么我們可以用SHAP來做分析。比如像XGBboost或者LightGBM,大家會經(jīng)常去分析 feature-importance,給出一個模型的全局解釋。其實用shap的話,可以給出一個更好的 feature-importance的解釋,它其實不光是特征的貢獻度從高到低排序,還可以是這個特征的貢獻是正向還是負向,就是坐標軸左邊是負向的貢獻,右邊是正向的貢獻。另外還可以把這個特征的值和分布都繪在一張圖上展現(xiàn)出來。
比如它的這個線比較粗的話,就是一個圓錐形的分布,數(shù)據(jù)量比較多;比如藍色的是一個特征值是比較低的情況,紅色的是特征值比較高的情況。左圖是一個訓練的比較好的模型,你大致看到大多數(shù)的特征,它在 Feature value高和低的時候,它可以把紅色是負面影響,藍色是正面影響明顯的區(qū)分,它基本上可能都可以分開來。
右圖我們把 label做了隨機的打散??梢钥吹剿乃{色點和紅色點基本就混在一起了,區(qū)分度明顯不高了,所以可以通過這種圖形上的pattern展現(xiàn),幫助你去發(fā)現(xiàn)問題。如果你做了一個特征,它像右圖這樣,特征高和特征低都會混在一起,不知道是正面的影響還是負面影響,沒有什么區(qū)分度的話,就需要去看下你的特征是不是做的有問題。
SHAP還可以做一些很復雜的特征交互的分析。這個是一個關(guān)于成人收入的例子,左上角兩條軸分為兩個特征。一個是他受教育的年份,下面是年齡。正向影響的是他的收入比較高,負向影響是他的收入比較低??梢钥吹侥挲g在20~30歲的時候,當受教育年齡比較低的時候,它反而是一個正向的影響。這個也比較好理解因為在20~30之間,如果受了10多年教育那他可能當時剛畢業(yè),大多數(shù)情況下收入肯定是低的。這個可以印證,一些業(yè)務的知識能不能體現(xiàn)在你數(shù)據(jù)中,體現(xiàn)在你的模型中。還有比如右邊這個可以去看他的職業(yè)跟他的年齡和收入的影響。我們可以從中去分析,是不是有一些年齡,他是年紀越大,收入會越高。有些年齡是年紀越輕他的收入會越高,是一個吃年輕飯的職業(yè)的。這些都可以通過SHAP value的這種特定交互的分析來做一些判斷。如果它不符合你的業(yè)務常識,你可以針對性的去做一些數(shù)據(jù)上的診斷和修改。
這個例子是我們做了一個二分類的問題,做了一波特征工程,突然發(fā)現(xiàn) AUC從原來的0.7級上升到了0.9,明顯是不太合理的,應該是發(fā)生了一些問題。我們觀察了下前后的Feature importance,發(fā)現(xiàn)好像 Top feature它并沒有一個很明顯的變化,沒有一個特征突然importance從下面竄上來,沒有找到這樣的一個明顯的leak特征。其實這樣的情況我們也可以用SHAP value來做??梢赃x擇新舊兩個模型,然后找一條預測樣本。比如它原先是一個false negative預測錯了的,后面被預測成true positives預測對的。我們分別去看前后的SHAP value的對比,再去看SHAP value正向貢獻差別最大的一個特征到底是哪個。我們可以挑個10條20條樣本分別去驗證一下,發(fā)現(xiàn)他們都是落在了同一的特征上面的話,那么就很容易就可以找到leak的特征到底是哪個。這個也是一個直接用模型檢測技術(shù)去找leak特征的實例。
那么如果是回歸問題的話也是類似的。比如可以找Top高估的那些預測樣本和Top低估的預測樣本,然后分別去在組內(nèi)做一些SHAP value相關(guān)的一些分析,去看下TOP高估的那些,它的正向影響的最大的特點到底是哪些。如果是有問題的特征,我們可以做一些針對性的分析,如果是特征區(qū)分度不夠高的話,可能要增加一些新的特征進去。Top低估點,也是類似的做法。
如果是分類問題其實也是一樣。比如說你關(guān)注得分最高和得分最低的這些錯誤的樣本,就是你最有信心的,但是它預測錯了。另外決策邊界附近預測是個50%可能性附近的一個樣本,你也可以用SHAP去分析它的特征,看看是不是有些沖突的特征。就是a特征跟b特征其實是有一些沖突,導致他們的效果抵消了,最后模型就不太確定到底是一個正樣本還是負樣本。
除了SHAP之外,分類問題它可以用的一些技術(shù)還更多一點。包括使用example來做一些解釋,比如ProtoDash來找一些Prototype的樣本。還有用反事實樣本來診斷這些樣本的數(shù)據(jù)問題。
這個 ProtoDash的大致的含義,它是一個信用卡的信用分析,左邊這條樣本特征的值,輸出預測的結(jié)果是好的,就是認為這個人是一個有信用的人。那為什么模型給了他這個預測,我們就可以在訓練集中去找跟他類似的樣本。所以ProtoDash就是在找出了一條目標樣本之后,我們在訓練集中去找跟他類似的一些原型樣本。找到之后,可以看到右邊的第一條weight很高,表示跟它的相似度是非常高的。那就可以給業(yè)務方很好地解釋,當你的訓練樣本中有一條跟他特征非常接近的一條樣本,因為當時他是一個守信用的人,那新進來的一條樣本我們就認為他也是一個守信用的人。但如果這兩條發(fā)現(xiàn)了沖突,比如我們發(fā)現(xiàn)這個人模型預測是好的,左邊測試樣本最后label顯示這個人是信用不好的。那這個時候我們就需要去看,為什么跟他相似的人信用是好的,是不是在這兩個人之間有些什么差異我們沒有抓到。那我們就需要增加一些特征去強化這兩條特征的區(qū)分度,否則這個模型在相近的時候就很難區(qū)分出來。或者對于特征要有些分層處理,都可以去幫助模型改進提升,可以融入你的一些業(yè)務知識改進模型。
最后這個是一個counterfactual的案例,還是剛才那個例子。比如原先這個人最左邊的 X,他被預測出來是不守信用的,那他需要做哪些事情,能夠讓他通過驗證,認為他是一個守信用的人。模型給他的建議是有三個值要提升。第一個是 ExternalRiskEstimate,這個值是越大越好的值,類似于芝麻信用分,是外部的平均積分,芝麻信用越高,說明這個人更守信。下面的 AverageMinFile和 NumSatisfactoryTrades,一個是履約的次數(shù),他履約的次數(shù)越多,理論上來說應該是更守信用的,還有他的記錄的月數(shù),就是他整個的歷史的信用周期有多長,比如信用卡已經(jīng)用了10年了,那我們會認為他更可能是一個守信用的人。如果counterfactual的樣本是比較符合你的業(yè)務判斷的話,那說明這個模型總體上訓練是準確的。
但如果最后出現(xiàn)了一些比如他希望性別換一換或者種族換一換,模型學到的東西可能是有些問題的。我們可能會發(fā)現(xiàn)這個模型在對他的公平性上是有問題的,所以需要做一些改進。這個是用這種實例樣本的例子,來解釋方法,讓它幫我們改進模型。
關(guān)于模型開發(fā),還有一個大的應用,就是怎么用這個模型解析技術(shù)去給業(yè)務方做解釋。這邊舉了個例子,我們需要用不同的需求來構(gòu)建模型。比如我們要構(gòu)建一個用戶的復購模型。我們這邊有三種選擇,第一種就是能夠準確的預測出哪些用戶會復購。你的業(yè)務的目標是accuracy,就是可以不管別的,只管提升準確率就行了。
模型二是能夠告知哪些特性的組合與復購行為是高度相關(guān)的,這是一個全局性的解釋的例子。就是把insights提供給業(yè)務方,業(yè)務就知道需要去做哪些事情,可以讓用戶的復購率提升。對他們來說是一個業(yè)務上的指導。我們可以選擇一些相對簡單的,比如決策樹、線性回歸就可以了。
模型三是能夠告知為什么這個模型認為某一個用戶會進行復購。它是一個更細粒度的local的解釋。它的使用場景比如是我們在做客戶營銷時候,某個客戶購物后,模型預測他可能后面不會再復購,我們可以解釋一下為什么預測他不會回來做復購。那么可以針對性的對每一個用戶做個性化的設置,用一些推薦或者業(yè)務的動作,讓他能夠回購。
這個就是不同的場景下我們需要構(gòu)建不同的模型,來實現(xiàn)業(yè)務目標。當然業(yè)務實際上也有很多挑戰(zhàn)。大多數(shù)的模型解釋都是相關(guān)性而非因果性的。有時候你會看到它可能會建議你把用戶的年齡增大一點,但是這其實是不靠譜的,因為沒法手動的把一個人的年齡調(diào)大。還有在構(gòu)建可解釋性模型的時候,還要考慮特征的構(gòu)建。如果構(gòu)建了幾千個特征,用SHAP value給了一個解釋的話,其實業(yè)務方也是無法理解的,就是幾千個特征的解釋是無法理解的。預測流程其實也是很復雜的,它不光是一個模型,它可能是多個模型,甚至模型后面還有一些業(yè)務的處理的規(guī)則,那么整個預測流程都需要給出一些解釋。那怎么去把整個流程串起來,這也是個挑戰(zhàn)。還有包括前面講到的,三個不同的用戶場景,我們需要選擇的模型、解釋,可能都是不一樣,所以對于不同的業(yè)務場景都需要有不同的開發(fā)方式。最后給出的解釋是不是一個actionable的步驟,就是用戶能否采取一些措施來改變,其實也是一個很重要的課題。不光涉及到模型解釋,機器學習,可能還涉及到一些運籌優(yōu)化或知識圖譜方面的考量。
下面介紹一些產(chǎn)品和應用,比如說H2O.ai 、SageMaker包括Google Cloud上面的AI平臺,他們也都提供了這種模型解釋相關(guān)的組件,還有像Fiddler、Truera這兩都是專注于模型解釋方向的初創(chuàng)公司。
右邊這個表格是業(yè)界的一些模型解釋應用,看看他們應用在哪些場景,用了哪些技術(shù)手段,最后面向的用戶到底是誰?可以看到一共有8條。其中5條是開發(fā)人員用的,也就是大多數(shù)還是工程師開發(fā)模型的時候來使用一些解釋的技術(shù)。只有3條比較少數(shù)的,是會面向最終的業(yè)務方來給他們解釋。而且給業(yè)務方的解釋手段也比較簡單,一個就是Feature importance。應用場景的話,除了模型開發(fā)、評估之外,在整個機器學習模型 life cycle里面都是有應用到的。大家如果去看Fiddler的產(chǎn)品介紹的話,也會看到。
剛才講的是可解釋性機器學習,可以看到黃色這些框,比如機器學習,視覺或者NLP。如果是AI的話,它的范疇會更大些,比如像多智能體的一些系統(tǒng),或者做一些運籌的優(yōu)化,搜索優(yōu)化或者planning,或者是一些跟知識表達和推理相關(guān)的東西,這些可能都是需要解釋的。當在構(gòu)建整個智能決策系統(tǒng)的時候,不光是算法,或者狹義的機器學習的部分需要給出一些解釋,對于其他那些運籌優(yōu)化,知識的推理和邏輯推理,或者在多智能環(huán)境下的強化學習的策略的選擇,也需要給出一些解釋?;蛘呤菐椭闳ジ倪M模型,幫助你的業(yè)務方、受眾方去理解你為什么做決策,都是很有幫助的。
聯(lián)系客服