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

対照学習(Contrastive Learning) とは?

最終更新:
💡 ペアの関係を比べて、データの特徴を学ぶ

正例と負例のペアを対比し、正例の類似度を負例より高くするように特徴表現を学ぶ手法。ペアは学習方法に応じて作り、自己教師あり学習にも教師あり学習にも使う。

📌 このページのポイント
正例と負例を比べて表現を学ぶ SimCLR:同じ画像から正例を作る 元の画像 ビューA ビューB 別々に拡張 共通の エンコーダ +投影ヘッド 損失で比べる投影後の表現 正例:同じ元画像 類似度を高く 負例:バッチの別画像 正例より類似度を低く 負例も、意味的には同じ種類のことがある
SimCLRの例。各ビューを同じ重みのエンコーダと投影ヘッドで処理し、NT-Xent損失で比較する。点の位置は類似度の概念で、測定値ではない。
ひよこ ひよこ
何と何を比べるの?
ペンギン先生 ペンギン先生
学習上、対応するものとして扱う正例と、それ以外として扱う負例を比べるよ。正例の類似度を負例より高くするように表現を学ぶ。どのペアを正例にするかは、方法によって違うんだ。
ひよこ ひよこ
ラベルがなくても正例を作れる?
ペンギン先生 ペンギン先生
SimCLRでは、同じ画像を別々に切り抜いたり色を変えたりして、2つのビューを作るよ。この組を正例にし、同じバッチ内の別画像から作ったビューを負例として扱う。猫などの分類ラベルは使わないんだ。
ひよこ ひよこ
別画像なら、必ず違う種類なの?
ペンギン先生 ペンギン先生
そうとは限らないよ。別の猫の写真も負例になることがある。学習上の正例・負例という区分が、そのまま意味の同じ・違うを保証するわけではないんだ。
ひよこ ひよこ
CLIPではどうするの?
ペンギン先生 ペンギン先生
データで対応している画像と説明文を正例にし、バッチ内の対応していない組と比べるよ。画像とテキストの表現を共通の空間で比べられるように学び、文章を使った画像分類などにつなげるんだ。
ひよこ ひよこ
損失関数はどう使うの?
ペンギン先生 ペンギン先生
SimCLRはNT-Xentという損失を使い、正例とバッチ内の負例の類似度を比べるよ。エンコーダの出力を投影ヘッドで変換して損失を計算し、学習後はエンコーダの表現を利用する。対照学習全体が、この構成だけを指すわけではないんだ。
もっと詳しく知りたい人へ

教師ありの対照学習では、正例は何になる?

SupConのように分類ラベルを使う方法では、同じクラスのサンプルを正例としてまとめられる。SimCLRの「同じ元画像からの2ビュー」とはペアの条件が異なる。対照学習と自己教師あり学習は同義ではない。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「対照学習」って出てきたら「正例と負例の関係を比べて、データの表現を学ぶ方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Contrastive Learning」 = 対照的な学習
💬 Contrastiveは対照・対比という意味だよ。正例と負例を比べながら表現を学ぶことから、この名前が付いているんだ

参考資料

← 用語集にもどる