可視化による機械学習モデルのデバッグ

#紹介する論文
[Debugging Tests for Model Explanations](https://arxiv.org/pdf/2011.05429.pdf)
NIPS 2020

#要約
これまでAIの説明性や可視化に関する論文はあったが、可視化がModelのバグに対して効果的かどうかを検証した論文はなかった。この論文では、3つのタイプのバグ1:Dataのバグ（学習時のラベルのミス、疑似相関）、2：modelのバグ（層の意図しない初期化や固定）、3：Test-timeのバグ（domain shift)に対して可視化によるデバッグが有効かを検証している。
結果としては、疑似相関を持ったmodelかどうかの検出には効果があるが、それ以外は効果がなかった。
また、end-userにとっての可視化の重要性も調査している。しかし、可視化の結果よりもモデルの予測の方を信頼して信頼できるモデルかを判断していることが分かった。

#1.Data Contamination
##1-1.疑似相関Bug
・疑似相関とは？
以下の例のように、白い雪からハスキーと判断してしまったり、青い空が映って入れば鳥と判断したりすることのように直接因果関係がないのに相関関係を持っているかのように振舞ってしまっていること。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/3c708ace-50ea-439c-d2e4-139766d8c954.png)


・目的
疑似相関を持つモデルを可視化で見分けることができるか。

・方法
鳥には必ず空が映った背景の画像で学習させ、犬には必ず竹が映った背景の画像で学習することで疑似相関の関係を持たせる。
その状態で、鳥（犬）が映った画像(a1)の可視化画像（a2)と背景だけの画像(b1)の可視化画像(b2)を作る。
GT1マスク画像で(a1)をマスクした画像と(b1)の画像をマスクした画像でSSIM（構造類似性）を算出する。
（SSIM-GT1）（→構造類似性は理想的にはどれくらい下がるかを示すため）
同様にGT1マスクで(a2)画像と(b2)画像をマスクした画像のSSIMを算出する。（SSIM-GT2）
（→SSIM-GT1より値が高ければ高いほど構造類似性を持っていることを示すため）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/f5390c2d-43dd-bf96-393f-52213fa5ec34.png)

・結果
可視化で気づくことができる。
犬が映っていなくても可視化画像にも犬が映ってしまっている。
SSIM-GT2の値はどれも高く、疑似相関を持っている。
また、PAttributionなどはSSIM-GT1に比べてSSIM-GT2は0.4も値が大きい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/306679d1-27d3-e868-ea51-532dc7f9ff32.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/01be3d76-057f-7b26-4161-14295aca3464.png)


##1-2.ラベル間違い
・目的
可視化によって、学習時のラベルの間違いに気づくことができるかを検証

・方法
学習させる10％のラベルを反転させた。犬であるべきところを鳥ラベルに変えた。Valiationde91.7％、testで88％のaccuracyの状態。

・結果
可視化で気づくことはできない。
正しいラベルで学習した時の可視化画像と10％間違いを含む時でSSIMの値は0.73~0.99。
どの手法も高い構造類似性を示していることからラベルミスに関しては可視化は効果的ではない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/1a4d7707-fd29-446b-180a-c20912a3a06e.png)

#2.Model Contamination
・目的
意図せずにある層の初期化や重みの固定が発生したとき（不具合）に可視化で気づけるか？を検証

・方法
学習済みのモデルの最終層から始め、最初の層まで部分的に初期化を行ったときの可視化への影響を見る。
modelはVGG-16(畳み込み層13層+全結合層３層）

・結果
可視化で気づくことはできない。
Guided BackProp, Deconvnet, DeepTaylor, PatternNet, Pattern Attribution, and LRP-SPAFなどのBackPropagetion系の方法は最終層に近い層を初期化しても変わってSSIMが変わっていない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/c47cd9e0-38ee-82e3-b22b-9f4291da9e18.png)

#3.Test-Time Contamination
・目的
学習時と推論時でdomainが変わった時に可視化画像でdomainの変化に気づけるか。

・方法
1)FMNISTで学習、FMINSTサンプルを推論し可視化
2）MNIST,BVD、ImageNetで学習、FMNISTを推論し可視化

・結果
可視化で気づくことはできない。
別のdomainの画像が入力されても同じ推論画像となる。
SGradとSGradSQは犬の可視化画像が表示されているように見えるが...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/67f46b96-bf6e-f2dd-bc83-0f5dad5cda09.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/bfd4fd86-2493-b067-7211-f34e62382677.png)

#4.ヒアリング試験
・方法
このモデルはお客さんに売れるかを問い、回答者は5(強く薦める）～0(まったくお薦めしない）で回答する。
そして、回答の理由（犬種がことなるから、犬種があっているから、可視化位置が自分が予想していたものと異なる、その他）も回答する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/b868427d-9b99-3903-1451-7685d9b63336.png)

・結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680528/48e36982-91b9-2579-c9a2-82f08ebc071f.png)
疑似相関があった場合
多くの人が予想した箇所に可視化が出ていないと理由付けしながらも、スコアは1～5で分散している。可視化結果がユーザーの決断に依存していないことを示している。

ラベル間違いがあった場合
ユーザーは可視化結果よりも、モデルが間違った予測をしていることを薦めない理由に挙げている。

層の初期化があった場合
ユーザーは可視化結果よりも、モデルが間違った予測をしていることを薦めない理由に挙げている。

まず判定が間違っていないことが大前提、そのうえで可視化画像もあっていないとユーザーは納得しないということか？