ふくふくHukuhuku Inc.
EP.06Anomaly 10分公開: 2026-05-10

オートエンコーダによる異常検知:再構成誤差で異常を見抜く

深層学習で「正常データを圧縮 → 復元」を学習。異常データは復元できず、誤差が大きくなる。画像・時系列・ログ全般に応用可。

#AutoEncoder#深層学習
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

深層学習による異常検知の定番、オートエンコーダ。「正常データを圧縮して復元する」モデルを学習し、復元誤差で異常を判定。

オートエンコーダの種類

手法向くデータ特徴
Vanilla AEシンプルな表形式実装最易、エントリーポイント
Denoising AEノイズの多いデータロバスト性が上がる
Variational AE (VAE)確率的な異常度が欲しい再構成誤差 + KL ダイバージェンス
LSTM-AE時系列・系列データRNN で時間依存性を学習
Transformer-AE長期依存・複雑系列近年定石、最高精度

実装:PyTorch

シンプルな AutoEncoder
Python
import torchimport torch.nn as nn
class AE(nn.Module):    def __init__(self, input_dim, latent_dim=8):        super().__init__()        self.encoder = nn.Sequential(            nn.Linear(input_dim, 32), nn.ReLU(),            nn.Linear(32, latent_dim), nn.ReLU(),        )        self.decoder = nn.Sequential(            nn.Linear(latent_dim, 32), nn.ReLU(),            nn.Linear(32, input_dim),        )    def forward(self, x):        return self.decoder(self.encoder(x))
# 学習model = AE(input_dim=10)optimizer = torch.optim.Adam(model.parameters())criterion = nn.MSELoss()for epoch in range(100):    optimizer.zero_grad()    out = model(X_normal)    loss = criterion(out, X_normal)    loss.backward(); optimizer.step()
# 異常検知(再構成誤差)with torch.no_grad():    reconstructed = model(X_test)    errors = ((X_test - reconstructed) ** 2).mean(dim=1)    anomalies = X_test[errors > threshold]

オーバーフィットの罠

「異常も学習してしまう」

学習データに異常が混入していると、AE はそれも学習して異常を異常と判定できなくなる学習前に既知の異常を除外するか、robust loss(Huber 等)を使う。

ふくふくの進め方

深層学習ベースの異常検知は精度高いが運用コスト高。ふくふくでは、まず古典手法で動かし、必要なら AE へ段階導入を推奨します。

次回予告

EP.07 はストリーミング異常検知:リアルタイム検知のアーキテクチャ。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp