Slide 1

Slide 1 text

Deep One-Class Classification NN 論文を肴に酒を飲む会 #7 @shuhei_fujiwara 2018-11-05 1

Slide 2

Slide 2 text

自己紹介 藤原秀平 (FUJIWARA Shuhei) Twitter: @shuhei_fujiwara ▶ 株式会社メルペイ Machine Learning Team ▶ TensorFlow User Group Tokyo Organizer ▶ Google Developer Expert (Machine Learning) 2

Slide 3

Slide 3 text

紹介する論文 Deep One-Class Classification [Lukas et al., ICML 2018][1] ▶ One-Class SVM/Support Vector Data Description とニューラルネットを 合体させた ▶ 精度が向上したので嬉しい ▶ 推論のメモリ効率や速度の改善 ▶ 3.1 の最後の方にしれっと書かれているけど大事 ▶ カーネル SVM は学習済みのモデルが全サポートベクターを保持する必要がある ▶ 言及されていないけど欠点はもちろん凸性を失ったこと 3

Slide 4

Slide 4 text

Support Vector Data Description (SVDD) [D. M.J. Tax et al., 1999, 2004][2, 3] ▶ できる限りサンプルを多く含むように できる限り半径の小さい超球を構成 ▶ 超球の外にあるものは外れ値と判定 定式化: min R,c R2 + C ∑ i max { 0, ∥xi − c∥2 − R2 } R Penalty c 4

Slide 5

Slide 5 text

One-Class SVM [B. Schölkopf et al., 2001][4] ▶ 原点とその他のサンプルの 2 値分類として定式化 ▶ Margin を大きく、penalty を小さくしたい ▶ ハイパーパラメータ ν が外れ値の おおよその割合になる 定式化: min w,ρ 1 2 ∥w∥2 − ρ + 1 νn ∑ i max { 0, ρ − w⊤xi } Penalty Margin 5

Slide 6

Slide 6 text

これ上手くいくと思います...? SVDD ▶ いつも超球で上手くいくと思うなよ One-Class SVM ▶ だいたいいつも死んでるので論外 上手くいかない例が無限に出てきてウケる〜 6

Slide 7

Slide 7 text

まあ大抵はカーネル関数使いますよね SVDD min R,c R2 + C ∑ i max { 0, ∥ϕ(xi) − c∥2 − R2 } One-Class SVM min w,ρ 1 2 ∥w∥2 − ρ + 1 νn ∑ i max { 0, ρ − w⊤ϕ(xi) } ▶ サンプル xi を適当なカーネル関数 ϕ で変換 Example: Gaussian Kernel ϕ(xi)⊤ϕ(xj) := exp ( − ∥xi − xj∥2 2σ2 ) 7

Slide 8

Slide 8 text

One-Class SVM のカーネル選択 One-Class SVM の場合は必ず RBF カーネルを使おう ▶ ϕ(xi)⊤ϕ(xj) の値が ∥xi − xj∥ のみに依存して決まるカーネル関数 ϕ ▶ Gaussian Kernel も RBF Kernel ▶ ϕ(xi)⊤ϕ(xi) が定数になる → 写像先のサンプルは超球の球面上に分布 RBF カーネルならば原点とその他の 2 値分類と超球を求めるのが等価 になる 8

Slide 9

Slide 9 text

カーネル法の長所と短所 長所 ▶ 凸性など理論的な良い性質を保ったまま非線形に拡張できて最高 短所 ▶ 最適解が w∗ = ∑ i α∗ i ϕ(xi) という形で得られるので学習データを 一部保持しておく必要がある ▶ モデルのサイズや予測のとき計算量が大きくなりやすい ▶ 逐次的にデータを読む SGD と相性が良くない (スケールさせにくい) ▶ ϕ(xi) が陽に書き表せないと色々めんどい 9

Slide 10

Slide 10 text

Deep SVDD のアイデア (やっと提案モデルの話) ▶ ニューラルネットで変換してから超球を構成すれば良いじゃない 10

Slide 11

Slide 11 text

Soft-Boundary Deep SVDD min R,W R2 + 1 νn n ∑ i=1 max { 0, ∥ϕ(xi; W) − c∥2 − R2 } + λ 2 L ∑ ℓ=1 ∥Wℓ∥2 F ▶ サンプルを含む超球の半径 R をできる限り小さく ▶ 超球に収まらなかったサンプルに、はみ出した距離に比例したペナルティを ▶ ニューラルネットの重みに対して正則化 11

Slide 12

Slide 12 text

One-Class Deep SVDD min W + 1 n n ∑ i=1 ∥ϕ(xi; W) − c∥2 + λ 2 L ∑ ℓ=1 ∥Wℓ∥2 F ▶ Soft-Boundary Deep SVDD を簡略化してだいぶスッキリ ▶ よく考えたら半径とか気にせず c からの距離だけ考えれば良くない? ▶ サンプルが c 付近に集まるようニューラルネットが学習してくれる (はず) 12

Slide 13

Slide 13 text

超球の中心 c について 実は超球の中心 c は変数ではない (従来の SVDD では変数だったのに) Proposition 1 (のお気持ち) ▶ c をある値 c0 に設定すると W∗ = 0, R∗ = 0 という自明な最適解が 得られてしまう ▶ なので c は変数じゃなくて適当な値で固定しような ▶ 最初にちょっとサンプリングしてネットワークを通して 出力の平均とかにするのがおすすめ まあカーネル法と違って写像 ϕ も最適化の対象としていじれるし こうなるわなぁという感じ? 13

Slide 14

Slide 14 text

Bias 項はいらないの? Proposition 2 (のお気持ち) ▶ Bias 項があると最適解が R∗ = 0 になってしまう ▶ なのでむしろ入れちゃ駄目だよ 14

Slide 15

Slide 15 text

活性化関数は ReLU 一択 Proposition 3 (のお気持ち) ▶ (上界下界問わず) 0 以外で bound される活性化関数を使うと解が死ぬ ▶ 要するに ReLU 使えや Bias 項もだけど、ニューラルネットの表現力が強すぎると、すべての点が同じと ころに写像されて解が縮退する (R∗ = 0 になる) 15

Slide 16

Slide 16 text

ν-Property Proposition 4 (のお気持ち) ▶ Soft-Boundary Deep SVDD のハイパーパラメータ ν は超球からはみ出る サンプルのおおよその割合になっている ▶ ν = 0.1 と設定すると 1 割が超球からはみ出るような解が得られる ▶ One-Class SVM では同様の性質が証明されている ▶ 外れ値の割合はまあ高々こんなもんでしょという感覚で設定する 今回は SVDD のように超球の半径 R を使って定式化しつつ ハイパーパラメータとして C ではなく ν をねじ込んだので自明ではない (One-Class SVM と SVDD をごちゃ混ぜにした感じの定式化) 16

Slide 17

Slide 17 text

最適化のコツ 実は W と R をまとめて SGD で最適化しようとするとスケールが違いすぎて 上手くいかないらしい ▶ R を固定して W について SGD を数 epoch 回す ▶ W を固定して R を直線探索で最適化 なんというか研究の苦労が垣間見えた瞬間 17

Slide 18

Slide 18 text

数値実験 問題設定 ▶ MNIST と CIFAR-10 で 1 クラス以外を異常値として AUC で評価 ▶ Adversarial Attack を検出できるか 比較手法 ▶ PCA + Kernel One-Class SVM/SVDD with Gaussian Kernel ▶ PCA + Kernel Density Estimation ▶ PCA + Isolation Forest ▶ Deep Convolutional AutoEncoder (DCAE) ▶ AnoGAN 18

Slide 19

Slide 19 text

MNIST と CIFAR-10 の結果 (論文の Table 1 参照) 表がでかいので論文を直接見てね ▶ One-Class Deep SVDD が最高精度を達成することが多い ▶ Soft-Boundary Deep SVDD は 2 位が多い ▶ 精度は良いが One-Class Deep SVDD と得意なデータが被るせいか尽く 潰されてトップがとれない 19

Slide 20

Slide 20 text

Adversarial Attack の結果 ▶ やっぱり One-Class Deep SVDD が最も良い ▶ Adversarial Attack のサンプル以外には確度や crop がおかしいものが 異常値として検出された 20

Slide 21

Slide 21 text

まとめ (という名の個人の感想) ▶ 実装は結構シンプルなのでとりあえず使ってみれば良さそう ▶ カーネル法と比べてできあがったモデルの取り回しが楽なのは すごく良さそう ▶ SGD ベースの最適化でスケールさせやすいのはすごく嬉しい ▶ 精度は高いらしいが実際に使ってみると最適化周りとかで 地味に苦労する予感がする 21

Slide 22

Slide 22 text

参考文献 Lukas Ruff et al., Deep One-Class Classification, ICML 2018. David M.J. Tax et al., Support Vector Domain Description, Pattern Recofnition Letters, 1999. David M.J. Tax et al, Machine Learning, 2004. Bernhard Schölkopf et al., Estimating the support of a high-dimensional distribution, Neural Computation, 2001 22