Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Autoencoder

オートエンコーダーは、ラベルを使わずにデータをコンパクトなコードへ圧縮し、再構成する方法を学習します。構造、バリエーション、異常検知、コードを解説します。

オートエンコーダーは、入力を再現するように学習するニューラルネットワークです。エンコーダーが入力をコンパクトなコード(潜在表現とも呼ばれます)に変換し、デコーダーがそのコードから再構成を生成します。学習では、入力と再構成の差を最小化します。目標が入力そのものであるため、オートエンコーダーはラベルなしデータから学習します。これは教師なし学習の一種で、現在では通常、自己教師あり学習に分類されます。ネットワークが入力をそのまま通過させてコピーすることを防ぐ制約(狭いボトルネック、ノイズの追加、入力のマスキング、スパース性ペナルティなど)によって、データを圧縮可能にする構造の学習が促されます。オートエンコーダーは、次元削減、異常検知、ノイズ除去、事前学習、および最新の画像生成モデルの圧縮段階に使われます。

オートエンコーダーの仕組み#

エンコーダーfは入力xをコードz = f(x)に写像し、デコーダーgはzから再構成x̂ = g(z)を生成します。学習では、xとx̂の平均二乗誤差などの再構成損失を逆伝播によって最小化します。次元削減型オートエンコーダーでは、zの次元数はxよりも大幅に少なくなります。そのため、コードはデコーダーが必要とする情報だけを保持した潜在空間の要約になります。二乗誤差で学習した線形オートエンコーダーは、主成分分析(PCA)と同じ部分空間を学習します。この結果は1989年にPierre BaldiとKurt Hornikが証明しました。また、非線形な活性化関数によって、より深いオートエンコーダーはPCAでは捉えられない曲線的な構造を捉えられます。Geoffrey HintonとRuslan Salakhutdinovは、2006年のScience論文で、深層オートエンコーダーが画像や文書に対してPCAよりもはるかに優れた低次元コードを生成することを示しました。

狭いボトルネックに依存しない派生手法では、代わりに入力を破損させ、クリーンな元データに対する再構成を評価します。

オートエンコーダーの種類#

  • デノイジング: 入力にノイズを加え、2008年にPascal Vincentらが説明したように、ネットワークが元のクリーンなデータを復元するように学習させます。学習された特徴は破損に対してロバストであり、学習済みモデルはノイズの多い画像や信号をクリーンアップできます。
  • スパース: 入力より多くのコード単位を使いますが、同時にアクティブになる単位数をペナルティとして抑制します。スパースオートエンコーダーを大規模言語モデル (LLMs)の内部活性化で学習すると、多数の特徴に分解され、それぞれが解釈可能な概念に対応する傾向があります。
  • 変分 (VAE): エンコーダーはコードの確率分布を出力し、KLダイバージェンスのペナルティによって標準正規分布に近づけます。そのため、ランダムにサンプリングしたコードをデコードすると、新しいデータが生成されます。Diederik KingmaとMax Wellingは2013年にVAEを発表しました。
  • ベクトル量子化 (VQ-VAE): ベクトル量子化を通じて、各コードベクトルを学習済みコードブック内の最も近いエントリに対応させます。これにより、画像や音声が離散トークンに変換され、自己回帰モデルで生成できるようになります。
  • マスク: 入力の大部分を隠し、欠損部分を再構成します。マスク付きオートエンコーダー (MAE)は画像パッチの75%を隠し、この方法で学習したエンコーダーは、他のビジョンタスク向けの強力なバックボーンになります。Ultralyticsパッケージで実行できるMetaのSegment Anything Model (SAM)は、MAEで事前学習したVision Transformerを画像エンコーダーに採用し、SAM 2はMAEで事前学習したHieraエンコーダーを採用しています。そのため、プロンプトで指定可能なすべてのマスクを支える特徴は、まず隠されたパッチを補完することで学習されています。

再構成誤差による異常検知#

正常データのみで学習したオートエンコーダーは、正常な入力を適切に再構成し、未知の入力はうまく再構成できません。そのため、再構成誤差を製造上の欠陥、不正取引、または故障しつつある機械の異常スコアとして利用でき、異常のラベル付けは必要ありません。以下のPyTorchのコード例では、scikit-learnに同梱されている手書き数字データセットを使って小規模なオートエンコーダーを学習します。ただし、すべての7を除外し、保留した数字と7に対する誤差を比較します。

import torch
from sklearn.datasets import load_digits
from torch import nn

# 8x8 handwritten digits scaled to [0, 1]; every 7 is held out as the unseen anomaly
digits = load_digits()
x = torch.tensor(digits.data / 16, dtype=torch.float32)
normal, sevens = x[digits.target != 7], x[digits.target == 7]
train, test = normal[:1200], normal[1200:]

# Encoder: 64 pixels to an 8-number code; decoder: code back to 64 pixels
torch.manual_seed(0)
encoder = nn.Sequential(nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, 8))
decoder = nn.Sequential(nn.Linear(8, 32), nn.ReLU(), nn.Linear(32, 64), nn.Sigmoid())
model = nn.Sequential(encoder, decoder)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
for step in range(1000):
    optimizer.zero_grad()
    nn.functional.mse_loss(model(train), train).backward()  # reconstruction error
    optimizer.step()

with torch.no_grad():
    for name, data in [("Held-out digits", test), ("Unseen 7s", sevens)]:
        print(f"{name}: reconstruction error {nn.functional.mse_loss(model(data), data):.4f}")

保留した数字では0.0163、7では0.0547の再構成誤差が出力されます。7の誤差は平均で3.4倍高く、各画像の誤差にしきい値を設定すると、この差を異常フラグに変換できます。オートエンコーダーは汎化しすぎて一部の異常も正確に再構成する場合があるため、実用システムでは、既知の異常を含む検証データを使ってボトルネックのサイズとしきい値を調整します。

  • 敵対的生成ネットワーク (GANs): GANのジェネレーターはランダムノイズをデータに変換し、ディスクリミネーターから学習します。エンコーダーも再構成対象もありません。VAEもデータを生成しますが、尤度ベースの目的関数によって学習はより安定する一方、画像がぼやける傾向があります。
  • U-Net: エンコーダー・デコーダー構造を共有しますが、入力をセグメンテーションマスクなどの異なる対象に変換します。また、ボトルネックを迂回するスキップ接続を使います。オートエンコーダーで使うと、ネットワークが入力をそのままコピーできてしまいます。
  • 対照学習: サンプル同士を比較して表現を学習するため、画像間の違いを捉える特徴を学びます。一方、再構成損失で保持する必要があるピクセル単位の詳細は無視します。
  • 埋め込み: エンコーダーが生成するコードは埋め込みの一種であり、オートエンコーダーは埋め込みを学習する複数の方法の一つです。

画像生成におけるオートエンコーダー#

Stable Diffusionなどの潜在拡散モデルは、オートエンコーダーの潜在空間内で拡散処理を実行し、最後に結果をデコードしてピクセルに戻します。Stable Diffusion 1.xは、512×512のRGB画像を64×64×4の潜在表現に圧縮するKL正則化オートエンコーダーを使用します。これは、拡散モデルが各デノイジングステップで処理する値の数を48分の1にします。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう