同じ会社から、大きいモデルと小さいモデルが同時に出てきます。小さいほうは速くて安いのに、思ったより賢い。
その裏でよく使われているのが蒸留です。大きいモデルの判断のしかたを、小さいモデルに写し取ります。
元になった考え方
2015年3月、Geoffrey Hinton氏、Oriol Vinyals氏、Jeff Dean氏による論文 Distilling the Knowledge in a Neural Network が公開されました。
当時の課題は、精度を上げるために複数のモデルを訓練して答えを平均する手法が広く使われていた一方、それを実際の製品で動かすのが重すぎたことでした。
論文が示したのは、その集団が持っている知識を1つのモデルに圧縮でき、そのほうが配備しやすいということです。小さいモデルは、大きいほうの予測を真似ることで学びます。
正解だけでなく、迷いを教える
肝は、何を教材にするかにあります。
普通の学習では、正解だけを教えます。この画像は猫である、と。他の選択肢はすべて等しく間違いとして扱われる。
蒸留では、大きいモデルが出した確率の分布そのものを渡します。猫が90%、犬が7%、車が0.01%。ここには「猫と犬は似ているが、猫と車は似ていない」という情報が含まれています。
正解だけを教えていたら伝わらない部分です。どこで迷ったかを一緒に渡すことで、小さいモデルは判断の勘所を受け取れます。
教える側を教師モデル、教わる側を生徒モデルと呼びます。
なぜ小さくても成立するのか
大きいモデルの能力の大半は、学習の過程で必要とされたものです。膨大なデータから何が重要かを見つけ出すには、余裕のある大きさが要ります。
見つけ出したあとの、答えを出すという仕事だけなら、それほどの大きさは要らない。学ぶために必要な容量と、使うために必要な容量が違う、という話です。
蒸留は、その差分を利用しています。探索の苦労は大きいモデルが済ませ、結果だけを小さいモデルが受け取る。
利用者から見て何が変わるか
| 大きいモデル | 蒸留された小さいモデル | |
|---|---|---|
| 料金 | 高い | 数分の1から数十分の1 |
| 速度 | 遅い | 速い |
| 手元で動かす | 難しい | できる場合がある |
| 得意な範囲 | 広い | 教わった範囲に寄る |
最後の行が実務では重要です。小さいモデルは、教わった種類の仕事では大きいモデルに迫りますが、想定外の仕事では差が出ます。
分類や抽出のように、やることが決まっている処理なら小さいモデルで足ります。何を聞かれるか分からない相談窓口のような用途では、差が表に出やすい。
温度を上げて教える
蒸留には、教える側の出力をわざと平らにする工夫があります。温度という設定を高くして、教師モデルに答えさせるのです。
温度を上げると、確率の差が縮まります。猫90%・犬7%だったものが、猫60%・犬25%のようになる。
なぜそうするのか。教師の出力が尖りすぎていると、正解以外の確率がほぼゼロになり、せっかくの「どこで迷ったか」という情報が消えてしまうからです。平らにしてやることで、その差が生徒にも見える大きさになります。
呼び名の由来もここにあります。熱を加えて成分を移し取る、という比喩です。
同じ会社の大小モデルを見るときの目安
提供元が蒸留したと明言していない場合も多いので、外から断定はできません。それでも判断の材料はあります。
同じ日に大小のモデルが同時に公開され、小さいほうの性能が価格に比べて不自然に高い。この形は、大きいほうを教師にしている可能性を示します。
選ぶときに見るべきなのは、ベンチマークの総合点ではなく、自分の仕事に近い項目の点数でしょう。総合点で1割の差なら小さいほうで足りると判断しても、自分の用途では3割違う、ということが起こります。
確かめ方は単純です。手元の実際の入力を20件ほど用意し、両方に処理させて出力を並べる。差が許容できるなら安いほうを使えばいい。
カタログの数字を眺めて悩むより、20件試すほうが早く答えが出ます。
自社の用途に合わせて蒸留する
提供元が作った小さいモデルを使うだけでなく、自分で蒸留する選択肢もあります。
手順としては、大きいモデルに自社の実際の入力を処理させ、その出力を教材にして小さいモデルを訓練します。特定の業務に特化した、安くて速いモデルができあがる形です。
ここで確認が要るのが、使うモデルの利用規約です。出力を別のモデルの学習に使うことを制限しているライセンスは珍しくありません。技術的に可能でも、契約上できない場合があります。
試す前に規約を読む。順番を逆にすると、動くものを作ったあとで捨てることになります。
出典
蒸留の考え方についての記述は、下記の原論文に基づきます。実装面の説明は、NVIDIAの公式ドキュメントもあわせて参照しました。

