[DL輪読会]Understanding Black-box Predictions via Influence Functions

>100 Views

August 22, 17

スライド概要

2017/8/21
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Papers] Understanding Black-box Predictions via Influence Functions Fukuta Keisuke Harada&Ushiku Lab. http://deeplearning.jp/ 1

2.

書誌情報 • ICML 2017 best paper!! • From Stanford University • Deep Learning解析系

3.

Background 「DLモデルは、何故その出力をしたのかがよくわからない」 「Black boxは使いづらい」 → 何故モデルがこの出力したのか知りたい ◦ モデル改善、新たな知識発見、実アプリケーションへ向けて

4.

関連研究 • あるdata点周りのみを考慮してよりsimpleなmodelでfittingさせて解析 [Ribeiro, 2016] • Data点にノイズを加えて予測がどう変化するか [Simyonyan et al., 2013], [Adler et al., 2016] これらの研究は与えられたモデルがどう予測を変化させるかを解析したもの 本研究は、”なぜこのモデルに至ったのか”について考察するアプローチ

5.

概要 • “Study models though the lens of their training data” ◦ モデルがどうなっているか -> なぜモデルがそうなったのか ◦ 学習サンプルに着目 ◦ もしこのサンプルを学習に使わなかったらどうなるのか • 特定の学習サンプルがモデルパラメータに与える影響を定量的に解析 ◦ 一つずつ抜いて再学習すればいい話ではあるが時間がかかりすぎる ◦ 統計で古くから利用されていた影響関数(influence function)を利用 ◦ Generalized linear modelsではすでに解析例があるが、比較的小さいモデルだった

6.

Contribution 1. 影響関数(influence function)を用いて、特定の学習データの有無や、 学習データに加える摂動が予測結果に与える影響を定式化 2. DNN等の複雑なモデルに対する影響関数の効率的な計算手法の提案 ◦ ナイーブに行うとパラメータ数の二乗のオーダーの計算となり、不可能 3. 実際の解析例、アプリケーションの検証 1. モデルの挙動の理解 2. ネットワークを混乱させる摂動の計算 ◦ Adversarial training samplesの作成 3. ドメイン不適合の検知 4. ノイズラベルの検出

7.

影響関数 特定の学習データがモデルの予測結果に与える影響を定量的に知りたい ただし、再学習無しで 1. 特定の学習データがモデルパラメータに与える影響を計算 2. それが予測結果に与える影響を計算

8.

準備 • Training dataset {𝑧" ,𝑧$, … , 𝑧&} , 𝑧) = (𝑥) ,𝑦) ) • データ点 𝑧 に対する, parameter 𝜃 の損失を 𝐿 𝑧, 𝜃 とする → datasetの経験損失 𝑅(𝜃) = " & ∑&)3" 𝐿(𝑧) ,𝜃 ) • 𝜃4 ≡ 𝑎𝑟𝑔𝑚𝑖𝑛< 𝑅(𝜃) • 仮定 (あとでこの仮定についても検証します) ◦ 損失𝑅(𝜃)は凸関数 (𝜃4 はglobal minimum) ◦ 損失𝑅(𝜃)は二回微分可能

9.

影響関数 損失を最小化する 𝜃4 が計算できたとする & 1 = 𝜃 ≡ 𝑎𝑟𝑔𝑚𝑖𝑛< ? 𝐿(𝑧) , 𝜃 ) 𝑛 )3" ある学習データ 𝑧 = (𝑥, 𝑦) を使わずに学習を行った場合のパラメータを𝜃4@A とする 1 = 𝜃@A ≡ 𝑎𝑟𝑔𝑚𝑖𝑛< ? 𝐿(𝑧) , 𝜃) 𝑛 AB CA → 𝜃4@A − 𝜃4 を計算したい *当然、再学習すれば得られるがすべてのデータ点を一つずつ抜いて 行うのは現実的ではない

10.

影響関数 そこで、損失を少しいじり、損失に対する𝑧の影響をパラメータ𝜖で管理 " (𝜖 = − で先程の式と一致) & & 𝜃=F,A ≡ 𝑎𝑟𝑔𝑚𝑖𝑛< 1 ? 𝐿(𝑧) , 𝜃 ) + 𝜖 𝐿(𝑧, 𝜃) 𝑛 )3" ここで、Cook & Wisbergの導出から、 𝐼IJ,JKLKMN 𝑑𝜃=F,A 𝑧 ≡ P = −𝐻S<@" 𝛻<𝐿 𝑧, 𝜃= 𝑑𝜖 F3Q 特定のデータの重みをupweight した時のparametersの影響関数 & 1 𝐻S< ≡ ? 𝛻<$ 𝐿(𝑧) , 𝜃=) n Training lossのヘッシアン )3" * つまり、𝐼IJ,JKLKMN (𝑧)は、微小な𝜖に対するパラメータの変化量を表す また、𝜃4 は損失を最小にするものと仮定してるのでヘッシアン𝐻S<は正定値 -> 逆行列が存在

11.

影響関数 " 𝜖 = − & が微小であると仮定すると、 1 = = 𝜃@A − 𝜃 ≅ − 𝐼IJ,JKLKMN 𝑧 𝑛 これで再学習無しで 特定の学習データがモデルパラメータに与える影響 が計算できた 次に、それがモデルの予測に与える影響を計算 𝐼IJ,WXNN 𝑧, 𝑧YZNY 𝑑𝐿 𝑧YZNY, 𝜃4F,A ≡ P 𝑑𝜖 F3Q = 𝛻< 𝐿 𝑧YZNY, 𝜃4 [ 𝑑𝜃4F,A P d𝜖 F3Q [ @" 4 = −𝛻< 𝐿 𝑧YZNY , 𝜃 𝐻S< 𝛻<𝐿 𝑧, 𝜃4 特定のデータの重みをupweight した時のtest lossの影響関数 Chain rule さっきの結果

12.

影響関数 結局、特定の学習データがモデルの予測(ロス)に与える影響は、 = −𝛻< 𝐿 𝑧YZNY , 𝜃4 𝐼IJ,WXNN 𝑧, 𝑧YZNY 𝛻< 𝐿 𝑧YZNY , 𝜃4 [ [ 𝐻<S@" 𝛻< 𝐿 𝑧, 𝜃4 : あるtest dataのロスに対する勾配 𝐻S<@":ヘッシアンの逆行列 𝛻< 𝐿 𝑧, 𝜃4 : ある学習データのロスの勾配 これで計算できる!!

13.

余談 : Cook & Wisbergの導出 𝜃4F,A = 𝑎𝑟𝑔𝑚𝑖𝑛< R 𝜃^ + 𝜖 𝐿 𝑧, 𝜃 なので、𝜃F,A の点でのR 𝜃 + 𝜖 𝐿 𝑧, 𝜃 の1次微分は0 0 = 𝛻𝑅 𝜃4F,A + 𝜖𝛻𝐿(𝑧, 𝜃4F,A ) 𝜖 → 0だと仮定して1次までTaylor展開すると 0 ≅ 𝛻𝑅 𝜃4 + 𝜖𝛻𝐿 𝑧, 𝜃4 + 𝛻 $ 𝑅 𝜃4 + 𝜖𝛻 $ 𝐿 𝑧, 𝜃4 ∆F ∆F に関して解くと、 ∆F ≅ 𝛻 $ 𝑅 𝜃4 + 𝜖𝛻 $ 𝐿 𝑧, 𝜃4 @" 𝛻𝑅 𝜃4 + 𝜖𝛻𝐿 𝑧, 𝜃4 ここで、𝜃4 = 𝑎𝑟𝑔𝑚𝑖𝑛𝑅 𝜃 なので𝛻𝑅 𝜃4 = 0であること、 O(𝜖 $ ) → 0を利用して ∆F ≅ 𝛻$ 𝑅 𝜃4 @" 𝛻𝐿 𝑧, 𝜃4 𝜖 ➔ 𝐼IJ,JKLKMN 𝑧 ≡ S d,e c< | cF F3Q = −𝐻S<@" 𝛻<𝐿 𝑧, 𝜃4

14.

余談:ニュートン法 最急降下法は1次の勾配しか利用してないが、二階微分まで考慮する勾配法

15.

余談:ニュートン法 𝑓(𝑥)を最適化したい関数として、二次のTaylor展開で近似すると 𝑓 𝑥 + ∆𝑥 ≅ 𝑓 𝑥 + ∆𝑥 [ 𝛻𝑓 1 [ $ 𝑥 + ∆𝑥 𝛻 𝑓 𝑥 ∆𝑥 2 1 [ =𝑓 𝑥 + ∆𝑥 𝐻 ∆𝑥 2 𝑓 𝑥 + ∆𝑥 を最小化する∆𝑥を求めないので∆𝑥で微分すると、 + ∆𝑥 [ 𝑔 𝜕𝑓 𝑥 + ∆𝑥 = 𝑔 + 𝐻∆𝑥 𝜕∆𝑥 この偏微分が0になるときに𝑓 𝑥 + ∆𝑥 は最小値を取るので、𝑔 + 𝐻∆𝑥 = 0から、 ∆𝑥 = 𝐻@" 𝑔

16.

余談 : 直観的理解 影響関数(再掲) 𝐼IJ,JKLKMN 𝑧 = −𝐻<S@" 𝛻< 𝐿 𝑧, 𝜃= 𝐼IJ,WXNN 𝑧, 𝑧YZNY = −𝛻< 𝐿 𝑧YZNY , 𝜃= [ 𝐻<S@" 𝛻< 𝐿 𝑧, 𝜃= 要は、 • 上の式は、学習データを入れた時に、ニュートン法によって得られる更新方向 • 下の式は、その更新方向と、testエラーの勾配方向の内積 つまり • それらが同じ向き向いてたら、その学習データはtest errorを直す方向に更新してくれてたことに • 逆向きだったら、その学習データはむしろtest dataに対する予測を悪くしてたことに

17.

実際どうなのか 𝐼IJ,WXNN 𝑧, 𝑧YZNY = −𝛻< 𝐿 𝑧YZNY , 𝜃= [ 𝐻S<@" 𝛻< 𝐿 𝑧, 𝜃= • 直感的には、test dataと一番似てるtraining dataが影響を与えているっていう だけの可能性もある • ヘッシアンまで見る必要あるのか

18.

Trainingデータへ加えられたノイズの影響 先程は学習データ𝑧を抜いたらどうなるかを考えた ここでは学習データにノイズが加えられた場合(𝑧j = z + 𝛿)のモデルの出力結果への影響を考える 大体導出は同じなので割愛 𝐼JZLY,JKLKMN 𝑧 = − 𝐻S<@" 𝛻m 𝛻<𝐿 𝑧, 𝜃= 𝛿 𝐼JZLY,WXNN 𝑧, 𝑧YZNY = −𝛻< 𝐿 𝑧YZNY , 𝜃= [ 𝐻S<@" 𝛻m𝛻< 𝐿 𝑧, 𝜃= これで、学習データにノイズを加えたことによるモデルの影響関数がわかった あとで出て来るが、これを使うとtraining dataに混ぜると、 あるtestデータを間違えさせることができるノイズを計算できる 𝛿

19.

影響関数の効率的な計算 𝐼IJ,WXNN 𝑧, 𝑧YZNY = −𝛻< 𝐿 𝑧YZNY , 𝜃= [ 𝐻S<@" 𝛻< 𝐿 𝑧, 𝜃= この計算は二つの理由で計算量がとても大きい 1. 損失関数のヘッシアン 逆行列 𝐻S<@"の計算 𝑂(𝑛𝑝$ + 𝑝p ) 2. 全訓練データに対する𝐼JZLY,WXNN 𝑧, 𝑧YZNY の反復計算 普通に考えたらDLモデルは10q ~ 10s オーダーなので、10$Q とか無理

20.

影響関数の効率的な計算 𝐼IJ,WXNN 𝑧, 𝑧YZNY = −𝛻< 𝐿 𝑧YZNY , 𝜃= [ 𝐻S<@" 𝛻< 𝐿 𝑧, 𝜃= Idea [ • 𝑠YZNY ≡ 𝐻S<@" 𝛻< 𝐿 𝑧YZNY, 𝜃4 を予め計算しておけば全訓練データに対する計算は楽になる (二次形式は順番変えて大丈夫) • 正定値行列𝐴の逆行列とあるベクトルの積 𝐴@" 𝑣は、 𝐴𝑣が計算可能ならば共役勾配法によって 𝐴@" を陽に計算することなく計算可能 • また、ヘッシアンとベクトルの積は、HVP (Hessian Vector Product)と呼ばれ𝑂(𝑝)でヘッシアンを陽 に計算することなく計算可能 (CG法) • 共役勾配法は毎回全サンプルを利用してH𝑣を計算する必要があって若干遅いので、 [Agarwal et al]らの近似手法でも𝑠YZNYを計算してみた。CG法よりも高速に動いた。

21.

影響関数の効率的な計算 Algorithm 1. 𝑣 ← 𝛻< 𝐿(𝑧YZNY , 𝜃= ) zQ@"𝑣 ← 𝑣 2. 𝐻 @" z)@"𝑣 ← 𝑣 + (I − 𝛻<$𝐿 𝑧NKMJWZc , 𝜃= ) 𝐻 z)@" 3. 𝐻 𝑣 (𝑖 = 1,2, … , 𝑡) zY@"𝑣 4. 𝑠YZNY ← 𝐻 これで、全サンプルの影響関数が𝑂(𝑛𝑝 + 𝑟𝑡𝑝)で計算可能

22.

仮定について検証 影響関数の導出に当たって置いた仮定について 1. 損失𝑅(𝜃)は凸関数 (𝜃=はglobal minimum) ◦ 実際、𝜃4 が本当にglobal minimumである保証はどこにもない → そうでなかった場合、Hが正定値行列でなくなるので逆行列が計算できない (検証によると、CNNを500k iterationほど学習させてもHは正定値にならなかったらしい) → だが、 無理やり𝐻を正定値にする方法がある 𝐻 ← 𝐻 + 𝜆 𝐼 2. 損失𝑅(𝜃)は二回微分可能 ◦ Softmax Cross Entropyなら出来るが、SVMのようにHinge lossを使ってると二階微分できない → smoothに近似すれば行けた!!

23.

解析 : 再学習との比較 一個ずつ抜いて再学習した場合と影響関数を使った場合でどれだけ差がでるか 近似してもでかいネットワークでも大体OK!!! CNNは 𝐻 ← 𝐻 + 𝜆 𝐼 のトリックを利用

24.

解析 : 微分不可能なロス • ヒンジで学習したパラメータに対して、smooth hingeで近似して影響関数計算

25.

Use case 1: モデルの挙動の理解 • 犬vs魚の二値分類問題をInception-v3、RBF-SVMで学習 • SVMの方はユークリッド距離に大きく影響 • Inceptionはその傾向はあまり見られず、 より高次な特徴に影響されているとわかる • Inceptionの方は、犬も魚も両方 魚を認識するのに有効であったと言うことがわかる

26.

Use case 1: モデルの挙動の理解 • 数字 4 vs 7

27.

Use case 2: Adversarial training samples • 学習データにノイズを加える影響関数を利用すると、あるtest dataに対して予測 を間違えるような、training dataを作成することができる -> adversarial training samples ◦ (今まであったのは識別を間違えるような test dataだった) • あるモデルを学習 → test dataをpick up -> その予測を最も間違えさせるような ノイズを、最も影響が大きいサンプルに対して足す -> 再学習 を繰り返して、ほとんどtest dataに対して実際に間違えさせることができた ◦ ノイズを足すtraining dataを増やせば増やすほど簡単に間違えさせることが

28.

Use case 2: Adversarial training samples • 著者の犬画像にノイズを混ぜてめっちゃ魚に間違えさせるようなdataを量産して 学習させた結果

29.

Use case 2: Adversarial training samples 知見 1. Inputに加えたノイズはとても小さいが、最終層ではオーダーとして100倍のL2距離に ◦ 2. ノイズの方向が比較的一貫性がある ◦ 3. すなわち見た目では気づかなくても、feature spaceを調べればわかるかも? ある特定の方向にoverfitさせるのが一番簡単なのかも 元々曖昧な画像にノイズを加えるのが最も影響が大きい

30.

Use case 3 : train, testのdomain mismatchの検知 • 127の属性から再入院するかしないかを予測する問題 • 元々のTrain dataには、10歳以下の子供24人いてそのうちの3人が再入院 → そのうちの再入院しなかった20人をtrain dataから抜く (test と分布が異なる) • 学習させると、当然train errorとtest errorに大きな乖離 • そこで、間違えたsampleに対して影響関数が大きかったsampleを探すと、その4 人の子供がhighlightされていた → 原因が特定できたことに

31.

Use case 4 : ラベルノイズの検知 • Datasetには基本的にラベルノイズがある • 人手で直すのはかなり大変だが、間違えたサンプルに対して影響関数を使って 並べ直すと楽に直せた!

32.

まとめ・感想 • Best paperだけあって面白かった • 長年言われてきたDLは結局black boxだよねという批評に対して現状では最も説得 力のありそうな解析 • しかし、現在のparameterの近傍しか考慮してないので、 globalに見た時のtraining dataの影響は実際はわからないのがネック • 説明を省いたが、training dataのノイズに関しては、小さい連続的なものに限って導 出してるわけではないので離散ノイズや大きめのノイズでも足すことが出来る