One-Shot Learning
AIにおけるワンショット学習を確認します。Ultralytics YOLO26とシャムネットワークを使用し、1枚の画像から物体を分類して効率的なコンピュータービジョンを実現する方法を学びます。
ワンショット学習は、単一のトレーニング例から物体カテゴリに関する情報を学習するよう設計された、機械学習(ML)における特殊な分類手法です。効果的に汎化するには、注釈付き画像を何千枚も含む膨大なデータセットを必要とする従来のディープラーニング(DL)アルゴリズムとは異なり、ワンショット学習は新しい概念を瞬時に把握する人間の認知能力を模倣します。たとえば、人は通常、特定の珍しい鳥を一度見ただけで認識できますが、この手法はその効率性を人工知能(AI)システムで再現することを目指します。データラベリングにコストがかかる場合、データが不足している場合、またはモデル全体を再トレーニングせずに新しいカテゴリを動的に追加する必要がある場合に、特に有用です。
概念の背後にあるメカニズム#
ワンショット学習の基本原理は、目的を標準的な分類から類似性の評価へと移行することです。特定のクラスラベル(例:「dog」や「cat」)を出力するようニューラルネットワーク(NN)をトレーニングする代わりに、モデルは距離関数を学習します。これによく使用されるアーキテクチャがシャムニューラルネットワークで、同じモデルの重みを共有する2つの同一のサブネットワークで構成されます。
動作中、ネットワークは特徴抽出を実行し、入力画像を埋め込みと呼ばれるコンパクトな数値ベクトルに変換します。次にシステムは、新しいクエリ画像の埋め込みと、単一の参照「ショット」の埋め込みを比較します。数学的距離(多くの場合、ユークリッド距離またはコサイン類似度を使用して計算)が特定のしきい値を下回る場合、画像は同じクラスに属すると判定されます。これにより、学習した特徴空間内での近さに基づいて、モデルがアイデンティティを検証したり物体を分類したりできます。
次のPythonコードは、ultralyticsパッケージのYOLO26分類モデルを使用して、埋め込みを抽出し、類似度を計算する方法を示します。
import numpy as np
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model for feature extraction
model = YOLO("yolo26n-cls.pt")
# Extract embeddings for a reference 'shot' and a query image
# The embed() method returns the feature vector directly
shot_vec = model.embed("reference_img.jpg")[0]
query_vec = model.embed("query_img.jpg")[0]
# Calculate similarity (higher dot product implies greater similarity)
similarity = np.dot(shot_vec, query_vec) / (np.linalg.norm(shot_vec) * np.linalg.norm(query_vec))
print(f"Similarity Score: {similarity:.4f}")関連するパラダイムとの違い#
ワンショット学習は、異なる制約によって同様の問題を解決する他のデータ効率の高い学習手法と区別することが重要です。
- 少数ショット学習(FSL): これはワンショット学習を含む、より広いカテゴリです。FSLでは、通常、クラスごとに2~5枚の画像からなる小規模な「サポートセット」がモデルに与えられます。ワンショット学習は、サポートセットのサイズがちょうど1である極端なケースに当たります。
- ゼロショット学習(ZSL): ZSLは、モデルが視覚的に一度も見たことのないカテゴリの認識を扱います。ZSLは参照画像の代わりに、自然言語処理(NLP)を介して、意味属性やテキスト説明(例:「縞模様の馬」というテキスト説明と視覚的特徴を関連付けて「シマウマ」を識別する)に依存します。
- 転移学習: これは、ImageNetのような大規模データベースで事前トレーニングされたモデルを、新しいタスク向けにファインチューニングする手法です。転移学習はワンショット学習で使用される特徴抽出器を支えますが、標準的な転移学習では通常、過学習を起こさずに重みを効果的に更新するため、1つより多くの例が必要です。
実世界での利用例#
ワンショット学習は、大量のトレーニングデータを収集することが現実的でない分野で、さまざまな機能を実現してきました。
顔認識とセキュリティ#
ワンショット学習の最も一般的な用途は、生体認証セキュリティです。スマートフォンでFace IDを設定したり、従業員アクセスシステムに登録したりする際、デバイスはユーザーの顔の数学的表現を1つだけ取得します。日常の利用中、顔認識システムは、ライブカメラ映像と保存されたこの「ワンショット」を比較して本人確認を行います。これは、基礎となるFaceNetの研究で論じられているような堅牢な埋め込み手法に依存しており、照明や角度の変化によって類似度マッチングが機能しなくなることを防ぎます。
産業品質管理#
製造業におけるAIでは、不良品はまれで一貫性がないため、「欠陥のある」部品のバランスの取れたデータセットを作成することが困難です。ワンショット学習により、コンピュータービジョン(CV)システムは、単一の「完全な」基準部品の表現を学習できます。組立ライン上で、この基準から大きく離れた埋め込みを生成する品目は、異常検知の対象としてフラグ付けされます。これにより、破損部品の画像を何千枚も必要とせずに、即時の品質保証が可能になります。これはUltralytics Platformを通じて管理およびデプロイできます。
課題と今後の展望#
強力である一方、ワンショット学習はノイズの影響を受けやすく、単一の参照画像がぼやけていたり、遮られていたり、代表性に欠けていたりすると、そのクラスを認識するモデルの能力が大幅に低下します。研究者は、モデルの安定性と汎化性能を向上させるために、メタラーニング、つまり「学習する方法を学ぶ」手法をよく使用します。アーキテクチャの進化に伴い、YOLO26のような新しいモデルは、より堅牢な特徴抽出器を取り入れており、ワンショット推論をより高速かつ正確にしています。これにより、より適応性と知能に優れたエッジAIデバイスへの道が開かれています。









