知識蒸留とは?
数千億パラメータもある巨大なAIモデルを、スマホで動かそうと思ったことはありますか?PCのファンを全力疾走させても、とてもじゃないけど無理です。しかし現実のアプリでは、ユーザーを何十秒も待たせるわけにはいきません。そこで考え出されたのが、巨大モデルを「先生」、小さなモデルを「生徒」にして、先生の知恵を生徒に凝縮して詰め込むという技です。これが知識蒸留です。
では、どうやって「詰め込む」のか?先生の最終的な回答だけを生徒に暗記させるのでは、単なるコピペで芸がありません。本当のやり方はこうです:先生がデータを処理するとき、単に正解ラベルだけでなく、内部で持っている「確率分布」も出力します。例えば画像認識で、先生が「犬」を0.85、「狼」を0.12、「狐」を0.03と判断したとします。生徒は「これは犬だ」と学ぶだけでなく、0.85、0.12、0.03という比率そのものを学びます。この確率の並びには先生の「思考の跡」が含まれています—犬は自動車より狼に近い、という知識です。生徒はその関係性まで丸ごと吸収することで、はるかに少ないパラメータで先生の8〜9割の性能を達成できます。
メリットは明白です:モデルが小さく、高速で、メモリも電気代も節約でき、スマホやブラウザ、組み込み機器に搭載できます。欠点は?蒸留自体にもそれなりの時間と計算資源がかかりますし、生徒が先生を超えることは決してできません。さらに最悪なのは、先生に偏りや幻覚があれば、生徒がそのまま受け継いでしまうことです。
知識蒸留はAI界の「格安版」です。わずかな性能低下と引き換えに、コストと速度を劇的に改善します。理想ではなく、現実の制約から生まれた現実解です。
コメント