蒸留とは
蒸留(Knowledge Distillation、知識蒸留)は、大規模で高性能な教師モデル(Teacher Model)の知識を、より小さな生徒モデル(Student Model)に転移する技術です。2015年にジェフリー・ヒントンらによって提案されたこの手法は、モデル圧縮の重要な手法として広く利用されています。生徒モデルは教師モデルよりも小さいながら、教師の知識を効率的に吸収することで高い性能を維持できます。
蒸留の仕組み
通常の学習ではハードラベル(正解クラスのみが1、それ以外が0)を使用しますが、蒸留では教師モデルの出力確率分布(ソフトラベル)を学習目標とします。ソフトラベルにはクラス間の類似性に関する豊富な情報が含まれており、例えば「犬」の画像に対して「猫」の確率が「飛行機」の確率より高いという関係性を生徒モデルに伝えることができます。温度パラメータTを用いてソフトマックスの出力を滑らかにし、この情報をより効果的に伝達します。
蒸留の種類
蒸留にはさまざまなバリエーションがあります。応答ベースの蒸留(教師の出力を模倣)、特徴ベースの蒸留(中間層の特徴表現を模倣)、関係ベースの蒸留(データ間の関係性を模倣)などがあります。自己蒸留(Self-Distillation)は、同じモデルの異なるバージョンを教師と生徒として使用する手法です。
蒸留の応用
蒸留はBERTの軽量版であるDistilBERTや、大規模モデルの推論コスト削減に広く活用されています。エッジデバイスへのモデル展開、リアルタイム推論の実現、APIコストの削減など、実用的な動機から重要性が増しています。蒸留と量子化、枝刈りを組み合わせることで、より効果的なモデル圧縮が可能になります。