MoCo(Momentum Contrast)は、正例は近く・負例は遠く——Contrastive Lossの思想——で視覚表現を学ぶ自己教師あり手法です。対照学習は負例の数と質が効くのに、GPUメモリはバッチを太くできない——MoCoはキューに負例を溜め、キーエンコーダを慣性更新して安定させる——本記事は数式より、「なぜ辞書とスローエンコーダが要るか」に焦点を当てます。
対照学習の課題
自己教師あり学習は、ラベルなしデータから擬似的な正解を作ります(G-384)。対照学習では、同じ画像の異なる拡張(クロップ・色変換など)を正例ペアにし、別画像を負例にします。
G-163が示すように、Contrastive Lossは「似ているペアは埋め込み空間で近く、似ていないペアは遠く」——顔認証の距離学習と同型の発想です。画像の自己教師ありでも、豊富な負例があるほど表現が鍛えられやすい——が、1ステップのバッチに入れられる負例数はメモリで頭打ちになります。
二つのエンコーダ
MoCoの構成は、ざっくりQuery側とKey側の二系統です。
| 部品 | 更新の仕方 | 役割 |
|---|---|---|
| Queryエンコーダ | 勾配で通常更新 | 拡張ビュー1の特徴を出す(学習の主役) |
| Keyエンコーダ | 動量(慣性)更新 | 拡張ビュー2の特徴を出す。Queryの過去のゆるいコピー |
Keyエンコーダをいきなり同期更新すると、正例ペアのターゲットが激しく動き学習が不安定——Momentumでゆっくり追従させ、安定した「比較先」を保つのがMoCoの名の由来です。
負例キュー
- 正例 — 同じ画像の2拡張のQuery・Key特徴を近づける
- 負例キュー — 過去バッチのKey特徴をFIFOキューに蓄積(数千〜数万件)
- 対照 — Queryがキュー内の多数Keyと比較し、自分の正例Keyだけ似せる
- 効果 — 小バッチでも負例の辞書が太い——対照学習のボトルネックを緩和
試験では「キュー」「動量エンコーダ」の細部より、自己教師ありの対照学習で、負例を大量に使う設計と覚えれば十分です。
MAE・CLIPとの違い
| 手法 | 学習課題 | モダリティ |
|---|---|---|
| MoCo | 正例近・負例遠の対照 | 画像のみ |
| MAE | マスクパッチの再構成 | 画像のみ |
| CLIP | 画像―テキストの対応 | マルチモーダル(G-393) |
どれも基盤モデル向けの事前学習レシピ——課題の作り方が違うだけで、下流の分類・検出へ転移する流れは共通です(TF-0161)。
試験で押さえるポイント
- 定義 — Momentum Contrast=対照学習の自己教師あり手法
- 特徴 — 動量更新Keyエンコーダ+負例キュー
- 目的 — ラベルなし画像から汎用の視覚埋め込みを学ぶ
- 対比 — Contrastive Lossの実装例、CLIP=画像+テキスト、MAE=再構成
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| MoCo=CLIP | 画像対照 vs 画像―テキスト |
| MoCo=MAE | 対照学習 vs マスク再構成 |
| MoCo=教師あり学習 | 自己教師あり(ラベル不要) |
| MoCo=Mixup | 表現学習の事前学習 vs 教師ありデータ拡張 |
| MoCo=Contrastive Lossそのもの | 損失の思想を使った手法名 |
よくある質問
MoCoは何をする手法ですか?
画像の異なる拡張ビューを正例ペアとして、同じ画像の表現は近く・別画像の表現は遠くなるように学ぶ自己教師ありの対照学習です。動量更新のキーエンコーダと負例キーのキューにより、バッチサイズに依存せず多くの負例を使えます。
MoCoとCLIPは同じですか?
同じではありません。MoCoは画像の拡張ビュー同士の対照学習で視覚表現を学ぶ手法です。CLIPは画像とテキストのペアを共通埋め込み空間に載せるマルチモーダルモデルです。どちらも対照的な学習思想を含みますが、モダリティと目的が異なります。
MoCoとMAEは同じですか?
同じではありません。MoCoは正例・負例の距離関係を学ぶ対照学習です。MAEは画像パッチをマスクして再構成する自己教師あり学習です。どちらもラベルなしデータの事前学習ですが、学習課題の設計が異なります。