蒸留(Knowledge Distillation)
じょうりゅう ・ 別表記: Knowledge Distillation / 知識蒸留 / モデル蒸留
蒸留(Knowledge Distillation)とは、大きなモデル(先生)の知識を、小さなモデル(生徒)に学ばせて軽量化する手法です。少ない資源で動かせます。意味・特徴を解説します。
蒸留(Knowledge Distillation)とは
蒸留(Knowledge Distillation)とは、大きなモデル(先生役)の知識を、小さなモデル(生徒役)に学ばせることで、軽量なモデルを作る手法のことです。
簡単に言うと、「賢いが大きいモデルの考え方を、小さなモデルに教え込む」やり方です。先生役モデルの出力をお手本にして生徒役モデルを学習させることで、小さくても先生に近い振る舞いをするモデルを作ります。
蒸留(Knowledge Distillation)は何のためのものか
高性能な大きいモデルは、動かすのに大きな計算資源が必要で、手元の機器や低コストな環境では扱いにくいことがあります。一方、ただ小さいモデルを一から学習しても、性能が足りないことがあります。
蒸留は、こうした課題に対し、大きいモデルの性能をできるだけ保ったまま軽量なモデルを得るために使われます。先生役の知識を生徒役に移すことで、小さくても実用的な性能のモデルを作る点に意味があります。
蒸留(Knowledge Distillation)の主な特徴
先生役の出力をお手本にする
生徒役モデルは、正解だけでなく、先生役モデルの出力(どの答えをどれくらい確からしいと考えたか)もお手本にして学びます。これにより、先生の判断の傾向まで学べます。
小さいモデルで性能を引き継ぐ
先生役の知識を引き継ぐことで、生徒役は小さいながらも、先生に近い性能を発揮しやすくなります。一から学習した小さいモデルより高い性能を狙えます。
軽量化を目的とする
蒸留の主な狙いは、性能を保ちつつモデルを軽くすることです。少ない資源で動かせるモデルを得るために使われます。
どのような場面で使われるのか
- 大きいモデルの性能を保ちつつ軽くしたいとき
- スマートフォンや手元の機器で動かすモデルを作りたいとき
- 推論のコストや応答の速さを改善したいとき
- 高性能モデルを現実的な資源で運用したいとき
これらの場面では、蒸留が「性能を保った軽量化」を担います。
具体的な例
軽量版モデルの作成
大きい高性能モデルを先生役にして、小さいモデルを学習させ、性能を保ちつつ軽い「軽量版」を作るといった使い方をします。
端末向けモデル
手元の端末で動かすために、大きいモデルの知識を小さいモデルに移して、限られた資源でも実用的に使えるようにします。
関連する用語
量子化(Quantization)
数値の精度を下げてモデルを軽くする手法です。蒸留と同じく軽量化を目的に使われます。
ファインチューニング
学習済みモデルを特定用途に調整することです。蒸留も学習を通じて小さいモデルを作ります。
パラメータ
モデルが学習で調整する内部の数値です。蒸留では、生徒役の少ないパラメータに知識を移します。
大規模言語モデル(LLM)
大量の文章で学習したモデルです。大きい LLM を先生役に、軽量版を作るのに蒸留が使われます。
似た用語との違い
「量子化(Quantization)」は、同じモデルの数値の精度を下げて軽くする手法です。これに対して「蒸留」は、大きいモデルの知識を別の小さいモデルに学ばせて軽くする手法です。数値を丸めて軽くするのが量子化、小さいモデルに作り替えるのが蒸留、と考えると整理しやすくなります。
利点と注意点
利点
- 大きいモデルの性能をできるだけ保ちつつ、軽量化できる
- 少ない資源で動く、実用的な小型モデルを作れる
注意点
- 生徒役は先生役の性能を完全には引き継げず、差が出ることがある
- 学習に先生役モデルと相応の手間が必要になる
まとめ
蒸留(Knowledge Distillation)とは、大きなモデルの知識を小さなモデルに学ばせて軽量化する手法です。
主に、大きいモデルの性能をできるだけ保ったまま、少ない資源で動くモデルを作るために使われます。
初心者のうちは、「蒸留は賢い大きいモデルの考え方を小さいモデルに教え込む手法で、性能を保ちつつ軽くできる」と理解しておけば十分です。