---
# System prepended metadata

title: Explainable ML
tags: [mllearning2020]

---

# 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`