ステータス:ドラフト(2026-10-13)。 論文の数値は原典を開き、条件とともに確認しました。実際に試したのはノートPCのCPUでのトイモデルの例(
code/04_distill_toy.py、2〜3分)です。TT Scoreの「録画済み教員 → リアルタイム生徒」の蒸留は 計画段階であり、実際の卓球データではまだ行っていません(進行中の研究、未実測)。 シリーズ「ビジョンモデルを読む2」の第4回。第2回のDINOはすでに「自己蒸留」でした: 自己教師あり学習 1.
目次
1. 直感:正解だけを教える先生、混乱する理由まで教えてくれる先生
手書き数字の「2」を見せて「正解は2」とだけ伝えると、生徒は2と残りの9つの数字を同じように異なるものとして学びます。しかし、すでに十分に学習した大きなモデルに同じ画像を見せると、このように答えます。「2である確率0.97、3である確率0.02、7である確率0.009、残りはほぼ0。」この小さな数値の中に情報があります。 この2は3や7と少し似ており、4とは全く似ていない。 正解ラベルにはない情報です。
Hintonら(2015)はこれを「ダークナレッジ(dark knowledge)」と呼び、大きなモデル(教員)の確率出力を小さなモデル(生徒)の正解として使うことを提案しました。これが 知識蒸留(knowledge distillationing / knowledge distillation) です。生徒は教員よりもはるかに小さいため高速であり、その代わりに教員が築き上げた「類似度のマップ」を受け継ぎます。
2. 学習方法
温度による滑らか化
十分に学習した教員の確率は、たいていほぼ0か1になります。上記の例の0.009のような値は、損失において存在感がありません。そのため、ソフトマックス関数に入力する前にロジットを温度Tで割ります(第1回のτと同じノブで、方向は逆に大きく使用します)。
p_교사(T) = softmax(z_교사 / T), p_학생(T) = softmax(z_학생 / T)
L = (1 − α) · CE(정답, p_학생(1)) + α · T² · KL(p_교사(T) ‖ p_학생(T))
- Tが大きいと小さな確率が復活し、類似度の情報が損失に現れます。
- T²をかける理由:滑らかにした側の勾配は、大きさが約1/T²に減少します。Tを変更しても2つの項のバランスが維持されるように再び大きくします(論文)。
- 正解の項を小さな重みで混ぜると、たいていより良くなります。教員も間違えることがあるためです。
- テスト時には、生徒はT=1に戻ります。
転移セット:ラベルがなくてもよい
蒸留項には正解ラベルが不要です。教員に入力を何でも見せれば、その出力がそのまま正解になります。したがって、生徒を学習させるデータ(転移セット)は ラベルのないデータであっても構いません。この性質が、本稿の終わりの我々の計画の核心となります。
何を予測するか:出力、中間特徴、トークン
- 出力(ロジット):上記の基本形。
- 中間特徴(FitNets, 2015):教員の中間層の特徴(ヒント)を生徒の中間層が模倣するように先に学習させた後、全体を蒸留します。薄くて深い生徒を学習させることが難しい問題を解決するための手法です。
- 蒸留トークン(DeiT, 2021):ViTの生徒に分類トークンのほかに「蒸留トークン」をもう1つ追加し、このトークンに教員の答えを予測させます。
3. 図:我々の計画
TT Scoreの判定には2つの用途があります。試合中に画面にスコアを表示する リアルタイム判定、そして試合終了後に映像を再解析する 録画解析です。この2つは制約が異なります。
| リアルタイム生徒 | 録画済み教員 | |
|---|---|---|
| 確認できる時間 | 判断の瞬間まで + 短い未来予測(200ms以下) | ラリー全体(前後すべて) |
| 計算リソースの予算 | 60fpsの1フレーム16.7msのうち新モジュールの割り当て5ms以下 | 余裕あり(ラリーの終了時、または夜間) |
| モデル | 小さくなければならない | 大きくてもよい |
録画側はバウンド後にボールがどこへ向かうかまで確認して判断できるため、より正確でしょう。その教員が ラベルのない録画データを数百件ラベル付けしてあげれば、リアルタイム生徒は人間がラベル付けしたことのあるラリーよりもはるかに多くの例から学習できます。この計画は研究ノートに「2つのトラック(リアルタイム最高・録画最高)と蒸留」として記載されており、まだ実行していません(進行中の研究)。
4. 実際に試してみる
code/04_distill_toy.py をノートPCのCPUで実行しました(出力 code/04_distill_toy.out.txt).
A. 従来の蒸留の縮小版
互いに似たペア(0と5、1と6…)が存在する10クラス分類です。教員(パラメータ27万8千個)を3,000個のラベルで学習させ、テスト精度は0.856でした。生徒はパラメータ754個(教員の0.27%)です。
教員の出力を温度別に確認すると、「ダークナレッジ」が明らかになります(正解が7のテスト画像)。
T=1 → [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]
T=4 → [0.005 0.004 0.006 0. 0.001 0. 0.008 0.962 0.002 0.012]
T=1では正解の1つしか見えませんが、T=4で滑らかにすると、7番が6・9番と少し、3・5番とはほとんど似ていないという情報が現れます。
| 生徒の学習法(3シードの平均 [範囲]) | テスト精度 |
|---|---|
| (1)ラベル150個のみ | 0.829 [0.828–0.831] |
| (2)ラベル150個 + 教員 T=1 | 0.833 [0.832–0.835] |
| (2)ラベル150個 + 教員 T=4 | 0.850 [0.846–0.853] |
| (2)ラベル150個 + 教員 T=8 | 0.844 [0.842–0.847] |
| (3)ラベル0個 + ラベルなしの転移セット3,000個(T=4) | 0.854 [0.850–0.861] |
教員の出力をT=1のまま使用しても効果はほとんどなく、T=4で滑らかにして初めて2%ポイントほど向上しました。そして、 人間のラベルを一切使用せずに 教員がラベルなしデータ3,000個に対して付与した出力のみで学習した生徒は0.854となり、教員(0.856)にほぼ迫りました。生徒のサイズが教員の0.27%であるにもかかわらずです。
Hintonらの有名な実験の一つも模倣しました。転移セットから3番に見えるサンプルをごっそり除外しました。生徒は3番を一度も「正解」として見たことがありません。
전이 세트에서 3번을 뺀 학생: 3번 재현율 0.066, 전체 0.774
3번 출력의 치우침(bias)만 +8 올리면: 3번 재현율 0.905, 전체 0.845
3番をほとんど当てられませんが、3番の出力のバイアスを1つ上げるだけで90%を正解します。生徒は他の数字の出力に混ざった「3との類似度」から、3番がどのような形をしているのかを学習したのです。ただし、バイアス値はテストセットを見て選択した例示用です。原論文のMNISTの実験も同じ方向性でした(下表)。
B. 録画済み教員 → リアルタイム生徒
ボールの高さの時系列(60fps、位置のノイズ、フレームの10%脱落、カメラの遠近感を模した緩やかな揺れ)からバウンドフレームを検出する問題です。ボールがラケットに当たって折れ曲がる打球も混ぜ、曲がり方の形状だけではバウンドか確信できないようにしました。
- 教員:判定フレームの前後の8フレームを確認する(録画済み)。
- 生徒:過去の16フレームに対し、未来予測0または3フレーム(50ms)のみを確認する(リアルタイム)。
- 人間のラベルがあるラリー20個、ラベルのないラリー300個、検証用40個、テスト用200個。閾値は検証ラリーで決定し、評価は±2フレーム以内のバウンドを1つずつ対応付けるF1スコアです。
- ラベルはバウンドフレームが1、そのすぐ隣のフレームが0.5です。バウンドフレームが2.9%しかないため、正例に重み付けをしました。
| 生徒(3シードの平均 [範囲]) | 未来予測0 | 未来予測3フレーム |
|---|---|---|
| 教員(前後8フレーム、ラベル20ラリー) | 0.923 [0.915–0.929] | ← 同等 |
| 人間のラベル20ラリーのみ | 0.860 [0.852–0.871] | 0.875 [0.857–0.897] |
| + 教員がラベルを付与した300ラリー | 0.886 [0.882–0.890] | 0.886 [0.879–0.897] |
| 参考:+ 人間がラベルを付与した300ラリー(上限) | 0.892 [0.885–0.895] | 0.886 [0.877–0.902] |
未来予測0の生徒は、教員のラベルによって0.860から0.886に向上し、これは同じ300ラリーに対して人間が直接ラベルを付与した場合(0.892)とほぼ同等です。 人間による300ラリーのラベル付けを教員がほぼ肩代わりしました。 未来予測3フレームの生徒も0.886に達しましたが、出発点が高いため利得は小さくなりました。
教員(0.923)との差は蒸留では埋まりませんでした。生徒が 見ることのできない未来に含まれている情報は、いかに優れた先生であっても移転してあげることはできません。蒸留が埋めるのは「データ不足によって生じた差」であり、「入力不足によって生じた差」ではありません。この区別によって、我々の計画において期待できることとできないことが定まります。
5. 論文の数値
| 論文 | 対象 | 数値(論文) |
|---|---|---|
| Hintonら 2015 | MNIST:教員(1200-1200、正則化) / 生徒(800-800) | 誤り67件 / 146件 → 生徒にT=20で蒸留 74件 |
| 〃 | MNIST:転移セットから3を除外 | 誤り206件(うち3が133件) → 3のバイアス+3.5により109件、テストの3を98.6%正解 |
| 〃 | 音声認識:単一 / 10個のアンサンブル / 蒸留した単一 | フレーム精度 58.9% / 61.1% / 60.8%、単語誤り率 10.9% / 10.7% / 10.7%。アンサンブルの利得の80%超を移転(T=2) |
| FitNets (2015) | CIFAR-10 | 薄くて深い生徒(19層、約250万)が教員(約900万)の90.18%を超える91.61% |
| DeiT (2021) | ImageNet、ViT-B生徒 | 教員の最終的な答え(hard)を予測する側(83.0%)が確率(soft)の81.8%より優れている。畳み込み教員(RegNetY-16GF)がTransformer教員よりも優れている。蒸留トークンを含め1000エポックで85.2%(384px)。外部データなしでGPU8枚のサーバー1台 |
| Beyerら 2022 | ImageNet、ResNet-50生徒 | 教員と生徒に 同じクロップ・同じmixupを入力し(一貫性)、9,600エポック学習(忍耐強さ) → 82.8%(2つの解像度の教員のアンサンブル、単一教員では82.3%)。正解ラベルなしでKLのみを使用。教員の出力を事前に計算しておくと逆に悪化する |
| Noisy Student (2020) | ImageNet、ラベルなしの3億枚に教員がラベル付け | 生徒を教員より大きくし、ノイズ(ドロップアウト・確率的深さ・強力なデータ拡張)を加えて3回繰り返す → EfficientNet-L2 88.4%、ImageNet-A 61.0 → 83.7% |
| EfficientAT (2023) | 音声タギング、Transformerアンサンブル → MobileNetV3(488万) | ベースラインmAP .401、蒸留 .458、蒸留+事前学習 .470。ラベル損失の重みは0.1が最適であり、0にすると逆に悪化する。教員より61倍高速 |
| DWPose (2023) | 全身姿勢推定、RTMPose-l生徒 | 64.8 → 66.5 AP、教員のRTMPose-x(65.3)を超える |
| DINOv2 (2023) | ViT-L をゼロから / ViT-g から蒸留 | 線形評価 84.5% / 86.3% |
いくつかの点が目を引きます。
- 生徒が教師を超えることは珍しくありません(FitNets, DWPose, Noisy Student)。教師の出力が正解ラベルよりも「学びやすい」正解である場合があるという意味です。
- 蒸留は思っている以上に時間がかかります。 Beyer らは蒸留を「教師の関数をそのままなぞり描きすること」と捉え、同じ入力を教師・生徒に同じように見せながら非常に長く学習させる必要があるとまとめています。
- ラベルのないデータが真の力です。 Noisy Student と私たちのオモチャ B が同じ話をしています。
6. 限界
- 教師のミスも引き継がれる。 教師が「バウンド」と誤って付けたラベルは、生徒にとってそのまま正解になります。Noisy Student が確信度の低いラベルを取り除いた(B0 確信度 0.3 未満を除く)のもこのためです。
- 見えない情報は引き継げない。 上記の B 実験の教訓です。リアルタイムの生徒に、録画版教師の「未来を見た判断」のすべてを期待してはいけません。
- ドメインが異なると教師が間違える。 教師を公開データセット(側面固定カメラ)のみで学習させると、スマホで斜めから撮影した私たちの動画では教師からして間違える可能性があります(推測)。
7. 私たちのプロジェクトとのつながり
- リアルタイムの生徒はすでに存在します。 学習型バウンド判定器は、ボールの軌跡の過去 16 フレーム(先読み 0)を見る 1D 畳み込みモデルで、パラメータは約 1.8 万個です。ルールエンジンが出したバウンドのうち、このモデルのバウンド確率が低いものを除外します。30fps のコピーを混ぜて学習させた版をシード 5 つで確定させた結果、OpenTTGames のテスト 7 試合を録画版のように採点した場合、60fps 劣化 9 条件の合算でラリー勝者の精度が +1.4%p(95% 区間 +0.3…+2.5)であり、30fps でも低下しませんでした。同じモデルを実際の配信ストリーミングのパスにそのまま組み込むと、劣化 11 条件の 627 ラリーにおいて +4.9%p(+2.9…+7.2)、確認なしの間違った判定は 50 件から 34 件になりました。後者は採用され、本番への適用が進められています(2026-10-13 の研究原稿基準、進行中の研究 — 原稿はまだリポジトリの外)。初期の結果は 30fps で崩壊したため、学習データを変更して再測定しました。同じ 57 ラリーを 11 条件で再集計しているため区間が楽観的である点、ルールエンジンがテスト試合を見ながら調整されてベースラインが楽観的である点もあわせて記しておきます。
- 教師の候補。 録画版側では、クリップ単位の精密イベントモデル(10編)、オクルージョン(遮蔽)に強いボールトラッカー(9編)、3D に持ち上げてから判断する手法(11編)をテストする計画です。今回の回ではまだ実行していません。
- 音声分野の先例。 音声でバウンドを聞き取る研究において候補として検討した EfficientAT こそが、「大きな Transformer → 小さな CNN」の蒸留によって作られたモデルです(TT Score モデル解剖 6編)。
- 姿勢推定の先例。 TT Score コーチングで使用している RTMPose 系を蒸留によって軽量化したものが DWPose です(8編)。
TT からの一言。 試合を最後まで見届けた先生が「ここにバウンドがあったよ」と何百ものラリーに印をつけてくれると、リアルタイムだけで見る生徒もかなり上手に学習できます。それでもまだ訪れていない未来まで教えることはできないため、生徒は先生よりは少し劣ったままになります。
参考文献
- Hinton, Vinyals, Dean, Distilling the Knowledge in a Neural Network, NIPS 2014 Deep Learning Workshop(arXiv 2015). https://arxiv.org/abs/1503.02531
- Romero et al., FitNets: Hints for Thin Deep Nets, ICLR 2015. https://arxiv.org/abs/1412.6550
- Touvron et al., Training data-efficient image transformers & distillation through attention(DeiT), ICML 2021. https://arxiv.org/abs/2012.12877
- Beyer et al., Knowledge distillation: A good teacher is patient and consistent, CVPR 2022. https://arxiv.org/abs/2106.05237
- Xie et al., Self-training with Noisy Student improves ImageNet classification, CVPR 2020. https://arxiv.org/abs/1911.04252
- Schmid et al., Efficient Large-Scale Audio Tagging via Transformer-to-CNN Knowledge Distillation(EfficientAT), ICASSP 2023. https://arxiv.org/abs/2211.04772
- Yang et al., Effective Whole-body Pose Estimation with Two-stages Distillation(DWPose), ICCV 2023 Workshop. https://arxiv.org/abs/2307.15880
- Oquab et al., DINOv2, TMLR 2024. https://arxiv.org/abs/2304.07193
- サンプルコードと出力:
code/04_distill_toy.py,code/04_distill_toy.out.txt