【論文紹介】OCGAN: 制約付き潜在表現を持つGANによる画像の異常検知

こんばんは。ChillStackの茶山です。

GANをはじめとする生成モデルを用いた研究は現在とても大きな成果をあげています。 さらに生成モデルはラベル情報を考慮しない教師なし学習であるという利点を活かし、異常検知に応用する研究が現在盛んに行われています。

本記事では、CVPR2019に採択された画像の異常検知に関する論文の一つである OCGAN: One-class Novelty Detection Using GANs with Constrained Latent Representations をご紹介します。

概要

本論文では、OCGANという異常検知モデルを提案しています。 OCGANの特徴として、単一クラスによる学習のみでクラス外の異常データを検知することができます。 モデルはDenoising AutoencoderにGANの要素を組み込み、排他的な潜在表現を学習するような制約を設けています。

本論文では画像を扱い、4つの公開データセット(MNIST, fMNIST, COIL, CIFAR10)を用いて実験を行っています。

手法

ニューラルネットワークを用いた異常検知の手法は主に2種類のアプローチがありますが、どちらの手法も初めに与えられた入力クラスを代表する潜在表現の学習を行う点は共通しています。 一つは学習により得られた潜在表現を入力とした逆写像を行い、得られる再構成画像と入力画像の差を比較して異常検知を行う手法です。 もう一つは、分布を用いて既知のクラスの特徴を明示的に潜在空間内でモデリングを行う方法です。

OCGANは前者のアプローチをとります。全ての入力が学習したクラスの画像を再構成するようにネットワークが設計され、高いMSEをとる画像を異常データとして検知します。 例として下図の1段目の入力と3段目のOCGANによる再構成結果を確認してわかるように、MNISTの8の数字が学習されたモデルではクラス内の画像が上手に再構成できています。 一方でクラス外の画像は入力とは大きく異なる8の数字を復元します。

f:id:chillstack:20190806124057j:plain

OCGANは4つのサブネットワークから構成されます。それぞれのサブネットワークを説明します。

f:id:chillstack:20190805124635j:plain

Denoising Autoencoder

入力画像から潜在空間への写像を行うためにDenoising Autoencoder(以下DAE)を採用しています。入力画像に対して、n\sim\mathcal{N}(0, 0.2) の白色ノイズを加えています。ここで、潜在空間が有界になるように最終畳み込み層は活性化関数としてtanhを用いています。

Latent Discriminator

潜在空間上の全てのサンプルが与えられたクラスの画像を生成するような潜在空間の獲得を目指します。そのためには、クラス内の潜在表現が一様に分布するような制約を付けるためにLatent Discriminatorを導入します。これは、学習画像の潜在表現と一様分布  \mathbb{U}(-1,1)^{d} からサンプリングした偽データを見分ける識別器です。DAEと同時に学習させることで  ld の均衡時に、 \mathbb{U}(-1,1)^{d} から均等に分布するような潜在表現のマッピングをエンコーダが学習することが期待します。

Visual Discriminator

通常のDAEは恒等写像を学習するため、与えたクラス以外のサンプルを表現しないように、クラス内の画像とGeneratorによってランダムに生成された画像を区別するためのVisual Discriminatorも全体の構造に加えています。

Informative-negative Mining

上記3手法によって学習されたモデルでも、下記画像(左部)のように生成画像の一部が他クラスを表現するようなサンプルが確認されています。

f:id:chillstack:20190806164621p:plain

潜在空間の全領域をサンプリングすることは難しく、このように一部の領域から生成された画像は与えられたクラスの画像を表しません。 ここで生成が上手に行われていないサンプルをInformative-negativeサンプルと呼びます。 著者はこれらのInformative-negativeサンプルを効率よく検出するために新たな識別器(以下Classifier)を導入しました。 Classifierは、入力画像が与えられたクラスをどれほど良く表現するか判断します。勾配情報を用いて、クラス外の画像を生成する潜在空間上の点を探します。

識別器の損失関数  l_\text{classifier} はGeneratorとDiscriminatorとは別に学習され、Binary Cross-Entropy lossによって学習されます。

学習の順番

学習は2ステップからなります。 まずはじめにClassifier以外のモデルは重みが固定され、Classifierはクラス内データと生成された偽データによって学習されます。 注意としてClassifierの学習、つまりInformative-negative Samplingはモデルがある程度の品質の偽画像が生成されてから行われます。

次にClassifierは重みが固定され、DAEと2つのDiscriminatorの学習が行われます。 Generatorの学習では、Informative-negativeサンプルが  \mathbb{U}(-1,1) の分布から選択されます。 Informative-negativeサンプルとノイズが付与された学習画像の潜在表現を用いてDAEが学習されます。

再構成画像の精度を保証するために、下記のような重み付きlossになっています。 10\times l_\text{MSE}+l_\text{visual}+l_\text{latent}

結果

4つのデータセット(MNIST, fMNIST, COIL, CIFAR10)と2つの実験プロトコルによってモデルの評価が行われています。

2つの実験プロトコルは下記のように定義されています。

実験プロトコル1: 与えられたクラスの学習用データセットは8:2で学習・テストデータに分けられ、学習が行われます。クラス外のデータは負例サンプルとしてランダムに選ばれテストデータの50%を占めます。

実験プロトコル2: 各データセットの学習・評価データの割合に従い、与えられたクラスはそれを用いて学習と検証を行う。テスト時は全クラスのテストデータを用いる。

先行研究に倣い、提案手法はAUCとROCカーブによって評価されています。

f:id:chillstack:20190805124703j:plain

MNIST、COIL、fashion MNISTを用いて行われた実験プロトコル1の結果より、OCGANいずれもAUCは最も高い値を達成しています。

f:id:chillstack:20190805124536j:plain

Table 2よりMNISTは実験プロトコル2においても、最高のMean AUC、10クラス中9クラスで最も高いAUCの値をとっています。

一方でTable 3からわかるように、CIFAR10では先行研究のdeep-SVDDと同じ前処理を施し、平均画像を差し引いたことにより従来手法と比べて高いmean AUCを獲得することができました。

このように、OCGANは補正済みのシンプルな画像に対しては性能がよく、CIFAR10のような多種多様な撮影条件の自然画像からなるデータセットには改善の余地があります。

コメント

単一クラスによる学習で異常検知が可能なため、ラベル付与済みデータが限られている実データに有効なモデルだと考えられます。

ChillStackではこのような最新の研究技術を取り入れ、お客様のニーズに合った検知モデルを作成しております。 無料で不正検知・異常検知に関するご相談を受け付けておりますので、お気軽にご連絡ください。

docs.google.com

論文情報・リンク