知識蒸留Knowledge Distillation
大きなモデルの判断を小さなモデルへ移す方法
- 知識蒸留はうまくいく大きなモデルの判断を小さなモデルにまねさせて、小さな体で近い性能を出す方法です。
- 小さいほうは正解だけを見て学ぶのではありません。大きいほうが候補の中でどれだけ揺れたかまで一緒に受け取って学びます。
- その揺れ具合には正解表にない情報が入っています。どれとどれが紛らわしく、どれとどれはまったく紛らわしくないかが入っています。
- 揺れ具合があまりに一方に偏って見えないときは、目盛りを広く伸ばして差を見せてから学ばせます。
- 大きさを減らす他の方法と一緒に使います。値の目盛りを粗くする方法、あまり使われない結びつきを切り落とす方法と目的が同じです。
目次
1たとえで理解する
産地の大きな果物選別機は、一粒が通るたびに重さと糖度と色と傷をすべて測って等級を付けます。この機械を近所の店に置くことはできません。場所も値段も見合わないからです。そこでこうします。大きな機械に果物数万粒を通して判定結果をそっくり記録しておくのです。そのあと、カメラ一台で見た目だけを見る小さな機械にその記録を見せながら、同じ判定が出るように合わせます。ここに一つこつがあります。大きな機械が「特級寄りに大きく傾いているが上級の可能性も少し残る」と残したあいまいな判定まで、そのまま渡すことです。**この迷いの中に等級どうしの距離が入っているからです。**知識蒸留がしているのはこの移し替えです。
2くわしく
大きいほうを先生に、小さいほうを合わせます
蒸留には二つのモデルが出てきます。すでによく学習された大きなモデルと、新しく作ろうとする小さなモデルです。大きいほうを先生、小さいほうを生徒と呼びます。学習資料を両方のモデルに同じように入れ、生徒の出力が先生の出力に近づくよう生徒だけを直していきます。先生には手を加えません。
ここで資料に正解が付いている必要がないことが大きな利点になります。人が一つひとつ答えを付けていない資料でも、先生に通すだけで学ぶ材料が生まれるからです。ラベルの付いた資料はいつも足りませんが、ラベルのない資料はあふれています。
正解表にないものが入っています
正解だけを見て学ぶ方式では、「この粒は特級」という事実一つだけが伝わります。残りの等級は全部同じく違うものとして扱われます。先生の判定にはそれよりずっと多くのものが入っています。特級寄りに大きく傾きながら上級にもいくらか重みが残り、廃棄側にはほぼ0が付いている、といった具合です。
この形が教えてくれるのは等級どうしの距離です。特級と上級は紛らわしいが特級と廃棄はまったく紛らわしくないという事実が、数字の形に刻まれています。生徒は正解一つではなくこの形全体をまねることで、ずっと少ない資料でも近い判断を身につけます。
目盛りを広く伸ばして見せる
よく学習された先生ほど判定が一方に大きく偏ります。特級にほとんど全部が集まり、残りにはごくわずかな値しか残りません。このまま渡すと、生徒の目には正解一つしか見えないのとあまり変わりません。せっかく入っていた情報が小さすぎて埋もれてしまいます。
そこで目盛りを一時的に広く伸ばします。値どうしの差をなだらかに押さえて小さな値まで見えるようにしてから生徒に渡すのです。生徒側の出力も同じ目盛りで合わせて見比べ、学び終えたら元の目盛りに戻します。広げすぎると全部の等級が似たり寄ったりになって学ぶことがなくなり、狭いままだと情報が埋もれます。この幅を調節することが蒸留のこつです。
どこまで減らせるか
大きさを大きく減らしても性能はかなり保てます。層の数を減らしたり層の幅を狭めたりした生徒を作り、先生複数の判定を平均して渡すこともあります。最後の出力だけをまねさせる代わりに、途中の層の形まで合わせさせると、より良く移る場合が多いです。
得られるのは速さと費用です。小さなモデルは答えが速く出て、メモリを少なく使い、ノートパソコンや手のひらサイズの機器でも動きます。大きさを減らす他の方法と一緒に使うこともあります。値を粗く表して容量を減らす量子化、ほとんど使われない結びつきを切り落とす剪定と目的は同じで、互いに重なりません。
移らないもの
蒸留で移るのは、先生がすでにうまくやれている範囲の判断です。先生が迷う場所では生徒も同じように迷います。先生の偏りや悪い癖もそのまま付いてきます。生徒は先生をまねることが目標なので、先生が間違った方向に傾いていれば、その傾きまで学びます。
広く深い知識を求める仕事では、差がまた開くこともあります。よく出る状況では小さなモデルが先生とほぼ同じ答えを出しますが、まれで難しい状況では体の大きさの差が現れます。だから蒸留は大きなモデルをなくす方法ではなく、よく使う仕事を安く処理する相棒を作る方法に近いです。
3もう少し正確に
知識蒸留(Knowledge Distillation)は、先生モデルの出力分布を生徒モデルがまねるように学習させる方法です。正解一つだけを示すラベルをハードラベル、先生が出した分布をソフトラベルと呼びます。分布をなだらかに伸ばす値を温度と呼び、生徒の損失はソフトラベルをまねる項と実際の正解を当てる項を混ぜて作ることが多いです。出力だけでなく途中の層の表現を合わせる方式は特徴蒸留と呼ばれます。
たとえがずれる点もあります。果物選別機は重さと糖度という決まった項目を測りますが、大きなモデルが何を根拠に判断しているかは人が項目として書き出せません。だから移し替えているのは根拠ではなく結果の形です。また選別機の判定には秤という確かな基準がありますが、先生モデルの判定はそれ自体が推測です。先生が間違った場所では、生徒が間違った答えを丁寧に学んでしまいます。
4やってみる
5よくある誤解
蒸留すれば大きなモデルと同じ実力になると思われがちですが、実際にはよく出る状況で近づくだけで、まれで難しい状況では差が現れます。
蒸留はモデルを圧縮する技術だと考えられがちですが、実際には大きなモデルを縮めるのではなく、小さなモデルを新しく学習させる方法です。
先生の正解だけ受け取って学べばよいと信じられがちですが、実際には候補の中でどれだけ揺れたかまで受け取ってこそ蒸留の利点が生きます。
7ひとこと要約
つまり知識蒸留は、大きなモデルが出した判断の形を小さなモデルがまねて学ぶことで、小さな体で近い答えを出せるようにする方法です。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02