shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

OCGAN: One-class Novelty Detection Using GANs with Constrained Latent Representations #6

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

著者・所属機関

Pramuditha Perera, Ramesh Nallapati, Bing Xiang

投稿日時(YYYY-MM-DD)

1. どんなもの?

1クラスのみを学習させ、クエリとして与えられたデータがそのクラスに属するものなのかを判定するone class novelityタスクにGANを導入し、様々なデータセットでSOTAを達成した。

従来の手法ではあるクラスを再構成可能な潜在表現を獲得することを目的にしていたが、本論ではこの目的だけでなく、クラス外のサンプルに対して再構成できないような潜在表現を獲得することも目的としており、クラス外のサンプルに対して初めて取り組んだ論文である。

image

2. 先行研究と比べてどこがすごいの?

このタスクに対してあるクラスの潜在表現を獲得することで、新たに入力されたデータを潜在空間に投影し、そのクラスに属するものなのか判定する手法がある。

この手法を応用したやり方は2つ存在し、クエリ画像とクエリを潜在空間に投影した後に再構成した画像を比較する方法と、潜在空間内での分布をモデル化する方法である。本論文では、前者のやり方を採用している。

この画像を再構成する方法の前提として、あるクラスの潜在表現を学習してしまえば、ほかのクラスを得られた潜在表現に投影して画像を再構成しても、元の画像を再構成することができずに結果として誤差が大きくなるため、異常検知として活用できる考え方が背景にある。

しかし、以下の図を見てわかるように手書き文字の「8」などは、ほかの文字と比較して複雑な形状をしているため、8の潜在表現を学習させると、結果的によりシンプルな形状である「0」や「1」などの潜在表現も獲得してしまい、再構成した際の誤差が小さくなってしまう。

そこで本論文では、あるクラスを表現できる潜在表現を獲得するだけではなく、対象のクラス以外のサンプルに対して十分に表現できないような潜在表現を獲得する学習方法を提案した。

image

3. 技術や手法の"キモ"はどこにある?

核となる考え方はシンプルであり、以下の図のように潜在空間に対して、学習させたサンプル同士の中間点に位置する潜在表現が、ほかのクラスを表現できる能力を獲得しないようにネットワークの学習を制御していくことである。

image

3.1 Denoising Auto-Encoder

AEを使用すると、入力された画像を再構成可能な、入力よりもより次元の小さい潜在表現を学習させることができる。そこでAEを改善したDAEを使用することで、より汎化性能が高く、入力よりも次元の大きい潜在表現すらも獲得できる。

潜在空間に上限と下限を設けるために、Encoderの出力にtanh関数を適用して、値を[-1, 1]の範囲内に収まるようにしている。再構成された画像と入力画像を使用して、以下の損失関数を計算していく。

image

3.2 Latent Discriminator

あるクラスの潜在表現を学習させても、潜在空間内の一部のみで表現できてしまうと、その領域外に入力が投影された際にクラス外の画像が出力できてしまう。

学習を行う際に潜在空間内から一様にサンプリングさせるために一様分布を使用している。

image

3,3 Visual Discriminator

潜在空間から抽出したサンプルが、クラス外のサンプルとならないようにネットワークを学習していく必要がある。そこで特定のクラスの画像と潜在空間から抽出した復元した画像を識別するDiscriminatorを導入する。

image

3.4 Informative-negative Mining

これらのネットワークを使用して潜在表現を学習すると、以下の右図でわかるように多くのサンプルはクラス「9」の画像を再構成できているが、いくつかのサンプルは0になっており、まだまだ目的の潜在表現が得られていない。

image

これは潜在空間の次元数が高い場合に、学習中にすべての潜在空間からサンプリングすることが不可能だからであり、次元を下げてしまうと性能が悪化してしまう。

そこでより質の悪い画像を生成する潜在空間の領域を探索するinformative-negative Miningを提案した。このサンプルを見るけるために、最初はランダムに潜在空間から復元した画像を、入力された画像が同一クラスかどうかを判定する分類器に与えて、そのクラスに属する画像か判断する。その後に、分類器がクラス外のサンプルだと判断した方向へと勾配を進めていくことで、負例の画像を探索していく。

3.5 Classifier

分類器を学習させる際は、サンプルの中に正例しか含まれていないため、クラス内の画像を再構成した画像を正例として扱い、潜在空間内からランダムにサンプリングした画像を負例として扱う。

実際に分類器を使用してMiningを実行してみると、以下の図でわかるように、より質の低い画像が選択されていることがわかる。

image

3.6 全体像

全体のアルゴリズムは以下になる。

image

4. どうやって有効だと検証した?

2つの条件設定で実行を行っており、以下の図は学習データに特定のクラスを省いて学習させたうえで、全データを使用してテストを実施した場合の結果である。

OCGANが非常に高い性能を発揮していることがわかる。

image

5. 議論はあるか?

CIFAR10はMNISTなどと異なり、同じクラスの画像であっても撮影状況が異なっていたりと、非常に異常検知が難しいデータセットである。

以下の図を見てわかるように、船などの背景が海の場合が非常に多いクラスに関しては高い精度での予測ができている。しかし、車などの撮影状況が写真ごとに異なるデータに対しては性能を発揮できていない。

image

6. 次に読むべき論文はあるか?

論文情報・リンク

shimopino commented 4 years ago

Official MXNet Implementation Tensorflow Implementation