覚え書きブログ

異常行動検知とGANの雑メモ

Future Frame Prediction for Anomaly Detection - A New Baseline, W. Liu et al., arxiv, 2018, CVPR2018

論文:https://arxiv.org/pdf/1712.09867.pdf
githubhttps://github.com/StevenLiuWen/ano_pred_cvpr2018
GANを用いて予測したフレームと真のフレームの差を用いた異常検知。予測と真との動きベクトルが一致するように制約をいれる「temporal constraint」を導入。

Improved Techniques for Training GANs, T. Salimans et al., NIPS2016

論文:https://papers.nips.cc/paper/6125-improved-techniques-for-training-gans.pdf
GANの学習では、非凸の対立ゲームのナッシュ均衡を探す必要があるが、実際に学習をまわしてみると、学習に失敗(収束しない)することがよくある(経験的には、Discriminatorがよく初期反復で、高いlossを出したまま動かなくなることがある)。
その原因の一つが、single point modeと呼ばれる、GeneratorがDiscriminatorにより真と判定される一部の同じデータのみを出力し続ける状態に入る場合である。通常のミニバッチで求めたmin-max lossでは、平均の誤差は見ているものの、Generatorが出力したデータ間の類似性はとくに見ていないため、Generatorが同じデータを出力していても罰則を与えることができない(または、Discriminatorがその状態になっていることを知る由もない)。そこで、本論文では、Feature matching、minibatch discrimination、およびHistorical averagingというテクニックが提案された。

  • Feature matching:Discriminatorの中間層の特徴ベクトルのrealとfakeの統計量の一致度を見る。例えば、期待値や分散など。これにより、Generatorが同じデータを出力しだすと、分散でおそらく差がでるのでGeneratorに罰則を与えることができる。以下のような期待値だけでは差が出ないと思われる。

f:id:hirotaka_hachiya:20190401180215p:plain

  • minibatch discrimination:ミニバッチ内のデータ間の類似度(closeness)を、線形変換し圧縮したベクトル(M_{i,b}とM_{j, b})を用いてデータi, j間の類似度を測る。

f:id:hirotaka_hachiya:20190401174810p:plain
これを、全データnに対して足し、B種類の線形変換に対してかけた、n x Bの行列を出力するlayerのことを、minibatch discrimination layerと呼ぶ。類似度が高いデータをGeneratorが出していることを、この行列を用いてDiscriminatorは知ることができる。
f:id:hirotaka_hachiya:20190401175102p:plain

  • Historical averaging:

GeneratorとDiscriminatorそれぞれのlossに以下のような過去のパラメータの値の平均からの乖離を追加する。これにより、おそらくoverfittingの回避を狙っている(Discriminatorが初期反復で失敗する場合は大抵大きくパラメータが更新されてoverfittingしているから?)。
f:id:hirotaka_hachiya:20190401175343p:plain

これ以外にも、one-sided label smoothingとVirtual batch normalizationが提案されている。

Triple Generative Adversarial Nets, C. Li et al., NIPS2017

論文:http://papers.nips.cc/paper/6997-triple-generative-adversarial-nets.pdf
モチベーションは、improved GANに似ているが半教師あり学習の設定を考えている(つまり、カテゴリラベルが付与されていない教師無データが大量にある)。single point mode(課題1)に加えて、Discriminatorが、realかfakeの2値分類と、カテゴリの分類問題とを同時に学習する場合、Discriminatorの学習可能な容量を超えているという課題(課題2)も考えている。解決方法として、以下のように、カテゴリ分類学習に特化した、Classifierを導入することを提案している。課題2は単純にネットワークを分離することで解決し、課題1は、教師無データXc~P(X)に対して、ClassifierをかけてYcを予測し、(Xc, Yc)を作り、これをrealとしてDiscriminatorが学習することにより解決しようというものである。つまり、Classifierから得られる、多様なデータ(Xc, Yc)を、Discriminatorにrealかfakeの分類をさせることにより、Generatorがsingle point modeに入るメリットを減らしている。すなわち、single point modeは、初期の反復の段階で、GeneratorがDiscriminatorが苦手なデータを特定できてしまい、Generatorがその苦手なデータばかりを出すようになりDiscriminatorの学習を邪魔するようになる(Discriminatorは、Generatorが生成するデータをFakeと判定できるようになっても、オーバーフィットしているので、Generatorが少し変更を加えて生成したデータを誤判定するというのを繰り返す)。しかしながら、Classifierによる多様なデータをDiscriminatorに与えることにより、Discriminatorは多様なデータに対してTrueまたはfakeが判定できる状態を維持させることができる。

f:id:hirotaka_hachiya:20190401180713p:plain

Wasserstein GAN

論文:https://arxiv.org/pdf/1701.07875.pdf
ブログ:https://vincentherrmann.github.io/blog/wasserstein/

realデータの分布とGeneratorにより生成されたfakeデータの分布間のEarth Mover's distance (Wasserstein distance)を最小化するように学習する。以下のtotal variation, KL, Jensen Shannonなどと比べて、EMは連続性を持ちやすく学習が安定するというメリットがある。
f:id:hirotaka_hachiya:20190402003249p:plain
f:id:hirotaka_hachiya:20190402003348p:plain

ちなみに、x軸方向は確率1で「0」をとり、y軸方向は一様分布にしたがって[0,1]の値zを取る2次元の分布P0(x,y)に対し、(\theta, z)でモデル化されたP\theaを考えた場合、P0とP\thetaの距離はそれぞれのメトリックで以下のようになる。
f:id:hirotaka_hachiya:20190402003933p:plain
このように、EMは連続性を担保しやすいloss関数となっている。
f:id:hirotaka_hachiya:20190402004019p:plain