2020年10月5日
ディープラーニングによる異常検知
金銅 亮弥 主任
こんにちは、新規事業推進センターの金銅(こんどう)です。つい最近Python 3 エンジニア認定データ分析試験に合格しました。
先日、社内で「ディープラーニングによる異常検知」というタイトルの講習会を行いました。今回はその内容を抜粋してご紹介します。
異常検知とは
「製品の画像からキズや汚れなどの不良品を検知したい」といったニーズは多いかと思います。例えば、付箋の製造ラインで下記のような不良が出るとしましょう。このとき「正常以外の折り目、破れ、汚れのあるものを検知したい」とします。
「正常」とそれ以外の「異常」を判別する
ディープラーニングでポピュラーな手法として、画像認識や物体検出などが挙げられます。これらの手法は各種フレームワークで簡単にモデルをロードできたり、ともすればクラウドで学習や最適化まで自動でできたり、誰でも簡単にできるようになりました。今回の付箋のケースでは
- 「正常」「異常」のラベルに分類する
- 折り目や破れ、汚れの位置を検出する
といったアプローチが考えられそうです。
ですが、画像認識や物体検出ではうまくいかないことがあります。その原因の一つは、一般に「異常データは少ない」ということです。不良品の画像を集めるためには不良品を作らなければいけません。しかし、通常の製造ラインでは不良品はめったに出ません。例えば「不良品は半年か1年に1回程度しか起きない」というようなこともあり、そもそも「不良品データが一切ない」ということも想定されます。一般的なモデルでは各カテゴリのデータがおおよそ均等に存在することが前提になっているので、データ数に大きな偏りがあると性能を発揮できません。
そこで正常データが大多数を占めるデータセットからパターンを学習して、異常なものを判別するディープラーニングモデルが研究されています。現在研究されているモデルはおおまかに二つのカテゴリに分けられます。一つが「生成モデル」を使う方法で、もう一つが「距離学習」と呼ばれる手法です。
生成モデル
生成モデルとは画像などのサンプルを出力とするモデルです。生成モデルをうまく用いると異常検知に使うことができます。
原理としては「正常データだけで学習したモデルは異常データをうまく復元できない」ことを使います。正常データのみで学習した生成モデルは、正常なデータは復元できますが、異常なデータはうまく復元できません。異常なデータに対しては元のサンプルと生成物の差分が大きくなるので、それを異常度スコアとすることができます。
生成モデルの最大のメリットは、異常箇所の可視化が可能であるということです。入力と出力でピクセルごとの差を取ることで、差が大きくなったところが異常箇所であると判断できます。
オートエンコーダ
オートエンコーダは生成モデルの中でもっとも簡単なモデルです。画像を次元の小さな中間表現に圧縮し、その中間表現から元の画像に復元します。
モデル | 特徴 | 論文 |
---|---|---|
オートエンコーダ | ベーシックなモデル。チュートリアルも豊富。 | https://science.sciencemag.org/content/313/5786/504 |
VAE(Variational AutoEncoder) | 中間層に確率的な解釈やランダムサンプリングを導入。 | https://arxiv.org/abs/1312.6114 |
GAN
GANは2014年に発表された生成モデルです。GAN自体は乱数から画像を生成するのでそのままでは異常検知に使えません。ですが異常検知モデルにGANのアイデアを取り入れたものが出てきています。
モデル | 特徴 | 論文 |
---|---|---|
AnoGAN | GANベース異常検知の初期のモデル。推論フェーズでもサンプルごとに学習が必要なため、計算コストが高く時間もかかる。 | https://arxiv.org/abs/1703.05921 |
ALOCC | 生成器をオートエンコーダにしたモデル。学習も安定しており速度も速い。 | https://arxiv.org/abs/1802.09088 |
DAGAN | 生成器に加えて判別器もオートエンコーダにしたモデル。複雑な特徴をとらえられるがモデルが大きい。 | https://www.mdpi.com/1424-8220/20/12/3336 |
DAGANについては実装が公開されていませんが、NTTデータSBCでは論文よりスクラッチ実装した実績があります。
距離学習モデル
距離学習とは、文字通り距離を学習する手法です。元々は顔認識のために開発されました。ここでいう「距離」とは数学の少し抽象的な概念ですが、「サンプル同士の類似度」のようなものです。
画像認識モデルでは、Conv層などを含む特徴抽出器で特徴量ベクトルを抽出しています。この特徴量ベクトルを「似ているサンプル間では距離が小さく、似ていないサンプル間では距離が大きくなる」ように学習させる手法が距離学習です。
距離学習のメリットの一つは転移学習が可能であることです。画像認識モデルはMobileNetやEfficientNetなどの学習済みモデルが公開されていますが、その特徴抽出器を使うことができます。
さらに、生成モデルでは学習に異常データを使いませんが、距離学習では少数でも異常データがあれば学習に使って性能を上げることができます。この手法を半教師あり学習といいます。
Loss関数タイプ
Loss関数を独自のものにする手法です。複数のサンプルを比較してLoss関数の計算に使います。性能は高いものの、原理的に異常データが必要であるというデメリットがあります。
手法 | 特徴 | 論文URL |
---|---|---|
Siamese Network | Loss関数タイプで最初期のもの。Contrastive LossというLoss関数を使う。 | (書籍) |
Triplet Loss | Contrastive Lossの発展形。3つのサンプルを比較する。 | https://arxiv.org/abs/1412.6622 |
書籍:Bromley, Jane, Bentz, James W, Bottou, L éon, Guyon, Isabelle, LeCun, Yann, Moore, Cliff,S äckinger, Eduard, and Shah, Roopak. Signature verification using a siamese time delay neuralnetwork.International Journal of Pattern Recognition and Artificial Intelligence, 7(04):669–688,19
独自レイヤー(Angular Softmax)タイプ
独自レイヤーを使うタイプです。通常の全結合層に角度の解釈を入れて、サンプルがうまく分離するようにします。
手法 | 特徴 | 論文URL |
---|---|---|
SphereFace | Angular Softmaxやカテゴリ間のマージンを導入した手法。 | https://arxiv.org/abs/1704.08063 |
CosFace | SphereFaceとは異なるマージンの入れ方をする手法。 | https://arxiv.org/abs/1801.09414 |
ArcFace | マージンを改良して同じカテゴリのサンプルがより密集するようにした手法。 | https://arxiv.org/abs/1801.07698 |
AdaCos | ArcFaceの発展形。異常データが必要ですがハイパーパラメータを自動で最適化できます。 | https://arxiv.org/abs/1905.00292 |
まとめ
今回は異常検知がどのようなケースで使えるか、その研究の二つのトレンドである生成モデルと距離学習についてご紹介しました。ディープラーニングは一般社会に普及しつつある現在も熱い分野であり、これからもより高性能なモデルが出てくると期待されます。
NTTデータSBCではIoTプラットフォーム「SBConnect」を手掛けており、センサーの設置などデータを集める段階から、データ可視化、異常検知を含む機械学習モデルの構築までを自社で実装することができます。機械学習の最新手法についてもキャッチアップし、ラインナップに追加していく予定です。