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

Contrastive Learning

対照学習では、一致するペアを近づけ、それ以外のサンプルを遠ざけるように埋め込みを学習します。InfoNCE、SimCLR、MoCo、CLIP、コードを解説します。

対照学習では、対応するサンプルのペア(正例)が近く、対応しないサンプルのペア(負例)が遠くなるような埋め込みをモデルに生成させます。ペアは、同じ写真の異なる拡張クロップなどのデータ自体から作ることも、画像とそのキャプションなど、自然にペアになっているデータから作ることもできます。そのため、対照学習にはクラスラベルは必要ありません。マスク再構成や自己蒸留と並ぶ、画像向け自己教師あり学習手法の主な系統の1つです。この方法で学習されたエンコーダーは、検出、分類、検索に転用できる特徴を生成します。また、CLIPなどのビジョン・言語モデルも同じ目的関数で学習され、ゼロショット学習によってテキストだけで画像を分類できます。

対照学習の仕組み#

対照学習の手法は、正例ペアの作成方法、各サンプルを正規化された埋め込みに変換するエンコーダー、類似度を比較する損失関数の3つで構成されます。SimCLRでは、GoogleのTing Chenらがランダムなクロッピング、色の歪み、ぼかしを使って各画像から2つのビューを作成し、共有のResNetと小さな射影ヘッドで両方をエンコードしました。また、バッチ内の他の画像を負例として扱いました。

データ拡張によって、モデルが何を無視するよう学習するかが決まります。同じ画像の2つの切り抜きが近い位置にマッピングされる必要があるため、エンコーダーは位置、スケール、色の変化が画像の内容を変えないことを学び、他の画像と区別する特徴を保持します。標準的なResNet-50の4倍の幅を持つモデルでは、SimCLRの固定特徴を使って学習した線形分類器が、ImageNetで76.5%のtop-1正解率を達成し、教師あり学習のResNet-50に匹敵しました。

対照学習の損失関数#

  • ペアワイズ対照損失: Raia Hadsell、Sumit Chopra、Yann LeCunが2006年に提案した損失関数です。各正例ペアを近づけ、各負例ペアを、少なくともマージンmだけ離れるまで遠ざけます。
  • トリプレット損失: アンカー、正例、負例を比較し、正例がマージン分だけ近くなるよう求めます。GoogleのFaceNetは2015年にこの方法で顔の埋め込みを学習しました。
  • InfoNCE: 1つの正例を複数の負例と一度に比較します。類似度sを温度τで割った場合、アンカーに対する損失は−log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)]です。これは、すべての候補の中で正例を正解クラスとするsoftmax交差エントロピーです。Aaron van den Oordらは2018年に対照予測符号化でこの名称を付けました。SimCLRのNT-Xent損失とCLIPの損失も、その一種です。
  • シグモイド損失: SigLIPでは、シグモイドを使ってすべてのペアを独立した一致・不一致として評価するため、バッチ全体で正規化する必要がありません。

PyTorchでは、InfoNCEは対角線上に正例を持つ類似度行列に対する交差エントロピーとして表せます。

import torch
import torch.nn.functional as F

torch.manual_seed(0)
# Stand-in embeddings for 8 images, a second view of each (row i of both is a positive pair),
# and 8 unrelated images
view1 = F.normalize(torch.randn(8, 128), dim=1)
view2 = F.normalize(view1 + 0.1 * torch.randn(8, 128), dim=1)
unrelated = F.normalize(torch.randn(8, 128), dim=1)

# InfoNCE: cosine similarities divided by a temperature, then cross-entropy where
# each row's positive (the diagonal) is the correct class among all 8 candidates
temperature = 0.1
targets = torch.arange(8)
for name, keys in [("Augmented views", view2), ("Unrelated images", unrelated)]:
    logits = view1 @ keys.T / temperature
    print(f"{name}: loss {F.cross_entropy(logits, targets):.3f}")

出力はAugmented views: loss 0.016とUnrelated images: loss 2.505です。各行で正例が最も類似したキーであれば、損失は0に近づきます。無関係なキーの場合、損失はln 8 ≈ 2.08を上回ります。これは、温度0.1で割ると、偶然の類似度が確信度の高い誤答に変わるためです。ln 8は、8つの候補から一様に推測した場合の損失です。温度を下げるとsoftmaxが鋭くなり、損失は最も難しい負例に集中します。MoCoではτ = 0.07を使用し、CLIPでも学習可能な温度の初期値に同じ値を設定します。

負例、バッチサイズ、各種手法#

InfoNCEは負例が増えるほど性能が向上するため、負例の数が重要なコスト要因になります。SimCLRでは非常に大きなバッチから負例を取得しました。Facebook AI ResearchのKaiming Heらが開発したMoCoでは、最近のバッチから得た65,536個の埋め込みを負例としてキューに保持し、エンコーダーのモメンタム更新版でそれらをエンコードします。これにより、負例の数をバッチサイズから切り離せます。ランダムな負例には、同じ犬種の別の写真など、誤った負例が含まれることがあります。また、簡単すぎる負例からはあまり学習できないため、ハードネガティブマイニングでは混同しやすいサンプルを探します。教師あり対照学習(SupCon)では、ラベルを使い、同じクラスのすべてのサンプルを正例として扱います。BYOL、SimSiam、DINOなどの非対照学習手法では負例を完全に除き、非対称ネットワーク、勾配停止、または中心化によって、すべての入力が同じ埋め込みに崩壊するのを防ぎます。

  • メトリック学習: 距離関数を学習する、より広いタスクです。対照損失やトリプレット損失はこの分野から派生しました。現在、「対照学習」は通常、SimCLRやMoCoで広く知られるようになった、自己教師ありで複数の負例を使う形式を指します。
  • オートエンコーダー: 入力を再構成して学習するため、特徴にはピクセル単位の詳細が保たれる必要があります。対照学習の特徴は、あるサンプルを他のサンプルと区別する情報だけを保持します。
  • JEPA: 画像の可視領域から隠れた領域の埋め込みを予測し、負例ペアを使わずに埋め込み空間で学習します。
  • 教師あり学習: 人間が割り当てた固定のクラス集合に向けて学習します。一方、対照事前学習で必要なのは、どのサンプル同士が一致するかを決めるルールだけです。

用途#

  • ビジョン・言語モデル: CLIPは、バッチサイズ32,768で4億組の画像とキャプションを使い、画像エンコーダーとテキストエンコーダーを学習しました。そのため、テキストプロンプトを使って画像を分類・検索できます。UltralyticsのYOLOE-26モデルは、CLIP形式の対照目的関数で学習したAppleのMobileCLIP2テキストエンコーダーを使ってクラス名をエンコードし、対照ヘッドで各候補領域をそのテキスト埋め込みと照合します。そのため、set_classes(["forklift", "pallet"])を使うと、同じ重みを新しいカテゴリに対応する検出器にできます。
  • セマンティック検索: 画像とテキストの対照学習済み埋め込みをベクトルデータベースに保存し、類似度に基づいて検索します。
  • ラベルが少ない場合の事前学習: 医用画像解析のように専門家によるラベルが限られる分野では、ラベルのないスキャン画像で対照事前学習を行うことで、少数のラベル付きデータを使ったファインチューニングで適応できるバックボーンを得られます。
  • 顔認識と再識別: 対照損失やトリプレット損失を使って、同じ人物や物体の写真が近くに配置される埋め込みを学習します。FaceNetの128次元埋め込みは、Labeled Faces in the Wildベンチマークで99.63%の正解率を達成しました。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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