Share
Embed
生成モデルと異常検知(途中)[AE,GAN,anoGAN,Ganomaly]
Ringa_hyj
September 22, 2020
Transcript
75 slides
-
異常検知とは 離れ具合、確率 を計算するモデル A() データXをモデルに入れたときに出てくる値 A(X) A(X) が基準 Φ よりも大きかったら異常とする
A(X) > Φ Φは基準であり、ヒューリスティックに決める -
スタート地点としてAEを考える Auto encoder (science,2006,hinton) Reducing the Dimensionality of Data with
Neural Networks ニューラルネットを使って次元削減を試みた。 手元の画像を入力として、画像自身を再構成するネットワークを作る。 ネットワークは中央の層をくびれさせた構造をとることで、 高次元入力を低次元で表現できるようになる。 (ノイズ特徴量減・過学習防止) 再度同じ画像へ展開するために最低限必要な次元数(情報)を決めるのは難しい 主成分分析のような考え方。 抽出された中央の層は「潜在変数 Latent Variable」と呼ばれる。 潜在変数がどのようなパターンを持っているのか理解できれば、 元の画像がなくとも新しい画像が作れるのでは? = 生成モデルの考え 構造は全結合やReLU CNN 損失は再構成画像との L2 loss 2 -
生成モデルの俯瞰 2017,Ian,NIPS 2016 Tutorial:Generative Adversarial Networks 生成する過程の関数のパラメータは 最尤法によって求めるよう設計されている 明示的(Explicit)に密度関数を考える場合と 暗黙的(Implicit)に密度関数など求めない場合
に分かれる VAEは潜在変数を正規分布だと仮定しよう という考えがあり、 正規分布に変換,当てはめ(近似)する (Markovでpdfを近似する場合もある) 分布をNN等で表す計算しやすい(Tractable)方法 GANはそもそも密度関数とか関係なく、 ゲーム理論的に2人のゲームプレイヤーが互いに高め 合うことで、 その結果生成モデルができる -
Pixel-CNN 2016, Conditional Image Generation with PixelCNN Decoders,AVDoord RNNが前後(previous)の関係であったものに対して、 CNNは周辺(region)の情報を見て次のピクセルの内容を推定する。
RNNに同じく大変遅い。 やっていることは 周辺ピクセルが得られた時 次のピクセル値を返す関数の尤度最大化 データの分布(関数)はNNによって表現される。 遅い対策として畳み込みゲートを追加する、スキップ構造を採用する等 -
GAN Generative Adversarial Networks, ian, 2014 Pixel,VAEのようにNNやガウス分布で確率密度関数を表現しようとする考えに対して、 そもそもデータが生まれる確率密度とか関係なく ひたすら乱数からデータを生成するように学習させる。 ゲーム理論的に二つのモデルを戦わせる。
ジェネレータ:ディスクリミネーターを騙す画像を生成 ディスクリミネーター:本当の画像か、生成された画像かを見分ける -
D(x)が1(max)になるようにDを最適化 Z generator G(Z) discriminator G(Z)なら0 Xなら1を返す X GANのやりたいこと 1-D(G(Z))が1(max)になるようにDを最適化
1-D(G(Z))が0(min)になるようにDを最適化 Generatorの気持ち: Discriminatorの気持ち: 敵対 乱数 -
D(x)が1(max)になるようにDを最適化 Z generator G(Z) discriminator G(Z)なら0 Xなら1を返す X discriminatorが訓練される →
偽物と本物がわかる 1-D(G(Z))が1(max)になるようにDを最適化 1-D(G(Z))が0(min)になるようにDを最適化 Generatorの気持ち: Discriminatorの気持ち: 敵対 乱数 -
D(x)が1(max)になるようにDを最適化 Z generator G(Z) discriminator G(Z)なら0 Xなら1を返す X 訓練されたdiscriminatorを騙そうとgeneratorが頑張る →
より本物らしい画像が生成される 1-D(G(Z))が1(max)になるようにDを最適化 1-D(G(Z))が0(min)になるようにDを最適化 Generatorの気持ち: Discriminatorの気持ち: 敵対 乱数 理論的なゴールはdiscriminatorが0.5を出すようになること(ナッシュ均衡) 本物と偽物の区別がつかないくらいgeneratorの精度が上がる -
min-max損失の欠点 log(1-D(G(z))) D(G(z)) 0 1 生成画像が明らかにfakeである時、 D()の出力は0になる しかし損失関数の購買はほとんど0 なので学習は進まない 0
0 0 D(G(z)) 1 - log D(G(z)) 非飽和GAN(non-saturating) の損失の場合 初期状態の学習は素早く反映される (代わりに収束する補償はなくなる) binary cross entropy : y(log y^) + (1-y)(log (1-y^) ) -
どんなネットワークが使われた DCGANより all-conv-CNN ・mini-batch 128 ・データは正規化しておく(0,sd=0.2) ・leakyReLUの傾き0.2 ・adam最適化を使い、lr=0.0002, momentum =
0.5 STRIVING FORSIMPLICITY:THEALLCONVOLUTIONALNET, 2015, springberg -
モード崩壊 Mode Collapse UNROLLEDGENERATIVEADVERSARIALNETWORKS, L Metz,2017 generatorが同じような画像を生成し続けてしまう問題 同じような出力で止まっている ある一つの出力しかしなくなる 原因?
discriminatorを騙しやすい画像を見つけると、 そればかり生成して損失を小さくしようとしてしまう adaGAN VEEGAN WGAN UnrolledGAN などが解決に向けて研究している -
PGGAN PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND
VARIATION, 2018 小さいサイズの画像を生成するネットワークから、 徐々に大きい画像生成ネットワークへと層を追加していく(PROGRESSIVE) 高精度の画像を作る事ができる -
PGGAN PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND
VARIATION, 2018 層を追加するといっても簡単に学習は進まないので、学習途中に少しだけ新しい層を挟む学習方法を使う -
pix2pix Image-to-Image Translation with Conditional Adversarial Networks, 2018 cycle GAN
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, 2017→2020 image-to-imageのGAN 線画→色付き シマウマ→縞なし 写真→ゴッホの画風 GANを二本用意して逆方向に走らせる -
anoGAN GANをつかった異常検知の初めての例 らしい Unsupervised Anomaly Detection with Generative Adversarial Networks
to Guide Marker Discovery, 2017 異常位置のアノテーション無しでも異常部位のマーカーを付けることができる。 異常度の診断は、特徴空間上での離れ具合についてで判断される。 世の中にはDBN(ディープビリーフネット)から特徴量を抽出して1classSVMで異常検知を行うアプローチもあった High-dimensional and large-scale anomaly detection using a linearone-class SVM with deep learning, Erfani, 2016 畳み込みAE+SVMでの正常学習とか Identifying and Categorizing Anomalies in Retinal Imaging Data -
Z空間からz1をサンプリングする 学習済み生成器に入れて画像を生成する G(z1) 損失関数を小さくするように次のz2を選ぶ これをガンマ回繰り返す residual loss 生成画像G(zガンマ) と 画像x
の類似度を比較 discrimination loss 生成画像G(zガンマ) と 多様体カイ上の比較?? -
Residual Loss 画像 x と G(zガンマ) の非類似度の測定 完璧な生成器ならば、その写像は全く同じ画像をつくるので損失は0になる Discrimination Loss
G(zガンマ)をdiscriminatorに入れる。D(G(zガンマ)) α=1として シグモイドエントロピー σ() を計算する。 でもコレは使わない? -
feature matchingのアイデア 生成器の訓練を目的とせず、潜在空間へのマッピングのためにfeature matchingをつかう discriminator lossは以下を提案する 異常のlossから逆写像が求まらない代わりに、 discriminatorの最終層の値って潜在空間のように考えられそうだよね。 って考えから特徴量(最終層の出力)は、元の画像の特性をよく表していることが期待できるので、 これを利用する
中間層の出力 f() 以上からzの係数を最適化する ←再学習はさせない? 最適化の実装がみつからない そのための加重和の損失 これが潜在空間へのマッピングに使用される損失関数 -
efficient-gan anoGANは 逆写像を求められないので、入力ノイズとジェネレータの間で、 正常画像に特化した重み層を作り出し、潜在空間を疑似的に調整した。 毎回?重み層を探索する必要があるので、遅い efficientganは逆写像に相当する部分もNNによって再現することでのアプローチを行う この逆写像NNはエンコーダーとして呼ばれ、正常画像xを潜在空間に写像するものである エンコーダーはG,Dとともに学習される。そのため、検証時に重み層を探索するような計算コストは必要ない この考え方は主にBiGAN(Adversarial Feature
Learning,2016)から触発されたもの 同時に学習する枠組みは以下 -
異常度は 最高性損失 LG 識別機の損失 LD 二つの損失が定義できる どっち使ってもいい から、anoGANのように以下で定義する LG(x) =
||x − G(E(x))||1 LD(x) =σ(D(x, E(x)), 1) LD(x) = ||fD(x, E(x)) − fD(G(E(x)), E(x))||1 サンプルが実データの分布から来た事を評価 feature-matching lossとして定義 再構成するときの特徴量が真の特徴量と似ているかどうかを評価できる -
efficient 画像空間から潜在空間への逆写像をするエンコーダーも学習 anoGANもそうだけど、画像の異常は潜在空間にも表れるだろうという考えがある abnormal samples differ from normality in not
only high-dimensional image space but also with lower-dimensional latent space anoGANは事前に学習させたネットワークを使い、 一層、調整層を追加して復元させ、その調整でも復元できないようならば潜在空間が正常からかけ離れて いるのだろう、というもの -
GANとはペアネットワークの共訓練によって進める GANは潜在空間から画像を生成するためのモデルを作る anoGANでは潜在ベクトルがデータの真の分布であれば、 画像から潜在空間への逆写像を行うことで潜在空間上の距離を比べたら異常度の指標になるだろう という考え ただ、この逆写像を求める関数が非常に複雑であり、困難なのが問題 しかしBiGANがこの逆写像を学習させることに成功した(MNISTだけで) Adversarial Feature Learning,
2017 Efficient GAN-Based Anomaly Detection 2019 [EGBAD] AnoGANのように二段階学習を必要としない。 2つのcGANを使ったアプローチによる異常検知も成果を上げている Training Adversarial Discriminators for Cross-channel Abnormal Event Detection in Crowds, 2018 -
三つ目のサブネットワークは xとxhatを見分けるための識別discriminatorである。 これも構造はDCGAN モデル訓練について そもそもの考えとして、エンコーダは異常画像を潜在ベクトルにエンコードできても、 デコーダは異常画像を再構成できないという仮説によるものである これは正常画像しか学んでいないネットワークは、再構築のパラメータが正常画像に特化 されていると考えているからである (もし、うまく異常画像を再構成できていても?) 異常画像によって再生成されたXhatが再度Zhatにマッピングされることで、ZとZhatに
不一致が生じるだろう 生成画像の精度だけでなく、潜在空間に差が生じている場合を異常の判定に使ってみよう。 これらの仮説から三つの目的関数を定義してネットワークを最適化する -
Adversarially Learned One-Class Classifier for Novelty Detection, 2016 GANより簡単の特徴量を使ったものだと Learning
Deep Features for One-Class Classification、2018 があって、こっちは異常が画像の差分として出てくるので、異常部分の可視化ができる 再構築した画像が 「正常から再構成された画像」か「異常から再構成された画像」か を判定するCNNをGANの後ろにくっつけたもの -
Towards Automatic Threat Detection: A Survey of Advances of Deep
Learning within X-ray Security Imaging, 2020 -
Modeling the Distribution of Normal Data in Pre-Trained Deep Features
for Anomaly Detection 2020 (efficianNetのADを超えた最近pubされたもの) -
参考 https://francisleon.github.io/2018/07/23/semi-supervised-seg-GAN/ https://guimperarnau.com/blog/2017/03/Fantastic-GANs-and-where-to-find-them https://blog.negativemind.com/2019/10/05/conditional-gan/ https://jaan.io/what-is-variational-autoencoder-vae-tutorial/ https://wiseodd.github.io/techblog/2016/12/10/variational-autoencoder/ https://towardsdatascience.com/auto-regressive-generative-models-pixelrnn-pixelcnn- 32d192911173https://keras.io/examples/generative/pixelcnn/ https://isabelaalb.wordpress.com/2017/03/07/first-results-l1-vs-l2-loss-cnn-autoencoder/ http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture13.pdf
https://www.renom.jp/ja/notebooks/tutorial/generative-model/VAE/notebook.html https://www.slideshare.net/yuifu/ss-49489128https://qiita.com/takuro- Ishida/items/2ecfafc679260211a0ab https://machinethink.net/blog/coreml-upsampling/ https://cedar.buffalo.edu/~srihari/CSE676/22.3-GAN%20Mode%20Collapse.pdf