GANomaly:敵対的トレーニングによる半教師あり異常検出

GANomaly:敵対的トレーニングによる半教師あり異常検出

はじめに
 2018年に11月に投稿された、現代の最先端の GAN ベースの異常検知アプローチと従来のオートエンコーダーベースの異常検知アプローチの両方を上回ったモデル『 GANomaly 』について紹介します。

※記事中で利用している図は特に断りがない限り、論文から引用しています。

●論文
『GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training』
https://arxiv.org/pdf/1805.06725.pdf

概要

 異常検知はデータセットが一方の正常クラスに大きく偏り、他方の異常クラスのサンプルサイズが十分でない場合に、正常と異常を判別します。正常と異常を判別する問題は、通常、「教師あり学習」の領域で取り扱うことができます。しかし、未知・未見の異常の判別は、「半教師あり学習」の領域として取り扱う必要が有り、このことが問題をより困難にしています。
 このような問題を解決するために、高次元画像空間の生成と潜在空間の推論を共同で学習する敵対的生成ネットワークを用いた、新しい異常検出モデルを導入しました。

 GANomalyでは、生成ネットワークにエンコーダ、デコーダ、エンコーダサブネットワークを用いることで、入力画像を低次元のベクトルに写像し、それを用いて生成された出力画像を再構成することが可能になりました。エンコーダーサブネットワークを使用することで、この生成された画像を潜在的な表現に抽出し、学習中にこれらの画像と潜在ベクトル間の距離を最小化する事で、多数の正常なデータでの学習に有効になりました。
 推論時に学習したデータ分布からの距離の指標が大きくなると、その分布から外れたもの、つまり異常であることを示します。様々な分野データセットを用いた実験により、このモデルの有効性と、従来の最先端アプローチに対する優位性が示されました。

開発背景

異常検知の問題点

 教師あり学習は、ラベルが付けられた大規模なデータセットに大きく依存しています。しかし、AI を実際に使用するとなった時の問題点は、異常データより正常なデータの方が多いという問題があります。

異常検知の例

 異常検知では、正常データのみをトレーニングに使用し、学習された正常のサンプル分布とは異なるものを異常とし、異常データを特定します。こちらは、航空または国境警備のためのX線スクリーニングのデータセットを用いています。セキュリティの脅威をもたらす異常なアイテムに一般的に遭遇することは少なく、異常データを取得することは困難です。また、脅威となりうる異常な物は、様々な状況によって変化する可能性があります。


 X線を使用し、バッグの中に危険物がないかを判定しています。左3列は正常データで、学習に使用しています。右2列は評価時のもので、赤色の矩形内に危険物があり、これらを検出することが出来ています。

GANomaly

 GANomaly は大きく分けて、Generator(G)、Encoder(E)、Discriminator(D)の3つから構成されています。Generator は AE(Auto Encoder)構造であり、実画像から潜在空間上の特徴量である潜在変数を抽出し、その潜在変数から偽画像を生成します。Generator 内部の Encoder(GEncoder)は、2次元畳み込み層、バッチ正規化層で構成され活性化関数に leakyRelu(Leaky Rectified Linear Unit)を用います。Generator 内部の Decoder(GDecoder)は、2次元転置畳み込み層、バッチ正規化層で構成され、活性化関数に Relu(Rectified Linear Unit)を用いています。偽画像を入力とする Encoder(E)は、GEncoder と同様の構成となっており、Generator が生成した偽画像から潜在変数を抽出します。Discriminator は、入力画像が実画像か偽画像かを判別します。Discriminator の構成は、GEncoder と同様の構成とし、leakyRelu 活性化関数を使用します。そして、GDecoder の出力層には tanh(HyperbolicTangent)層を使用し、Discriminator の出力層には Sigmoid 関数を使用します。一般的に敵対的学習では、Discriminator の学習が Generator よりも速く収束してしまうため、Generator の学習が十分に収束しないことが知られています。

GANomaly ネットワーク構造

異常検知で用いられる GAN の比較

A:AnoGAN

 AnoGAN のネットワーク構造であり、DCGAN などの基本的な GAN 構造になっている。

B:Efficient-GAN

 Efficient-GAN はencoder が加わり、encoder とgenerator を同時に学習させている。

C:GANomaly

 GANomaly は更に encoder が追加され、discriminatorに 入力するのは画像と生成画像のみです。

左から AnoGAN、Efficient-GAN、GANomaly

損失関数

 GANomaly の損失関数は、3つの損失関数の重み付け和で定義されています。

Feature matching 損失

 1つ目の損失関数は、Feature matching 損失 L_adv です。

 f(x)、f(G(x)) は実画像x、偽画像 G(x) を入力した際に、Discriminator の中間層の最終畳み込み層が出力する特徴マップです。Goodfellow らの GAN の損失関数では Discriminator の出力層の出力を使用しましたが、現在では Feature matching と呼ばれる、Discriminator が実画像xと偽画像 G(x) から抽出する特徴マップの誤差を用いる損失関数を使用することで、従来よりも安定した学習が可能であることが報告されています。この Feature matching 損失 L_advは、実画像xから抽出した特徴マップ f(x) と偽画像 G(x) から抽出した特徴マップ f(G(x)) の差のL2ノルムに対してミニバッチ単位で平均を算出することで求められます。

Contextual 損失

 2つ目の損失関数は、Contextual 損失 L_con です。

 Contextual 損失 L_conは、実画像xと偽画像 G(x) の各画素におけるL1ノルムをバッチ方向に対して平均したものです。Contextual 損失 L_conを用いることで、Generator は実画像xに近い偽画像 G(x) を生成するように学習を行うことが可能となります。

Encoder 損失

 3つ目の損失関数は、Encoder 損失 L_enc です。

 Encoder 損失 L_encは、実画像xから抽出した潜在変数 G_E (x) と、偽画像 G(x) から抽出した潜在変数 E(G(x)) のL2ノルムに対するバッチ方向の平均です。GEncoder と Encoder(E)は、Encoder 損失 L_encによって、GEncoder が抽出する潜在変数 G_E (x) と、Encoder(E)が抽出する潜在変数 E(G(x)) が潜在空間上において近い分布となるように学習します。

3つの損失関数の重み付け和

 GANomalyの損失関数Lは損失関数 L_adv、 L_con、 L_enc を用いた重み付け和によって、算出されます。ここで、w_adv、 w_con、 w_encはそれぞれ L_adv、 L_con、 L_enc に対する重み付け係数です。

GANomaly を用いた異常検知

 学習したモデルにあるテストデータx̂を入力した場合、generator の encoder で latent で次元削減される。そのベクトル G_E (x) は正常データなら学習データでの分布を満たす値、異常データなら分布から外れるような値となります。

 G_E (x)を generaotr の decoder に入力し、出てきた再構築画像は正常画像なら正確に再現し、異常の場合は異常部分を再現することが出来ません。

A(x̂) は、G_E (x̂) と E_G(x̂) の差をとると、正常値は小さくなり、異常値は大きくなります。

実験構成

 異常検知を評価するために、4つのデータセットを使用しました。

MNIST:1つのクラスを異常クラスとし、残りのクラスを正常クラスとみなして実験を行いました。合計で10セットのデータがあり、それぞれが個々の桁を異常とみなします。

CIFAR10:CIFAR データセットの使用内で、1つのクラスを異常とし、残りを正常としました。

大学手荷物異常データセット(UBA):データセットは、230,275の画像パッチから構成されます。正常なサンプルは、従来のX線画像と偽色物質マッピングを用いて構築されたフルX線画像から抽出されました。異常クラスは3つのサブクラス-ナイフ、銃、その他から構成され、手動で切り取った脅威的な物体が含まれます。

Full Firearm vs. Operational Benign-(FFOB):イギリス政府の評価データセットも使用しています。これは、専門家が隠し持つ銃器(脅威)と、商業用X線セキュリティスクリーニング作業(荷物/小包)からの業務用良性(非脅威)画像の両方から構成されています。4,680枚の銃器画像(完全異常画像)と67,672枚の業務用良性画像(完全正常画像)から構成されています。

 上記のデータセットにおける訓練集合とテスト集合の分割手順は以下の通りです。正常なサンプルを80%と20%のサンプルがそれぞれ訓練データとテストデータの一部とみなされるように分割しました。MNIST を32×32に、DBA と FFOB を64×64にそれぞれリサイズしました。

実験は以下、設定で実施されました。
 ・PyTorch (v0.4.0 with Python 3.6.5)
 ・dual-core Intel Xeon E5-2630 v4 processor と NVIDIA GTX Titan X GPU
 ・初期学習率:0.01、 最適化関数:Adam
 最適な結果を得るために経験的に選ばれた重み値w_adv=1、w_con=50、w_enc=1重み付き損失に基づき最適化されています。
 MNIST、UBA、FFOBデータセットに対して、15、25、25エポック学習させている。

結果

 ROC(Receiver Operating Characteristic)の曲線下面積(AUC)、真陽性率(TPR)の偽陽性率(FPR)の関数として、それぞれ異なる閾値に対するTPR-FPR値に基づいた結果です。

UBA と FFOB データセットに対するAUCの結果

 UBA と FFOB のデータセットにおいて、GANomaly はナイフの場合を除き、他のアプローチを上回る性能を示しました。
実際、ナイフの場合のモデルの性能は他のモデルと精度が変わりません。ナイフの場合、性能が比較的低いのは、形状が単純であるため、過剰な適合を引き起こし、誤検出が多くなると考えられてます。しかし、全体的な性能については、GANomaly は他のモデルを上回り、UBA と FFOB データセットでそれぞれ0.666と0.882の AUC を出しています。

(a):3つの異なるランダムシードを用いて MNIST データで得られた結果
 他のモデルに対して、GANomaly が優れていることを示しています。他のモデルに比べて、高い AUC を達成しています。

(b):CIFAR10データセットで学習させたモデルの性能
 GANomaly が、異常として選択されたどのクラスに対しても、最も良い AUC 性能を達成していることが分かります。

ハイパーパラメータの選択が最終的にモデルの全体的な性能の比較

MNIST データセットを使用している。
(a)では、潜在ベクトルzのサイズが100であるときに、桁数2の異常がある MNIST データセットに対して最適な性能が達成されることが分かります。
(b)は、損失関数のチューニングが全体の性能に与える影響を示しています。このモデルは、重み値 w_adv=1、 w_con=50、 w_enc=1 のときに最も良い AUC を達成しました。

 推論段階での異常スコアのヒストグラム(a)と、識別器ネットワークの最後の畳み込み層から抽出された特徴の t-SNE 可視化(b)です。
両図から、潜在ベクトル z と特徴量 f の空間内で明確に分離されていることがわかります。

GAN ベースのモデルのランタイム性能

 他のアプローチと比較して、AnoGAN は潜在ベクトルの最適化が各例に必要であるため、計算量がかなり大きくなります。
 GANomaly は最も高い実行時の性能を達成しました。UBA と FFOB の両データセットの実行性能は、画像サイズとネットワークサイズが MNIST の2倍であるにもかかわらず、MNIST と同等の結果を得ることが出来ています。

本モデルの入力と出力である実画像と偽画像の例

 この結果は、異常なデータが生成された場合は失敗です。トレーニングされていない異常なサンプルを生成できません。
 MNIST のデータにおける2つクラスでは、データセットが比較的挑戦的でなく、モデルが十分な情報を学習しているため、学習中に見られなかったサンプルを生成できることに起因しています。
 この結果より、UBA、 FFOB ではモデルが異常なオブジェクトを生成できないことを示しており、結果は成功といえると結論づけています。

まとめ

 本論文では、敵対的学習を用いた一般的な異常検知のための、新しいモデルを紹介しました。様々な複雑さのデータセットと、X線セキュリティスクリーニングの異常検知のタスクで実験した結果、提案手法は、現代の最先端のGANベースの異常検知アプローチと従来のオートエンコーダーベースの異常検知アプローチの両方を上回り、あらゆる異常検知タスクへの能力があることが示されました。