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

當把灰色方塊放到藍色地區時,機器辨識成功率變很低,代表藍色區域對機器辨識成功的影響很大
$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


## To Learn More
Grad-CAM(https://arxiv.org/abss/1610.02391)

* ==加上一些noise會影響判斷結果,model是可以被攻擊,要小心==

---
## [Explainable ML (3/8)](https://www.youtube.com/watch?v=K6TpPWLc52c)



其實機器什麼都沒有學XD,告訴我們Explanable的重要性
---
## [Explainable ML (4/8)](https://www.youtube.com/watch?v=yORbWn7UsBs)
* 該如何決定這個R(x) => 可以根據所有pixel的總和,判斷一張圖片像不像是數字

機器是可以把心裡的某種物件,機器是可以畫出來的。
但沒有那麼容易,下面這張是暴調一波參數的結果

---
## [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*

* ==image Generator==以及==Image Classifier==都是固定的,不會更動,只會調整z。
* ==image Generator==可能生出各種東西,狗、貓、飛機,
* ==image Classifier==會看他是什麼東西

---
## [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可得出的結果

* 所以我們只模仿黑盒子的一部分功能
* 使用lime,找出好模仿的區域

* 選到不好的區域結果會差很多,有很多參數可以調,要找到好的👍👍

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


## [Explainable ML (8/8)](https://www.youtube.com/watch?v=gotiBlOu18I)
* 我們不希望這個tree 太大😂

### 訓練一個可以較好被decision tree 分析的network

* $\lambda O(T_\theta)$: decision tree 的複雜程度,越低越高
* 這個值可以做微分嗎? 不行
* 所以他再訓練一組network來得出這個$\lambda O(T_\theta)$
* 這個network怎麼來? 丟入一堆input->decision tree,output->tree高 ,讓這個network可以得到tree高
###### tags: `mllearning2020`