状態: ドラフト (2026-10-13). 論文の数値は原文を開いて条件とともに確認した値です。実際に試したものはノートPCのCPUによるトイの例(
code/02_ssl_collapse.py、30秒前後)であり、卓球映像で自己教師あり学習を行ったことはありません(未実測)。 シリーズ「ビジョンモデルを読む 2」第2編。前編: 対照学習とCLIP. ViT構造自体は ビジョンモデルを読む 1をご覧ください。
自己教師あり学習 1: ラベルなしで特徴を学ぶ
目次
1. 直感: ラベルは高価で、画像は溢れている
卓球の映像を思い浮かべるとすぐに腑に落ちます。スマホで撮影した練習動画は何時間分もたまりますが、「このフレームにボールがここにある」と手動でアノテーションする作業は1時間に数百枚がせいぜいです。それでは、 ラベルのない画像の山そのものから何かを学ぶことはできないでしょうか。
自己教師あり学習(self-supervised learning)は、データの中で自ら問題を作り出して解きます。この編で扱う系が解決する問題は次の通りです。
1つの画像を2回異なる方法で変形(切り抜き、色変更、ぼかし)しても、モデルは「同じもの」と言わなければならない。
変形に耐え抜く特徴は、画像が持つ 内容を捉え、 見た目(明るさ、切り抜いた位置)を捨て去った特徴である可能性が高いです。第1編のCLIPが「画像と言葉」をペアにしたのに対し、ここでは「画像とその画像の異なる変形」をペアにします。言葉ですら必要ありません。
2. 問題: 崩壊
しかし、この問題には罠があります。「2つの変形の出力を同じにせよ」が目的のすべてであれば、 すべての入力に対してまったく同じ出力を返すモデルが完璧な正解になってしまいます。損失は最小値になりますが、特徴量は何の情報も持ちません。これを 崩壊(collapse) と呼びます。
この編に登場する方法はすべて、崩壊を防ぐための異なる仕組みであると捉えると整理が容易です。
| 手法 | 崩壊を防ぐ仕組み | 損失 |
|---|---|---|
| SimCLR(2020) | 同じバッチ内の他の画像を不正解として押し出す | InfoNCE(第1編と同じ形) |
| MoCo(2020) | 過去のバッチの出力をキューに蓄えて不正解として使う。キューを埋めるエンコーダーはゆっくり追従する | InfoNCE |
| BYOL(2020) | 不正解なし。学生側にのみ予測器を取り付け、教員は学生の指数移動平均(EMA) | 正規化した出力の二乗誤差 |
| DINO(2021) | 不正解なし。教員の出力の平均を引く(中心化)とともに低い温度で先鋭化する | 教員分布と学生分布の交差エントロピー |
3. どのように学習させるか
SimCLR: 大きなバッチと強い変形
SimCLRの損失はNT-Xentと呼ばれますが、第1編のInfoNCEと同じ形です。N枚のバッチから2N個の変形を作り、各変形の正解は相方の変形1つ、不正解は残りの2N-2個です。論文が見出した要点は3つあります。
- 変形の組み合わせが決定的である。 ランダムな切り抜きと色の歪みを併用することが特に重要でした。切り抜きだけを使用すると、モデルは色の分布だけを見てペアを見つけてしまいます。
- 射影ヘッド(projection head)。 エンコーダーの出力hの上に小さなMLPをさらに1つ重ねてzを作り、損失はzに対して計算します。しかし、後で実際に使用する特徴量はヘッドの 手前にある hです。線形評価においてhはzよりも10%以上優れていました(論文)。損失を合わせるために捨てられる情報を、ヘッドが代わりに引き受けて捨ててくれるという解釈です。
- 大きなバッチ。 基本は4,096、実験は256〜8,192。温度は0.1が最も優れていました(ImageNet 100エポック、論文)。
MoCo: 不正解をキューに積む
大きなバッチは多くのメモリを消費します。MoCoは不正解を過去のバッチから取得します。出力を長さ65,536のキューに蓄えておき、不正解として使用します。問題は、キュー内の出力が異なる時点のエンコーダーによって生成されているという点です。そのため、キューを埋めるエンコーダー(キーエンコーダー)は逆伝播を行わず、学習するエンコーダーの重みを非常にゆっくりと追従させます。
key 인코더 ← m · key 인코더 + (1 − m) · query 인코더, m = 0.999
mを0にすると(毎回そのままコピー)学習は失敗し、0.9では55.2%、0.999では59.0%でした(論文、キュー4,096のアブレーション実験)。 ゆっくり追従する教員というこの仕組みが、BYOLやDINOへと受け継がれます。
BYOL: 不正解なしでも持ちこたえる
BYOLは不正解を一切使用しません。学生(online)エンコーダーの上に 予測器をもう1つ取り付け、別の変形を見た教員(target)エンコーダーの出力を予測させます。教員は学生のEMAであり、勾配は逆伝播しません(0.996から1まで徐々に増加)。「1点に集約すればいいじゃないか」という近道がなぜ阻止されるのかについては、論文も完全な証明を与えていませんが、予測器を取り除くと崩壊するという実験結果は明白です(論文)。同じ結果を以下の例でも確認します。
DINO: 教員の分布に従う
DINOは出力をK個の確率分布にします。教員と学生が同じ画像の異なる切り抜き部分を見ることにより、学生が教員の分布を予測するように交差エントロピーを小さくします。分類器を蒸留する様子と似ているため、 自己蒸留(self-distillation) と呼びます(蒸留については第4編で詳しく扱います)。
# 02_ssl_collapse.py 의 DINO 부분에서 줄임
with torch.no_grad():
q = softmax((teacher(v1) - center) / 0.04) # 가운데 맞추고, 낮은 온도로 날카롭게
loss = -(q * log_softmax(student(v2) / 0.1)).sum(1).mean()
center = 0.9 * center + 0.1 * teacher_outputs.mean(0) # 교사 출력의 이동 평균
teacher = EMA(student)
崩壊を防ぐ2つの部品は、互いに反対方向に作用します。
- 中心化(centering): 教員の出力からその平均を引きます。特定の次元の出力が常に大きくなる偏りを防ぎます。ただし、これだけでは出力が均一な分布に広がる方向に破綻します。
- 先鋭化(sharpening): 教員側のみに低い温度(0.04〜0.07)を用いて分布を尖らせます。均一に広がるのを防ぎます。ただし、これだけでは1つの次元に集中してしまいます。
論文では、どちらか一方のみを使用するとそれぞれの方向に崩壊することを図で示しました。学生は大きな切り抜き2枚と小さな切り抜き複数枚のすべてを見ますが、教員は大きな切り抜きのみを見ます(multi-crop)。「小さな断片だけを見て全体の画像の意味を予測せよ」という問題になります。
DINOv2: 手法よりもデータ
DINOv2は損失関数を大きく変更しませんでした(DINOの損失 + マスクされたパッチ単位のiBOTの損失 + 特徴を均一に広げるKoLeo正則化)。その代わりに データ選定に力を入れました。重複を削除した12億枚の元データから、すでに整理されたデータセットに似た画像を検索して1億4,200万枚(LVD-142M)を厳選しました。そして、最大規模のViT-g(11億パラメータ)を学習した後、 小さなモデルは最初から学習せず、大きなモデルから蒸留しました(論文)。なぜ蒸留が勝るのかは第4編のテーマです。
4. やってみる: 崩壊を目で見る
code/02_ssl_collapse.py は隠れグループ10個から生成された32次元の「画像」を作成します。画像にはグループを決定する内容以外に大きく変動する「背景」が混ざっており、画素をそのまま比較すると背景が距離を支配してしまいます。変形は背景の再描画、画素の30%の削除、明るさの倍率、ノイズです。すべての手法を同じエンコーダー(小さなMLP)、同じ1,500ステップで学習させました。 ラベル(グループ番号)は評価にのみ 使用します。
評価は2つの数値で行います。埋め込み次元ごとの標準偏差(0に近いほどすべてが1点に集中)、およびテスト画像ごとに最も近い5つのグループ番号で投票を行うk-NN精度です(出力のまま、 code/02_ssl_collapse.out.txt).
| 手法 | 標準偏差 | k-NN精度 | 備考 |
|---|---|---|---|
| ランダム推測 | — | 0.100 | |
| 画素のまま | — | 0.315 | 背景が距離を支配 |
| 未学習のエンコーダー | 0.170 | 0.234 | |
| 1. 引き寄せのみ | 0.003 | 0.107 | 損失 -0.9998(最小値 -1) — 完璧な崩壊 |
| 2. SimCLR(τ=0.2) | 0.170 | 0.931 | |
| 3. BYOL | 0.087 | 0.816 | |
| 3′. BYOLから予測器を取り除いた場合 | 0.002 | 0.150 | 崩壊 |
| 4. DINO | 0.077 | 0.669 | 使用された次元数 12/32、画像あたりのエントロピー 2.62 |
| 4′. 中心化を取り除いた場合 | 0.054 | 0.301 | 使用された次元数 1/32、エントロピー 0 — 1つの次元に崩壊 |
| 4″. 先鋭化を取り除いた場合 | 0.056 | 0.286 | 画像あたりのエントロピー 3.47 = 最大(log 32) — 均一な分布へ崩壊 |
ここから読み取れる点がいくつかあります。
- 引き寄せることばかりを行うと、損失はほぼ完璧になりますが特徴量は使い物になりません。 損失が低いからといって良いモデルとは限らないという最も劇的な例です。
- BYOLの予測器とDINOの2つの部品は、実際に重要な負荷を支えている部品です。 片方を取り除くだけで破綻し、破綻する方向もDINOの論文が説明している通りでした。中心化を取り除くと32次元のうち1次元しか使用されなくなり、先鋭化を取り除くとすべての画像が同じ均一な分布を出力しました。
- このトイデータではSimCLRが最も優れており、DINOが最も低い結果となりました。だからといって手法の優劣を語ることはできません。ハイパーパラメータ(温度、EMAの速度、次元数)をトイデータに合わせて選定しておらず、DINOの強みであるmulti-cropやViTも使用していないためです。
5. 論文の数値
評価の大部分は 線形評価です。自己教師あり学習で訓練したエンコーダーを凍結し、その上にImageNetのラベルを使って1つの線形分類器のみを学習させて精度を測定します。特徴量がどれほど「線形に分離できるように」整理されているかを検証します。
| 手法 | モデル | ImageNet線形評価 top-1 | 条件(論文) |
|---|---|---|---|
| MoCo | ResNet-50 | 60.6% | 200エポック、バッチ256 |
| SimCLR | ResNet-50 / 4倍幅 | 69.3% / 76.5% | 1,000エポック。76.5%は教師あり学習のResNet-50と同等水準 |
| MoCo v2 | ResNet-50 | 71.1% | 800エポック、MLPヘッド・ぼかし変形を追加 |
| BYOL | ResNet-50 | 74.3% | 1,000エポック、バッチ4,096 |
| DINO | ViT-S/16 · ViT-B/8 | 77.0% · 80.1% | k-NNは74.5% · 77.4% |
| DINOv2 | ViT-S/14 · ViT-g/14 | 81.1% · 86.5% | LVD-142M、Sはgから蒸留 |
| DINOv3 | ViT-7B/16 | 88.4% | 評価解像度512px、LVD-1689M(17億枚) |
変形の重要性に関する数値もあります。変形を切り抜きのみに制限すると、BYOLは59.4%(-13.1%p)と持ちこたえたものの、SimCLRは40.3%(-27.6%p)にまで崩落しました(BYOL論文)。不正解に依存する手法ほど、「色だけでペアを探す」といった近道に対して脆弱であるという意味に読み取れます。
DINOには数値以外にも有名な観察が一つあります。ViTの最後の層の注意(attention)マップが、ラベルを一度も見ていないにもかかわらず物体の輪郭に沿うのです。このマップで作ったマスクの重なり(Jaccard)は、ViT-S/16で45.9となり、同じ構造を教師あり学習した場合(27.3)よりも高くなりました(論文)。
計算量は以下の通りです。DINO ViT-S/16は8-GPUサーバー2台で3日、DINOv2全体はデータセンター級GPU 2万2千時間、DINOv3は6万1千時間でした(論文)。
6. 制限
- 変形がすなわち仮定である。 「色が変わっても同じもの」と教えると、モデルは色を捨てます。卓球でオレンジ色のボールと白いボールを区別しなければならない場合、色の変形はその情報を消す方向に働きます。
- 1枚の画像単位の意味に合わせられている。 この系統は「この画像は何か」には強いです。ボールがどこにあるかといった 位置や、いつ跳ね返ったかといった 時間は、別途の仕組み(第3回のマスクして当てる手法、第6回の動画モデル)が必要です。DINOv3のグラム固定(Gram anchoring)は、長時間の学習でパッチ単位のきめ細かい特徴が崩れる問題に対処するために導入された仕組みです(論文)。
- 大きく、長く。 良好な数値はだいたい数百〜数千エポックと大規模なデータから得られています。小規模なデータで同じ効果が得られるという保証はありません。
7. 我々のプロジェクトとのつながり
- ラベルが最も貴重な場所。 TT Scoreの学習素材のほとんどは非商用条件の公開データセットであり、我々のスマホ動画にはラベルがほとんどありません(TT Scoreモデル解剖 第7篇)。ラベルのない我々の動画でまず自己教師あり学習を行い、少数のラベルで微調整するアプローチはこの問題に適した方向性です。ただし、まだ試しておらず、ボールのような小さな物体に対してこの系統がどれほど役立つかは不明です(未測定)。
- 遅い教師。 MoCoのkeyエンコーダー、BYOL・DINOのEMA教師は、「学生の過去の平均が、学生よりも安定した先生になる」という同じ考え方です。第4回の蒸留、第6回のV-JEPAで再び登場します。
- 特徴を借りて使う。 DINOv2のような公開されている特徴抽出器を凍結して使えば、卓球台の領域や選手の領域を切り分ける際に、少ないラベルから出発することができます(推定、未測定)。
TTの一言。 「2つは同じだと言い張って」と指示すると、モデルは世の中のすべてが同じだと言い切ってしまいます。それを防ぐ仕組みが、不正解であれ、予測器であれ、中心合わせであれ、1つでも欠けると本当の意味で崩壊してしまうのを直接見ることができて面白かったです。
参考文献
- Chen et al., A Simple Framework for Contrastive Learning of Visual Representations(SimCLR), ICML 2020. https://arxiv.org/abs/2002.05709
- He et al., Momentum Contrast for Unsupervised Visual Representation Learning(MoCo), CVPR 2020. https://arxiv.org/abs/1911.05722
- Chen et al., Improved Baselines with Momentum Contrastive Learning(MoCo v2), arXiv 2020. https://arxiv.org/abs/2003.04297
- Grill et al., Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning(BYOL), NeurIPS 2020. https://arxiv.org/abs/2006.07733
- Caron et al., Emerging Properties in Self-Supervised Vision Transformers(DINO), ICCV 2021. https://arxiv.org/abs/2104.14294
- Oquab et al., DINOv2: Learning Robust Visual Features without Supervision, TMLR 2024. https://arxiv.org/abs/2304.07193
- Siméoni et al., DINOv3, arXiv 2025. https://arxiv.org/abs/2508.10104
- サンプルコードと出力:
code/02_ssl_collapse.py,code/02_ssl_collapse.out.txt