異常検知を1から — 正常だけから学ぶという発想
不良品がほとんど手に入らない製造現場で、なぜ「正常だけ」からAIが学べるのか。再構成誤差と密度推定という2つの物差しを比喩から式まで積み上げ、実務の核心である閾値の決め方まで解説する。
不良品は、集められない
画像を「犬か猫か」に分けるAIは、犬の写真と猫の写真を大量に見せて訓練します。では工場の検査ラインで「良品か不良品か」を分けたいとき、同じやり方は使えるでしょうか。
ここに製造業ならではの壁があります。まともな工場ほど、不良品がほとんど出ないのです。不良率が0.1%なら、不良画像を1,000枚集めるには100万個を生産して、その全部に人が正解ラベルを付けなければなりません。しかも欠陥は多様です。傷、欠け、異物、変色、印字ズレ——さらに厄介なことに、まだ誰も見たことのない壊れ方が明日発生するかもしれません。「不良の全パターンを事前に集めて教える」という前提が、そもそも成立しないのです。
そこで発想を裏返します。不良を定義するのはやめて、正常だけを徹底的に学ぶ。そして「学んだ正常から外れたもの」をすべて疑う。 これが異常検知(anomaly detection)、特に正常データのみで学習する枠組みの核心です。
比喩: 本物だけを見続ける鑑定士
紙幣の鑑定士は、偽札のカタログを暗記して育つわけではありません。修行の中心は本物を延々と触り続けることだと言われます。本物の手触り、印刷の癖、インクの盛り——「正常」が体に染み込むと、初めて見るタイプの偽札でも「何かがおかしい」と手が止まる。
正常だけから学ぶ異常検知は、まさにこの鑑定士を機械で作る試みです。ポイントは、異常を列挙するのではなく、正常の輪郭を精密に描くこと。輪郭さえ描ければ、そこから外れたものは——それがどんな新種の異常であっても——検出できます。
直感: 「正常らしさ」を測る2つの物差し
「正常から外れている」を数値にする方法は、大きく2系統あります。
物差し1: 再構成(reconstruction)。 正常品だけを上手に「写せる」不完全なコピー機を作ります。正常品を入れれば綺麗な複製が出てくるのに、異常品を入れると——コピー機は異常の写し方を知らないので——写し損ねます。原本と複製の差が大きいほど怪しい、と判定します。
物差し2: 密度(density)。 正常品の画像(の特徴)を地図上の点として大量に打ち、「正常が溜まっている場所」の地図を作ります。新しい点がその密集地帯に落ちれば正常、誰もいない過疎地に落ちれば異常。仲間の近くにいるかで測る発想です。
どちらも「異常とは何か」を一切定義していないことに注目してください。定義しているのは正常だけです。順番に中身を見ていきます。
物差し1: 再構成誤差 — わざと不完全なコピー機
再構成方式の主役はオートエンコーダ(autoencoder)です。画像を一度ぎゅっと小さな情報(例: 数百次元のベクトル)に圧縮するエンコーダと、そこから元の画像を復元するデコーダを、正常画像だけで訓練します。画像を扱うので、中身は畳み込み(CNN)でできています。
要は「圧縮→復元」なので、身近な例で振る舞いを体感できます。JPEGも同じく圧縮→復元ですが、丸めを強くすると復元しきれなかった部分が残差として現れます。
異常スコアは、原本と復元の差そのものです。
つまり、「コピー機に写させてみて、出てきた複製が原本からどれだけズレたかを測る」と言っているだけの式です。どこにも「不良とは何か」は書かれていません。書いてあるのは写し損ね具合だけです。
式(1)の意味はこうです。 が入力画像、 がエンコーダ(圧縮)、 がデコーダ(復元)で、 は「一度圧縮してから復元した画像」。それを元の から引いた差の大きさ(各画素の差を2乗して足したもの)が、異常スコア です。上手く写せた=正常らしい、写し損ねた=異常らしい、それだけの式です。
なぜ異常を写し損ねるのか。鍵は途中のボトルネック(圧縮の細さ)です。数万画素の画像を数百次元まで潰すには、デコーダは「正常品によく出る部品」の語彙——この製品ならこの位置にこのネジ、この質感の表面——だけで画像を組み立てるしかありません。訓練中に一度も見ていない傷や異物は語彙にないので、復元画像ではそこだけ「正常だったらこうなっていたはず」の姿に置き換わります。差分を取れば、異常の場所が浮かび上がる。どこが異常かという位置情報まで手に入るのが、この方式の実用上の強みです。
コメント
コメントにはログインが必要です