知識蒸留とは - Shinichi0713/LLM-fundamental-study GitHub Wiki
概要
大規模なAIモデルが持つ知識を圧縮して、小さなAIモデルに伝える方法。 知識蒸留により、小さなAIモデルでも、大規模AIモデルに匹敵する性能を得ることが出来る。
小さいモデルでも性能が良い理由
AIモデルの蒸留(Knowledge Distillation)は、より大きなモデル(教師モデル、ティーチャーモデル)から学んだ知識を、より小さなモデル(生徒モデル、スチューデントモデル)に伝えるプロセスです。この方法によって、小さいモデルが大きなモデルと同程度の性能を発揮できる理由はいくつかあります。
-
ソフトターゲットの利用 大きなモデルは、各クラスの予測確率(ソフトターゲット)を提供します。これにより、小さなモデルは、単に正解ラベル(ハードターゲット)を学ぶだけでなく、クラス間の相対的な関係も学習します。例えば、ある画像が「犬」である確率が0.8、「猫」である確率が0.1、「ウサギ」である確率が0.05というように、大きなモデルはより多くの情報を提供します。この追加情報は、小さなモデルがより良い一般化能力を持つように助けます。
-
知識の圧縮 大きなモデルは、より多くのパラメータと層を持つため、データの複雑なパターンを捉える能力があります。蒸留プロセスでは、大きなモデルが捉えたこれらの複雑なパターンを、小さなモデルに圧縮して伝えます。これにより、小さなモデルは、直接学習するよりも効率的に重要な特徴を学ぶことができます。
-
正則化効果 蒸留は、ある種の正則化効果を持ちます。大きなモデルの予測確率は、トレーニングデータに対する過剰適合(オーバーフィッティング)を減少させるのに役立ちます。これは、小さなモデルがより一般化されたパターンを学習し、未知のデータに対しても良好な性能を発揮するのに役立ちます。
-
トレーニングの安定性 大きなモデルの予測確率を使用することで、小さなモデルのトレーニングがより安定します。ソフトターゲットは、ハードターゲットよりも滑らかであり、勾配の変動が減少します。これにより、トレーニングプロセスが安定し、効率的に進行します。
-
多様な情報源の統合 大きなモデルは、トレーニングデータの多様な側面を捉えることができます。蒸留プロセスを通じて、小さなモデルはこれらの多様な情報源を統合し、より豊かな知識を得ることができます。これにより、単にデータから直接学習するよりも、より効果的に学習が進みます。
ソフトターゲットの有用性
-
リッチな情報の提供 教師モデルが予測する確率分布は、単なる正解ラベルよりも多くの情報を含んでいます。確率分布は、各クラスに対するモデルの自信度を示しており、クラス間の関係性や曖昧さを反映しています。このリッチな情報を生徒モデルに提供することで、生徒モデルはより深い学習が可能になります。
-
スムーズな損失関数 ソフトターゲットは連続的な値を持つため、損失関数が滑らかになります。これにより、勾配降下法による最適化が安定しやすくなり、学習がスムーズに進行します。
-
クラス間の関係性の学習 教師モデルの予測確率は、各クラス間の関係性を反映しています。例えば、ある画像が犬と猫の両方に似ている場合、教師モデルは犬と猫の両方に高い確率を割り当てるかもしれません。生徒モデルはこの関係性を学習することで、より一般化能力の高いモデルとなります。
-
過学習の防止 ソフトターゲットを使用することで、モデルがトレーニングデータに過度に適合するのを防ぐことができます。これは、ソフトターゲットがラベルの硬い境界を和らげ、モデルがデータのノイズに過度に適応するのを防ぐためです。
-
効率的な学習 教師モデルが大規模で高性能な場合、その知識を効率的に生徒モデルに伝えることができます。これは特にリソースが限られた環境で有効であり、小さな生徒モデルが大きな教師モデルの性能に近づくことができます。
-
温度スケーリングの効果 温度スケーリングを適用することで、確率分布の平滑化を行い、クラス間の確率の差異を強調または緩和することができます。これにより、生徒モデルの学習がさらに安定し、重要な関係性を強調することができます。
デメリット
大規模なAIは、多様な文脈や状況に応じて柔軟に対応できますが、蒸留によって軽量化されたAIは、特定のタスクには強くても、汎用性が低下する可能性があります。そのため、知識蒸留を行う際には、「どの情報を残すか、どの情報を削るか」を慎重に判断する必要があります。