最新AI論文をキャッチアップ

情報が少ない異常検知でこそ学習済みモデルを活かせ

情報が少ない異常検知でこそ学習済みモデルを活かせ

異常検知

3つの要点
✔️ SoTAを大幅に上回るだけでなく、教師あり学習に匹敵する異常検知性能を達成
✔️ 既存の学習済みモデルの特徴量を転用することで少ない計算コスト抑えつつも高い精度を達成
✔️ 正常データのみから特徴量を学習しようとする既存の異常検知手法では特徴量獲得が難しいと主張

Modeling the Distribution of Normal Data in Pre-Trained Deep Features for Anomaly Detection
written by Oliver RippelPatrick MertensDorit Merhof
(Submitted on 28 May 2020 (v1), last revised 23 Oct 2020 (this version, v2))
Comments: Accepted by ICPR2020. IEEE.

Subjects: Computer Vision and Pattern Recognition (cs.CV)

code:  

本記事で使用している画像は論文中のもの、またはそれを参考に作成したものを使用しております。 

はじめに

画像認識の中でも、異常画像かどうかを判別する異常検知は、実社会で応用可能性が高いタスクである。例えば、工場で生産された大量の正常部品の中から、少量の異常部品を選別するなどの事例が考えられる。

しかし、検出したいものが異常画像である性質上、大量の正常データに対し、異常データが少ないデータ不均衡な状態がほとんどである。そこで、通常の画像認識タスクでの手法では、異常検知の学習を行うことができず、異常検知のタスク独自の研究がされてきた。このような異常検知の手法は多くは、正常データのみを用いて、ゼロから正常データの特徴量を抽出するアプローチで進められてきた。簡単に言えば、何も知らない状態で、正しいものを見慣れていれば、異常を見るとなんか怪しいなと思えるのでは、という取り組みである。

しかし、本論文の筆者はそれに対し異を唱えた。本論文では、PCAによる主成分分析の結果分析を基に、よくある異常検知の既存手法のアプローチである、スクラッチから正常データ固有の特徴量を抽出することはできないと主張した。

その代わり、既存の画像分類手法の学習済みモデルを利用して抽出した特徴量を異常検知に活用すべきと、提案した。つまり、異常検知における転移学習である。実際、著者は学習済みモデルを異常検知に活用することで、MVTec ADデータセットでSOTAを達成している。このアプローチを利用することで、常に発展している画像認識手法を異常検知にも有効活用できるようになる期待値が高い手法かもしれません。

提案手法の概要

提案手法で異常検知する流れは以下になります。

  1. 異常検知に利用する正常データを事前に学習済みのモデルに入力して推論します。なお、今回の学習済みモデルにはImageNetで学習したEfficientNet(執筆当時のImageNetの画像認識SOTA)を利用しています。
  2. 推論後のモデルのレイヤーから抽出した特徴量ベクトルを、多変量ガウス分布で近似します。これを正常データのデータ分布と見立てます。
  3. 推論したい画像を学習済みモデルに入力し、そこから抽出した特徴量ベクトルと、正常データの分布の距離をマハラノビス距離で計算します。
  4. 距離が一定以上離れているものを異常と判別します。

前二つが学習、後二つが推論フェーズとも言えますが、今回は事前学習済みのモデルを利用しているので、学習ではなく推論した特徴量を分布に近似することにより正常データの分布を出しています。既存の学習済みモデルを転用して、正常データの特徴量を抽出することが前述のとおり、本論文の一番のポイントとなります。

この論文の面白さ

学習済みモデルを活用するアプローチ自体は、転移学習をはじめ他の画像認識分野でもよく登場するようになり、目新しくはないですが、個人的には、他の研究に活かせそうという観点で面白い点は三つあると思います。筆者の主張とともに、個人の意見も交えてお伝えします。

一つ目は、異常検知の際に一切データベース固有の学習を行っていないこと

提案手法の流れを見てわかる通り、今回の異常検知は異常検知したいデータセットを使って学習をしていません。あくまで、学習済みのモデルにデータを入力して推論して得られた結果を分布に近似しているだけです。学習をしないシンプルな手法であるため、計算コストが低く、計算時間も早いので、かなり魅力的な手法といえます。

二つ目は、異常検知での識別に利用される特徴量は、正常クラス内では大きな違いがないという示唆

初めて読んだとき、学習済みモデルで得られる特徴量同士の差の比較において正常データ内でのクラスを分別するような特徴量の差が、正常と異常の差を上回るのではないかと思いました。というのも、学習済みモデルはImageNetなどで、クラスの分類性能を高める学習をしているため、正常データに利用した時でも、正常データ内でクラス分類すように特徴量を抽出するが、異常データとの差は学習で考慮されていないと思ったためです。特に、異常検知のデータベースの中でも、正常データ内でも複数クラスがあるときは起こりうる現象だと考えました。

しかし、これは杞憂みたいです。筆者は、なぜ事前学習モデルで抽出した特徴量が有効であることについて検証しています。

異常検知での識別に利用される特徴量は、正常クラス内では大きな違いがない

という仮説を、筆者らはPCAを利用して検証しています。具体的には、成分の分散の大小によって精度がどう変化するかを実験しました。その結果、異常検知で最も活用されているのは、正常データの中でも、分散の小さい主成分であることが分かりました。

先ほどの懸念はちょっと方向性が違いますが、正常データ内でクラス間の差による分散が大きいであろう特徴量よりも、分散の小さい特徴量のみが異常検知に効いているから関係がないという理由で解決できそうです。そもそも疑問が的外れだったら、ぜひ教えてください。

なお、筆者はこの実験結果から、正常データをゼロから学習することが有効でない理由付けにも利用しています。事前学習を用いず、スクラッチから学習するだけでは、判別性が高い分散が小さい成分を学習しづらいと示唆しています。

モデル近似の数学的背景

この章では学習の各ステップにおける数学的背景について述べる。学習時におけるデータのモデル手法に加え、推論時の指標に用いられる計算方法や、閾値の設定に用いられる提案手法を紹介します。

正常データのモデル化とパラメータ推定

正常データのモデル化の方法を一言でいえば、学習済みモデルで得られた特徴量が異常検知のタスクに転用できると仮定したうえで、正常クラスの確率密度関数を学習済みモデルで得られた特徴量で近似することです。これは徐々に新しいデータ・クラスを追加して学習を行うclass-incremental learningの手法ともいえます。提案手法に利用される数学的背景は以下です。

  • 提案手法では、学習済みモデルで抽出した特徴量ベクトルxは多変量ガウス分布(MVG)に従うと仮定します。多変量ガウス分布は以下の式で定義され、Dは次元数、μは平均ベクトル、Σは正定値共分散行列を表します。
  • なお、異常検知であるため、実正常データの共分散行列Σは不明である。そのため、統計でよく行われるパラメータ推定を行い、Σの推定値を常識には用います。観測データx1,..,xnにおいて標本の共分散行列は以下で表すことができる。ただし、は標本平均ベクトル、nは標本サイズを表す。

  • 特徴量ベクトルの次元数Dが標本サイズnより十分小さい場合は上記の推定量を多変量ガウス分布の式に代入することが可能です。ただし、D/nが十分に小さくない場合は、共分散行列の推定結果が不安定になり、さらにDがnより十分大きい場合は共分散行列が特異となり、逆行列の計算ができないです。この問題に対し、提案手法ではLedoit,WolfらによるShrinkage法を利用して回避しています。Shrinkage法は経験に基づいた共分散行列の推定値に、標準化した単位行列Iを加えたものを新しい共分散行列の推定量として定義しています。この時、重みづけパラメータのρはどこまでバイアスと変動のトレードオフの量を定めています。バイアスされていない変動が高く、経験量が高い推定量か、高バイアスで変動しない単位行列の値を利用するかのバランスをとりもつのがρです。なお、shrunk後の推定量と元の推定量の二乗誤差を最小化することでρの最適値が計算できるとLedoit,Wolfが提案しています。

異常値の判定手法

提案手法での異常値の判定は、分布との距離が一定以上のものを異常として判定する一般的な手法であり、この時に利用する尺度はマハラノビス距離です。

  • マハラノビス距離はある点(ベクトル量)xと平均がμ、共分散がΣのガウス分布の距離を表し、以下の式で定義されます。マハラノビス距離はデータの相関を考慮し、尺度水準によらない点において、統計的には、標本の不確かさをの計算に用いられやすい。また、異常検知の文脈でも分布から離れた異常値測定にも利用されやすい距離の一種です。

異常値を分布との距離が一定以上のものとする際の一定以上という閾値を、一般的には人間が経験的に判断することが多いが、本研究では閾値を計算的に導出することを提案します。まずは利用される数学的背景を紹介します。

  • xが多変量ガウス分布に従う場合、M(x)2 は自由度がDのカイ二乗分布に従うことが知られています。なお、自由度がkのカイ二乗分布はそれぞれ独立の標準正規分布に従うk個の確率変数の二乗和である。カイ二乗分布の確率密度関数は下式の通りであり、Γ(s)はガンマ関数と呼ばれ、s>0です。

  

  • カイ二乗分布の累積分布関数は以下で表せ、γ(s,x)は不完全ガンマ関数です。

これらの性質を基に、筆者は閾値の計算方法を提案しています。ここでは、あるマハラノビス距離がカイ二乗分布で正常データを得る確率pに一致するとき、これこそが真陰性率(TNR)に値するということを利用しています。同様に、1-pは偽陽性率(FPR)に一致すると考えます。これは、上記のマハラノビス距離がカイ二乗分布に従うことを利用した考えです。

  • この考え方により、許容できるFPRの値とカイ二乗分布の累積分布関数を用いて計算した点tを閾値と設定しています。このtの計算は、カイ二乗分布の性質から計算します。tは以下の式を満たし、

  • これを基に、tは下記になります。ここのFD(x)は前述の累積分布関数である。

この閾値tと異常判定したい画像の特徴量ベクトルとのマハラノビス距離を比較することで、異常かどうかを判定します。 

実験結果と考察

実験では、事前学習モデルに、執筆時のImageNetの画像識別のSOTAであったEfficientNetと比較に用いられやすいResNetを利用している。

各パラメータや手法が妥当かの実験を下記の通り行っている

  1. 特徴量の抽出層の選定の評価
  2. 仮定する分布、異常度の距離計算手法の評価
  3. 事前学習モデルの比較
  4. EfficientNetのスケールの違いの評価
  5. 閾値の妥当性の評価

これら手法の妥当性の他には、既存異常検知手法と比較した上での性能評価と、手法が機能する理由への考察をも行っている.後者は前述のこの論文の面白さの章にて取り上げており、本章では他異常検知手法と比較した性能実験とその評価について確認する。

既存異常検知手法と比較した上での性能評価

本論文ではMVTec ADデータセットでSOTAの手法を含め、複数の異常検知アルゴリズムと比較した。具体的には、畳み込みAEを用いたsemi-supervised 再構成手法、教師ありのAD分類器、EfficientNetで事前学習済みの特徴量を利用したoc-SVM、そしてMVTecの論文で提案されている現時点でSOTAの提案手法らと比較を行っている。教師ありの分類器は実際にはラベルのない異常検知では現実的には利用できないが、異常検知が出しうる上限としてベンチマークしている。

これら各手法と比較した結果が以下である。ここからわかるように、事前学習済みの特徴量に多変量ガウス分布で推定した提案手法が次に性能がいい手法であるSPADEより10%高い平均AUROCが達成できることが分かった。特筆すべき点として、SPADEでさえも事前学習済みの特徴量をk-NNとL2 Lossで利用していることからも、事前学習済みの特徴量の有用性が分かる。さらに、Fine-tuneした事前学習済み教師あり分類器を、性能の上限としてのベンチマークと比較しても遜色ない結果となっていることが分かる。ちなみに、教師あり分類器には、特にテクスチャー(薬、ねじ)のカテゴリーで性能が負けているとのことである。

また、ここで用いられるNPCAとは、手法が機能する理由を検証する際に使ったPCA分析の結果を利用している。具体的には、特徴量の主成分の中でも、分散が最も少ないものを残したものを利用したのをnegated PCA(NPCA)としている。これを利用した結果手法のロバスト性を少し高めることで、AUROC値が上がり、SEM値が下がっている。 

まとめ

著者は学習済みモデルを異常検知に活用することで、通常の教師あり学習にも匹敵する程度の性能を達成している。また、通常の異常検知の手法である、正常のみから学習することにアンチテーゼを唱え、むしろ通常の教師あり学習をいかに転用するかを考えるべきと、主張している。そのためには、特徴量の一般性を高めること、転移した特徴量をいかに少ないデータでfine-tuneするか、マルチモーダルなデータ分布でどう活用するか、についてより研究を深めたいと締めている。

このアプローチがより研究されることで、常に発展している画像認識手法を異常検知にも有効活用できるようになる期待値が高い手法かもしれません。

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする