蒸留レシピ図鑑 — logit・feature・attention・self をどう使い分けるか
蒸留のレシピは「教師のどこを学生に合わせるか」で決まります。出力(logit)・中間層(FitNet)・注意行列・自己蒸留の4種を、1枚の表と4本の式で並べ、教師がAPI越しなのか同族アーキなのかといった条件から選び方を決める地図にします。
Distilling the Knowledge in a Neural Network
一次資料 — この記事の根拠
この解説の公開 2026-08-29
Distilling the Knowledge in a Neural NetworkarXiv:1503.02531論文ページ·PDFFitNets: Hints for Thin Deep NetsarXiv:1412.6550論文ページ·PDF
Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention TransferarXiv:1612.03928論文ページ·PDF
TinyBERT: Distilling BERT for Natural Language UnderstandingarXiv:1909.10351論文ページ·PDF
MiniLM: Deep Self-Attention Distillation for Task-Agnostic Compression of Pre-Trained TransformersarXiv:2002.10957論文ページ·PDF
Born-Again Neural NetworksarXiv:1805.04770論文ページ·PDF
Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self DistillationarXiv:1905.08094論文ページ·PDF
「真似る」場所は、出口だけではない
料理の師匠から学ぶとき、真似る対象はいくつもあります。完成した皿の味だけを真似ることもできるし、下ごしらえで野菜がどう切られているかを真似ることもできる。師匠が鍋のどこを見ているか、その視線ごと真似る道もある。あるいは昨日の自分の出来映えを今日の手本にする、という独学の道もあります。
知識蒸留のレシピの違いは、突き詰めるとこれだけです。教師モデルのどこを学生モデルに合わせるか。合わせる場所が変われば、教師に要求する情報も、損失関数の形も、うまくいく条件も変わります。
蒸留の土台 — なぜ正解ラベルより教師の出力のほうが情報量が多いのか — は知識蒸留を1からで扱いました。この記事はその次の地図、「で、実際どれを使うのか」です。
4つのレシピを1枚の表で
| レシピ | 合わせるもの | 教師に要求すること | 効きやすい場面 | 主な落とし穴 |
|---|---|---|---|---|
| 出力蒸留(logit / response) | 最終層の確率分布 | 出力の分布だけ(中身は不要) | 教師がAPI越し、構造が全く違う | 出口の情報しか流れず、深い学生に情報が足りない |
| 中間層蒸留(feature / FitNet) | 隠れ層の特徴ベクトル | 中間活性の取り出し | 学生が細く深い、教師と同族 | 次元とスケールの不一致、層の対応づけが恣意的 |
| 注意蒸留(attention) | 注意行列・注意由来のマップ | 各層の注意重み | Transformer同士、事前学習段階での圧縮 | ヘッド数・系列長・マスク位置の食い違い |
| 自己蒸留(self) | 自分(の過去/深い層)の出力 | 教師モデルが存在しない | 教師を用意できない、正則化が欲しい | 誤りを自分で強化する、伸びが小さい |
この表の各行を、式・体感・コードの順に開いていきます。
レシピ1: 出力蒸留 — いちばん少ない材料で作れる
もっとも古典的で、いまも主力なのが出力蒸留です。教師と学生の最終出力の確率分布を近づけるだけで、教師の内部には一切触れません。
言い換えると「正解ラベルに合わせる分と、温度を上げてぼかした教師の分布に合わせる分を、 の割合で混ぜる」だけです。 は正解ラベル、 は交差エントロピー、 は学生の確率、・ は温度 でならした教師・学生の分布、 は2つの分布のズレを測る量(KL情報量を1から)です。
温度 は softmax に入る値を で割る操作で、 を上げるほど分布は平らになります。平らになると「1位ではないが2位の候補」の情報が浮かび上がり、そこに教師の知識が宿っている、というのが蒸留の出発点でした。式(1)の頭に付いている は補正項です。温度で割った分だけ勾配が に縮むので、掛け戻さないと温度を変えるたびに実効的な学習率が変わってしまうのです。
このレシピの強みは要求の少なさです。教師の重みが手に入らなくても、構造がまったく違っていても、語彙さえ共有していれば実行できます。だから「まずこれを試す」が既定の順序になります。
弱みは強みと対称で、出口の1点からしか情報が流れないこと。学生が深いと下のほうの層まで信号が届きにくく、教師が持っている「途中でどんな特徴に分解しているか」は、確率分布に潰れてしまってからでは復元できません。ここから先の3つのレシピは、いずれもこの一点への対処だと思って読めます。
レシピ2: 中間層蒸留 — 途中の下ごしらえを合わせる
出口だけでは足りないなら、途中も合わせよう、というのがFitNetの発想です。教師のある層の出力(hint)と、学生のある層の出力(guided layer)を直接近づけます。
この式が言っているのは要するに、比べる場所を出口から途中へ移した、というだけのことです。教師と学生の棚を1段ずつ選び、そこに載っているものがどれだけ違うかを罰する。出口の確率分布ではなく、答えを作る途中の中間生成物どうしを突き合わせています。
コメント
コメントにはログインが必要です