【もでるじょうりゅう】
モデル蒸留(知識蒸留) とは?
最終更新:
💡 先生モデルの答え方から、生徒モデルが学ぶ
教師モデルの出力などを使って、生徒モデルに振る舞いを学ばせる手法。小さいモデルへの能力の移し替えなどに使われるが、性能や費用の改善は条件による。
📌 このページのポイント
モデルの蒸留って、AIをぎゅっと縮めること?
教師モデルの出力などを使って、別の生徒モデルに振る舞いを学ばせる方法だよ。大きいモデルの働きを小さいモデルへ移す用途でよく説明されるけれど、教師の内部の重みをそのまま縮小コピーする、という意味ではないんだ。
正解の答えを教えるだけとは、何が違うの?
分類の例なら、「猫が正解」だけでなく「猫0.7、犬0.2、鳥0.1」のような教師の出力を使う方法があるよ。この数字は説明用の架空の例だけれど、犬と鳥のどちらに迷ったか、という情報も手掛かりになるんだ。こうした出力をソフトターゲットと呼ぶよ。
その確率は、本当に正しい割合なの?
教師モデルが出した値であって、現実の正しさを保証するものではないよ。蒸留は教師の答え方を学ぶので、教師の間違いや偏りが引き継がれる可能性も考えて、実際の用途で評価する必要があるんだ。
文章を作るAIでも使える?
小さくすれば、同じ性能のまま安くなる?
必ずそうなるとは限らないよ。小さい生徒モデルなら実行時の計算やメモリーを減らせる場合があるけれど、能力の一部が失われることもあるんだ。教師の回答を作る費用や学習の費用も含めて、必要な精度と実行環境で比べよう。
ファインチューニングとは別物なの?
見ている点が違うんだ。ファインチューニングは学習済みモデルを追加学習すること。蒸留は教師の出力などから学ばせる方法のことだよ。教師が作った回答で生徒をファインチューニングするなら、両方に当てはまるよ。
まとめ:ざっくりこれだけ覚えればOK!
「モデル蒸留」って出てきたら「先生モデルの答え方を別のモデルに学ばせる方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Model Distillation」 = モデルの知識を蒸留すること
💬 蒸留の比喩で、教師モデルの振る舞いを別のモデルに移す手法を表すよ。小型化だけでなく、複数モデルの働きを一つへ移す用途も研究されているよ。