知識蒸留

Knowledge Distillation

知識蒸留とは

知識蒸留(Knowledge Distillation)は、大規模な教師モデルの持つ「暗黙の知識」を小規模な生徒モデルに効率的に伝達する手法です。蒸留(Distillation)とも呼ばれるこの技術は、単にモデルサイズを縮小するだけでなく、教師モデルが学習したデータ間の微細な関係性を生徒モデルに受け継がせることが核心です。

表:知識蒸留の要点まとめ
ひとことで言うと大きなモデルが持つ「暗黙の知識」を、小さなモデルに効率よく伝える手法。
何がうれしいか同じサイズのモデルをゼロから学習するより、明らかに高い精度が出る。
注意点教師モデルの用意と、2段構えの学習で手間がかかる。

ソフトターゲットの重要性

知識蒸留で使用されるソフトターゲット(教師モデルのソフトマックス出力)には、ハードラベル(正解のみ)にはない豊富な情報が含まれています。例えば、手書き数字の「7」に対して「1」に少し似ているという情報や、「9」にも一部似ているという微細な類似度が確率分布として表現されます。温度パラメータを上げることでこの情報をより明確に引き出し、生徒モデルの学習に活用します。

図:知識蒸留の手順
1教師を学習大規模モデルを訓練
▶
2やわらかい答え温度を上げた確率分布
▶
3生徒に学ばせる正解+教師の分布
▶
4軽量モデル完成実運用に載せられる

知識蒸留の損失関数

知識蒸留の損失関数は、通常の教師あり学習の損失(ハードラベルとの交差エントロピー)と蒸留損失(教師のソフトターゲットとのKLダイバージェンス)の加重和として定義されます。このバランスを制御するハイパーパラメータα(蒸留損失の重み)と温度パラメータTの適切な設定が、蒸留の成功に重要です。

知識蒸留の最新動向

近年は、教師モデルなしで自分自身から蒸留する自己蒸留(Self-Distillation)や、複数の教師モデルからの蒸留、オンライン蒸留(教師と生徒を同時に学習)など、多様な手法が提案されています。大規模言語モデルの分野では、GPT-4やClaudeなどの巨大モデルの出力で小型モデルを訓練する応用も広がっています。