【たいしょうがくしゅう】

対照学習(Contrastive Learning) とは?

💡 「似てる」と「違う」を比べて、データの本質を見抜く学習法
📌 このページのポイント
対照学習(Contrastive Learning)の仕組み 元画像 (猫) 拡張 回転した 色変換 した猫 エンコーダ エンコーダ 特徴空間 v1 v2 正例ペア: 同じ画像の別ビュー → 近づける 負例: 異なる画像 → 遠ざける 損失関数: InfoNCE(NT-Xent) 代表的手法 SimCLR MoCo CLIP DINO
対照学習の仕組みと特徴空間での正例・負例の配置
ひよこ ひよこ

対照学習って、何と何を対照させるの?

ペンギン先生 ペンギン先生

同じものや似たもの(正例ペア)と、違うもの(負例ペア)を対照させるんだよ。例えば猫の画像を回転させたり色を変えたりした2枚は「同じ猫だから近くに」、猫と車の画像は「違うものだから遠くに」という具合に、特徴空間上での配置を学ぶんだ。

ひよこ ひよこ

ラベルがなくても学習できるっていうのがすごいね!どうやって正例を作るの?

ペンギン先生 ペンギン先生

画像の場合は、同じ画像にランダムな切り抜き・回転・色変換などのデータ拡張を2回適用して、2つのビューを作るんだよ。この2つは「同じ画像の別の見方」だから正例ペアになる。他のすべての画像とのペアが負例になるんだ。SimCLRという手法がこのアプローチで有名だよ。

ひよこ ひよこ

CLIPも対照学習を使ってるって聞いたけど、どういうことなの?

ペンギン先生 ペンギン先生

CLIPは画像とテキストのペアで対照学習をしているんだよ。「猫の写真」と「猫」という説明文は正例ペア、「猫の写真」と「車」という説明文は負例ペアとして学習する。これで画像とテキストの意味を同じ空間に配置できるようになって、テキストで画像を検索したりゼロショット分類ができるようになるんだ。

ひよこ ひよこ

損失関数はどうなってるの?

ペンギン先生 ペンギン先生

代表的なのはInfoNCE損失(NT-Xent損失とも呼ばれる)だよ。正例ペアの類似度を最大化しつつ、バッチ内の他のすべてのサンプルとの類似度を最小化する。直感的には「正解を1つ選ぶ多クラス分類」に似た形になるんだ。バッチサイズが大きいほど負例が増えて学習が安定するよ。

ひよこ ひよこ

最近の発展で面白いものってあるの?

ペンギン先生 ペンギン先生

負例を使わない手法が注目されているよ。BYOLやSimSiamは正例ペアだけで学習できて、「全部同じ表現に潰れる」問題を巧みに回避しているんだ。また、DINOやDINOv2はViTと組み合わせて非常に高品質な視覚表現を獲得している。マルチモーダルAIの基盤技術として、対照学習の重要性はますます高まっているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「対照学習」って出てきたら「似てるもの同士を近づけて違うものを遠ざけて、データの良い表現を学ぶ方法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Contrastive Learning」 = 対照的な学習
💬 「Contrastive」は対照・対比という意味で、正例と負例を対比させて学ぶことからこの名前がついたんだよ
← 用語集にもどる