# Explainable ML * 例如給一隻貓的圖片,機器要判斷他是不是貓 * 機器會給出答案 * 機器會給出判斷牠是貓的理由 ### e.g. * 用機器來協助判斷履歷 * 能力?還是性別? * 用機器來協助判斷罪犯是否可以假釋 * 具體事證?膚色? * 金融相關的決策常常依法需要提供理由? * 為甚麼拒絕某人的貸款? * 模型診斷:到底機器學到什麼? * 不能只看正確率嗎? * 想想神馬漢斯的故事 * 如果我們知道model是如何解釋的,可能可以知道該如何精進這個model ### Teacher's point * ML Explanation 所得出的結果,不代表真的可以了解這個model * 而了解這個model不一定是必要的 * 有些人不相信deep learning 因為覺得他是一個黑盒子 * 其實人腦也是一個黑盒子 * ML Explanation 目的其實是讓攘覺得爽 ### 可解釋 v.s. 強壯 * Some models 可以比較直觀的解釋 * 像是linear model(from weights) * 缺點是不夠強 * Deep network 不好解釋 * 所以我們不使用他 => 削足適履 * 但他很厲害 => 我們讓他可被解釋 * 有可解釋又強的嗎? * decision tree強嗎? => 他可以一步步被推出來 * 但其實如果是很龐大的decision tree其實也是不可解釋的 * 常常做的decision tree 都是forest ## Local explanation ### Basic Idea Object x => Component $\{x_1,x_2,...,x_n,...,x_N\}$ | | Image:pixel, segment, etc Text: a word * 我們想知道各個componet對決定時的重要性 * 想法:把某一個componet拿掉或修改 => 對機器有重要影響,就知道他是重要的 e.g. ![](https://i.imgur.com/U3x1yXs.jpg) 當把灰色方塊放到藍色地區時,機器辨識成功率變很低,代表藍色區域對機器辨識成功的影響很大 $y_k$:the prob of the predicted class of the model $\{x_1,x_2,...,x_n,...,x_N\}$ ===> $\{x_1,x_2,...,x_n+\triangle_x,...,x_N\}$ $y_k$ ===> $y_k + \triangle_y$ $|\frac{\triangle_y}{\triangle_x}|$ => $|\frac{\partial y_k}{\partial x_n}|$ 知道哪個pixel是重要的,畫出Saliency Map ![](https://i.imgur.com/XEjLkGk.png) ![](https://i.imgur.com/B6tZGVG.png) ## To Learn More Grad-CAM(https://arxiv.org/abss/1610.02391) ![](https://i.imgur.com/ZixZoBx.png) * ==加上一些noise會影響判斷結果,model是可以被攻擊,要小心== ![](https://i.imgur.com/V6KzE8E.png) --- ## [Explainable ML (3/8)](https://www.youtube.com/watch?v=K6TpPWLc52c) ![](https://i.imgur.com/e1TdROL.png) ![](https://i.imgur.com/QJF6Luu.jpg) ![](https://i.imgur.com/xIhpUuv.png) 其實機器什麼都沒有學XD,告訴我們Explanable的重要性 --- ## [Explainable ML (4/8)](https://www.youtube.com/watch?v=yORbWn7UsBs) * 該如何決定這個R(x) => 可以根據所有pixel的總和,判斷一張圖片像不像是數字 ![](https://i.imgur.com/WQNuBNR.png) 機器是可以把心裡的某種物件,機器是可以畫出來的。 但沒有那麼容易,下面這張是暴調一波參數的結果 ![](https://i.imgur.com/gAPeDWn.jpg) --- ## [Explainable ML (5/8)](https://www.youtube.com/watch?v=1xnhQbAV1m0) ==Regularization== from Generator * 把一個低維度向量丟到一個Generator ,會output一張image ![Uploading file..._hn2rmdllr]() * 生出圖片後,再丟到classifier生出y,y出來的值越大越好 * 調整z,找出產生出最好的y的z* ![](https://i.imgur.com/pbubirp.png) * ==image Generator==以及==Image Classifier==都是固定的,不會更動,只會調整z。 * ==image Generator==可能生出各種東西,狗、貓、飛機, * ==image Classifier==會看他是什麼東西 ![](https://i.imgur.com/VVqIHMM.jpg) --- ## [Explainable ML (6/8)](https://www.youtube.com/watch?v=K1mWgthGS-A) ### Using a model to explain another * some models are easier to Interpret * Using interpretable model to mimic uniterpretable model😊 * 用藍色盒子(可解釋的)去模仿黑盒子(不可解釋的)的output,再去分析這個藍色盒子。 * 但是Linear Model很難去模仿deep network可得出的結果 ![](https://i.imgur.com/kJZXXFi.png) * 所以我們只模仿黑盒子的一部分功能 * 使用lime,找出好模仿的區域 ![](https://i.imgur.com/pt0u81c.png) * 選到不好的區域結果會差很多,有很多參數可以調,要找到好的👍👍 ![](https://i.imgur.com/ITGskAJ.png) ## [Explainable ML (7/8)](https://www.youtube.com/watch?v=OjqIVSwly4k) LIME-Image 1. Given a data point you want to explain 2. Sample at the nearby * 隨機把一些區塊丟掉,生出的圖片當作是Sample * 把Sample丟到黑盒子內得出output * 再用藍色盒子(可解釋的)去得出相近的output * 但直接丟進去很難成功 3. Fit with linear(or interpretable) model * 先Extract成$X_1...X_m...X_M * $x_m = \left\{\begin{array}{r}0\ \ Segment\ is\ deleted \\1\ \ Segment\ m\ existed \end{array}\right.$ * 再丟Linear * M is number of Segment * 要切多少塊要慢慢試 4. Interpret the model you learned ![](https://i.imgur.com/Utzm6AJ.png) ![](https://i.imgur.com/B7F5Vuc.png) ## [Explainable ML (8/8)](https://www.youtube.com/watch?v=gotiBlOu18I) * 我們不希望這個tree 太大😂 ![](https://i.imgur.com/asVmb48.png) ### 訓練一個可以較好被decision tree 分析的network ![](https://i.imgur.com/DdmYTgg.png) * $\lambda O(T_\theta)$: decision tree 的複雜程度,越低越高 * 這個值可以做微分嗎? 不行 * 所以他再訓練一組network來得出這個$\lambda O(T_\theta)$ * 這個network怎麼來? 丟入一堆input->decision tree,output->tree高 ,讓這個network可以得到tree高 ###### tags: `mllearning2020`