JA EN
体系LLM — 大規模言語モデル
·★ 会員·論文·13分で読めます

知識蒸留を1から — 大きなモデルを小さく写す

正解ラベルには「犬と猫は似ている」と書かれていません。でも訓練済みモデルの出力にはそれが入っている — この差が知識蒸留の全部です。ソフトラベルと温度つきsoftmax、T²の由来、系列レベル蒸留、合成データ蒸留、そしてDeepSeek-R1が推論の手続きごと小さいモデルへ写した話まで、前提知識ゼロから。

対象textタスクtraining

Distilling the Knowledge in a Neural Network

一次資料 — この記事の根拠

この解説の公開 2026-08-27

Distilling the Knowledge in a Neural NetworkarXiv:1503.02531論文ページ·PDF
Sequence-Level Knowledge DistillationarXiv:1606.07947論文ページ·PDF
DistilBERT"arXiv:1910.01108論文ページ·PDF
a distilled version of BERT: smallera distilled version of BERT: smaller
fasterfaster
https://arxiv.org/abs/1910.01108"cheaper and lighter
The False Promise of Imitating Proprietary LLMsarXiv:2305.15717論文ページ·PDF
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement LearningarXiv:2501.12948論文ページ·PDF

「正解」だけでは、先生の知識は伝わらない

犬・猫・トラック・飛行機の4択で画像を分類するモデルを考えます。ある犬の写真に付いている正解ラベルは「犬」、数字にすれば (1,0,0,0)(1, 0, 0, 0) です。データセットが持っている情報はこれで全部です。

ところが、十分に訓練された大きなモデルに同じ写真を見せると、出力はたとえば (0.90, 0.09, 0.005, 0.005)(0.90,\ 0.09,\ 0.005,\ 0.005) になります。「犬だ。ただし猫の可能性も少しある。トラックや飛行機ではまずない」。ここに書かれている 犬:猫 = 10:1、犬:トラック = 180:1 という比率は、正解ラベルには一切含まれていません。しかしこの比率こそ、そのモデルが大量のデータから学び取った「世界の似ている/似ていない構造」です。

Hinton らはこれを dark knowledge(暗黙の知識) と呼びました。知識蒸留(Knowledge Distillation)とは、大きなモデル(教師)が持つこの暗黙の知識を、小さなモデル(生徒)へ写し取る技術です。

比喩: 答案を写す生徒と、迷い方まで写す生徒

同じ問題集を解く2人の生徒を想像してください。

1人目は解答欄の丸だけを見ます。「問3の答えはウ」。それ以上のことは分かりません。 2人目は先生の採点コメントまで見ます。「答えはウ。ただしイと迷った人が多い。アとエは論外」。

2人目のほうが、同じ問題数からはるかに多くを学べます。「イとウは紛らわしい」という情報が、正解そのものとは別に手に入るからです。これが知識蒸留の直感で、実務上の意味は2つあります。

1つめ: 1サンプルあたりの情報量が増える。 one-hotラベルは「正解のクラス番号」しか伝えませんが、教師の出力は全クラス分の数字を伝えます。だから同じデータ量でも学習が速く進み、ラベルの付いていないデータすら学習に使えます(教師に予測させればソフトラベルが作れるので)。

2つめ: 正則化として効く。 「絶対に犬、他は0」と教え込むより「たぶん犬、猫も少し」と教えるほうが、生徒は極端な自信を持ちにくくなります。ラベルスムージングを、固定値ではなく教師の判断で行っているようなものです。

仕組み: 温度で分布を「ぼかす」

ただし、素直に教師の出力を使うと困ることがあります。よく訓練されたモデルの出力は (0.99, 0.009, 0.0009, )(0.99,\ 0.009,\ 0.0009,\ \dots) のように尖りがちで、肝心の「猫とトラックのどちらがより犬っぽいか」の差が小さすぎて、勾配にほとんど乗らないのです。

そこで 温度つきsoftmax を使います。ロジット(softmaxに入れる前の生のスコア)を TT で割ってから softmax にかけます。

pi(T)=exp(zi/T)jexp(zj/T)p_i(T) = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}
(1)

ziz_i はクラス ii のロジット、TT は温度と呼ばれる正の数、pi(T)p_i(T) は温度 TT のもとでのクラス ii の確率です。T=1T = 1 なら普通のsoftmaxで、TT を大きくするほど分母の差が縮まり、分布は平らに近づきます。逆に TT を0に近づけると、最大値だけが1になる one-hot に潰れます。

つまり温度とは、「教師にどれくらい自信のなさを表明させるか」のつまみです。T=4T = 4 くらいに上げると (0.99,0.009,)(0.99, 0.009, \dots)(0.6,0.2,0.13,0.07)(0.6, 0.2, 0.13, 0.07) 程度にほぐれ、埋もれていた順位関係が学習信号として使える大きさになります。

FIG 1温度スライダーを右へ動かすと、尖っていた棒が平らになっていく。教師の「2位以下の順位」が見えるようになるのがこの操作の狙いで、上げすぎると全部が同じ高さ=情報が消える

損失関数: 2つの目標を混ぜる

生徒には2つのことを同時に教えます。「正解ラベルに合わせる」ことと「教師の分布に合わせる」ことです。

L=(1α)LCE(y, pS(1))  +  αT2KL(pT(T)pS(T))\mathcal{L} = (1-\alpha)\,\mathcal{L}_{\mathrm{CE}}\big(y,\ p^{S}(1)\big) \;+\; \alpha\, T^{2}\, \mathrm{KL}\big(p^{T}(T)\,\|\,p^{S}(T)\big)
(2)

第1項は普通の教師あり学習です。yy が正解ラベル、pS(1)p^S(1) が温度1(=そのまま)での生徒の出力で、LCE\mathcal{L}_{\mathrm{CE}} はクロスエントロピー。第2項が蒸留の項で、pT(T)p^T(T)pS(T)p^S(T) は温度 TT での教師と生徒の分布、KL\mathrm{KL} は2つの分布のズレを測る量です(KLダイバージェンスを1から理解するで詳しく扱っています)。α\alpha は両者の配合比で、0.9のように蒸留側を重くすることが多いです。

言葉にすれば、「答え合わせは普通にやりつつ、教師のぼかした分布との距離も同時に縮めろ」という指示です。

ここが実装で一番よく間違えられる箇所です。温度 の蒸留損失を生徒のロジットで微分すると

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

参考文献

  1. Distilling the Knowledge in a Neural Network. arXiv:1503.02531論文ページ·PDF
  2. Sequence-Level Knowledge Distillation. arXiv:1606.07947論文ページ·PDF
  3. DistilBERT. "arXiv:1910.01108論文ページ·PDF
  4. a distilled version of BERT: smaller. a distilled version of BERT: smaller
  5. faster. faster
  6. https://arxiv.org/abs/1910.01108". cheaper and lighter
  7. The False Promise of Imitating Proprietary LLMs. arXiv:2305.15717論文ページ·PDF
  8. DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning. arXiv:2501.12948論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

コメント

コメントにはログインが必要です