自己教師あり学習:マスク予測と対照学習の系統
ラベルなしの生データだけで転移に強い表現が手に入る。BERT/MAEのマスク予測、SimCLRの対照、BYOL/DINOの自己蒸留、SwAVのクラスタリングを系統立て、表現崩壊をどう避けるかを比較します。
- 1.自己教師あり学習は、入力の一部を隠して当てさせる「マスク予測」と、ビューどうしの一致を使う「対照・自己蒸留・クラスタリング」の二系統に大別できる。
- 2.対照学習は負例で崩壊を防ぐが、BYOL/DINOは予測器・ストップグラディエント・指数移動平均ターゲットで負例なしに崩壊を回避し、DINOは中心化+鋭化で均一解を抑える。
- 3.MAEは高マスク率で再構成、SwAVはクラスタ割当の交換予測を使う。共通原理は「壊しても残る情報=意味」を抽出し、自明解への退化を構造で禁じることにある。
出発点:ラベルなしで「意味」を取り出す二系統
自己教師あり学習(self-supervised learning, SSL)は、人手のラベルを使わず、データそのものから作れる教師信号(pretext task)だけで汎用表現を学ぶ枠組みです。大量の未ラベルデータを事前学習に使い、その表現を下流タスクへ転移する——という現代の事前学習パラダイムの中核です。本質は 転移学習 の前段で「転移できる表現」を安く作ることにあります。
手法は大きく二系統に分けられます。第一はマスク予測(生成・予測系)で、入力の一部を隠して残りから復元させます(BERT、MAE)。第二はビュー一致系(joint-embedding)で、同じ元から作った2つのビューの表現を一致させます。後者はさらに、負例を使う対照(SimCLR)、負例なしの自己蒸留(BYOL、DINO)、クラスタリング(SwAV)に枝分かれします。
| 系統 | 教師信号 | 代表手法 | 崩壊回避の主軸 |
|---|---|---|---|
| マスク予測 | 隠した部分を残りから復元 | BERT, MAE | 復元対象が固定(崩壊しにくい) |
| 対照 | 正例を近づけ負例を離す | SimCLR, MoCo | 負例による斥力 |
| 自己蒸留 | 片側の予測を他方に合わせる | BYOL, DINO | 予測器+EMAターゲット+停止勾配 |
| クラスタリング | クラスタ割当の交換予測 | SwAV, DeepCluster | 割当の等分割制約 |
マスク予測:BERTとMAEの「穴埋め」原理
マスク予測の発想は単純です。入力の一部を伏せ、可視部分から伏せた部分を当てさせます。当たるためにはモデルが文脈や構造の規則性を内面化せざるを得ず、その副産物として表現が育ちます。
BERTのマスク言語モデリング(MLM)は、トークン列の約15%を選び、その大半を [MASK] に置き換えて元トークンを予測します。双方向の文脈を同時に見られる点が、左から右へ条件付ける自己回帰言語モデルとの違いです。ここで重要なのはマスク率の低さで、言語は情報密度が高く冗長性が小さいため、15%程度でも復元は十分難しい課題になります。
画像版のMAE(Masked Autoencoder)は逆の発想を取ります。画像はピクセル間の冗長性が極めて高いため、75%という高マスク率で大半のパッチを消し、残り25%から再構成させます。マスク率が低いと近傍ピクセルの内挿という近道で解けてしまい、意味表現が育ちません。
# MAE の流れ
patches = split_to_patches(image)
keep, masked = random_split(patches, keep_ratio=0.25)
latent = encoder(keep) # 可視パッチだけを符号化(軽量)
recon = decoder(latent + mask_tokens) # マスク位置のピクセルを再構成
loss = MSE(recon[masked], pixels[masked]) # マスク部のみで損失
MAEはエンコーダに可視25%だけを入力し、マスクトークンは軽量なデコーダ側でのみ扱います。計算量はパッチ数にほぼ比例するため、75%を捨てると事前学習が数倍速くなります。下流タスクではデコーダを捨て、エンコーダだけを転移に使います。再構成対象(生ピクセル)が固定なので、後述するビュー一致系のような表現崩壊は原理的に起きにくいのが利点です。
ビュー一致系の根本問題:表現崩壊
ここからが SSL の理論的な核心です。マスク予測と違い、ビュー一致系は「2つのビューの表現を近づける」ことだけを目的にできます。同じ元サンプルに別々の データ拡張 をかけた2ビューを作り、その表現 z1, z2 の距離を最小化する——一見これで十分に思えます。
しかし素朴にやると**表現崩壊(collapse)が起きます。すべての入力に対してエンコーダが同一の定数ベクトルを出力すれば、z1 = z2 が常に成立し損失はゼロになるからです。これは損失を完全に満たすが情報を一切持たない自明解(trivial solution)**です。SSL の各手法は、この自明解をいかに構造で禁じるかという一点で性格が分かれます。
# 崩壊した自明解の例
encoder(x) = c (任意の x に対し定数 c)
→ z1 = z2 = c なので一致損失は常に 0
→ しかし表現は何の情報も持たない
対照(SimCLR):負例という斥力で崩壊を防ぐ
最も直接的な対策は負例の斥力です。対照学習 のSimCLRは、正例(同一起源の2ビュー)を近づけると同時に、バッチ内の無関係なサンプル(負例)を遠ざけます。InfoNCE損失(NT-Xent)の分母に負例との類似度が並ぶため、全表現を一点に潰すと負例まで近づいてしまい損失が増える——崩壊が損失で罰せられる構造です。
L = − log [ exp(sim(z1, z2)/τ) / Σ_k exp(sim(z1, z_k)/τ) ]
(分母の k は正例1個+多数の負例)
代償として、良い表現には多数の負例が要ります。SimCLRが数千規模の大バッチを必要としたのはこのためで、MoCoはメモリバンク(キュー)で負例を確保してバッチ依存を緩めました。詳しい数理は対照学習の記事に譲ります。
自己蒸留(BYOL/DINO):負例なしで崩壊を避ける
驚くべきことに、BYOLは負例を一切使わずに崩壊を回避します。鍵は3つの非対称性です。
第一にターゲットネットワーク。オンライン側(学習される側)とは別に、重みを更新しないターゲット側を置きます。その重みはオンライン重みの指数移動平均(EMA)でゆっくり追従させます(モメンタムエンコーダ)。第二に予測器(predictor)。オンライン側にだけ追加のMLP q を載せ、オンライン表現からターゲット表現を「予測」する非対称な構造にします。第三にストップグラディエント。ターゲット側には勾配を流しません。
z_online = predictor(proj(encoder_online(view1))) # 予測器あり
z_target = stopgrad(proj(encoder_target(view2))) # 勾配を止める
loss = ‖normalize(z_online) − normalize(z_target)‖²
encoder_target ← m·encoder_target + (1−m)·encoder_online # EMA 更新
直感に反しますが、予測器とEMAターゲットの組合せが崩壊を防ぎます。ターゲットがEMAでゆっくり動く「少し過去の自分」であるため、オンライン側は固定された的を追えず常に動く的を追います。予測器がこの差を吸収する変換を学ぶ過程で、表現が定数に潰れる方向の勾配が打ち消されることが解析的に示されています。予測器を外す、EMAを止めて重み共有にする、ストップグラディエントを外す——このいずれを欠いても崩壊します。崩壊回避は単一トリックでなく3要素の協調で成り立っています。
DINOはこの自己蒸留をViTへ拡張し、損失をユークリッド距離ではなくソフトマックス出力どうしのクロスエントロピーにします。ターゲット側の出力を教師、オンライン側を生徒とみなす「蒸留」の形です。DINOには固有の崩壊回避があり、教師出力に対する**中心化(centering)と鋭化(sharpening)**を組み合わせます。中心化はバッチ平均を引いて1次元への偏り(ある特徴が常に支配する崩壊)を抑え、鋭化(低温ソフトマックス)は出力が一様分布へ潰れる崩壊を抑えます。両者は逆向きに作用し、互いの暴走を打ち消し合うことで均衡を保ちます。
鋭化(教師側の温度を低くする)だけだと出力が1点に尖って一様性が失われ、中心化だけだと逆に一様分布へ向かいます。片方は「尖りすぎ」を、もう片方は「平坦すぎ」を抑えるブレーキで、両方あって初めて意味のある分布に収まります。DINOで学習したViTのアテンションが、教師なしで物体の輪郭を捉える性質はこの均衡の副産物です。
クラスタリング(SwAV):割当の交換予測
第三の枝がオンラインクラスタリングです。SwAVは、ビューごとに「プロトタイプ(クラスタ中心)への割当(コード)」を計算し、一方のビューの割当を他方のビューの表現から予測させます(swapped prediction)。表現を直接合わせるのではなく、クラスタ割当という離散的な中間表現を介して一致させる点が特徴です。
ここでの崩壊(全サンプルが同じクラスタへ落ちる退化)は、割当を求める際の等分割制約で防ぎます。各クラスタにサンプルが均等に配分されるようSinkhorn-Knopp反復で最適輸送的に割り当て、特定クラスタへの集中を禁じます。これが負例の役割を代替します。
# SwAV の交換予測(概念)
q1 = sinkhorn(z1 · prototypes) # ビュー1の割当(等分割制約つき)
q2 = sinkhorn(z2 · prototypes) # ビュー2の割当
loss = CE(softmax(z1·prototypes), q2) # ビュー1の表現で q2 を予測
+ CE(softmax(z2·prototypes), q1) # ビュー2の表現で q1 を予測
比較:崩壊回避という共通の問い
| 手法 | 教師信号 | 崩壊回避の仕組み | 負例 |
|---|---|---|---|
| BERT | マスクトークンの復元 | 復元対象が実トークンで固定 | 不要 |
| MAE | マスクピクセルの再構成(高マスク率) | 再構成対象が生ピクセルで固定 | 不要 |
| SimCLR / MoCo | 正例接近・負例分離(InfoNCE) | 負例の斥力 | 必須(大バッチ/キュー) |
| BYOL | オンライン→EMAターゲット予測 | 予測器+EMA+停止勾配の非対称性 | 不要 |
| DINO | 教師生徒のソフトマックス蒸留 | 中心化+鋭化+EMA | 不要 |
| SwAV | クラスタ割当の交換予測 | Sinkhornの等分割制約 | 不要(プロトタイプ) |
俯瞰すると、SSL のすべての手法は同じ問いに答えています。「データ拡張やマスクで壊しても残る情報こそ意味である」という共通仮説のもと、その意味を抽出しつつ自明解への退化を構造で禁じる——その禁じ方の違いが系統を生んでいます。マスク予測は復元対象を固定することで崩壊を原理的に避け、ビュー一致系は負例(対照)・非対称な予測とEMA(自己蒸留)・等分割制約(クラスタリング)という別々の仕掛けで自明解を排除します。
試験・面接では「負例なしでなぜ崩壊しないか」が頻出です。BYOLは予測器・EMAターゲット・ストップグラディエントの3点セット、DINOはさらに中心化と鋭化、SwAVは割当の等分割制約。いずれも「定数ベクトルへ潰れる勾配」を構造的に殺すための工夫だと一言で説明できれば十分です。マスク率はBERT低(言語は冗長性小)・MAE高(画像は冗長性大)という非対称も問われます。
まとめ:壊して残るものを表現にする
自己教師あり学習は、ラベルなしの生データだけで転移可能な表現を作る枠組みであり、入力の一部を隠して復元させるマスク予測(BERT、MAE)と、ビューの一致を使う対照・自己蒸留・クラスタリングの二系統に大別されます。共通の敵は表現崩壊であり、対照は負例の斥力、BYOL/DINOは予測器・EMAターゲット・停止勾配(DINOは加えて中心化と鋭化)、SwAVは割当の等分割制約という、それぞれ異なる構造で自明解を禁じています。ここで学んだ表現は最終的に 埋め込み として下流に渡され、その近接関係を測る幾何は Attentionの数理 の内積と地続きです。SSL の系統を「何を壊し、崩壊をどう禁じるか」の軸で整理しておくと、新手法が出てもこの座標に位置づけて理解できます。
AI/機械学習 Article
自己教師あり学習:マスク予測と対照学習の系統を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
自己教師あり学習
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
対照学習は負例で崩壊を防ぐが、BYOL/DINOは予測器・ストップグラディエント・指数移動平均ターゲットで負例なしに崩壊を回避し、DINOは中心化+鋭化で均一解を抑える。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「自己教師あり学習 / 表現学習」に近いか確認する。
- 強みである「自己教師あり学習は、入力の一部を隠して当てさせる「マスク予測」と、ビューどうしの一致を使う「対照・自己蒸留・クラスタリング」の二系統に大別できる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。