用語集

知識の蒸留

ナレッジ・ディスティレーションがAIモデルを圧縮して推論を高速化し、精度を向上させ、エッジ・デバイスの展開を効率化する方法をご覧ください。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

知識蒸留とは、機械学習(ML)における手法の一つで、より大きく複雑なモデル(「教師」)の振る舞いを再現するために、より小さくコンパクトなモデル(「生徒」)を学習させるものである。主な目的は、大きな教師モデルによって学習された「知識」を、より小さな生徒モデルに伝達することであり、生徒が同等の性能を達成しながら、サイズと計算コストの点で大幅に効率化できるようにすることである。これは、モバイル機器やエッジAIシステムのようなリソースに制約のある環境でモデルを展開する場合に特に有効です。

知識蒸留の仕組み

Knowledge Distillationのコアとなる考え方は,元の教師モデルを訓練するために使用された真実のラベル(ハードターゲット)だけでなく,教師モデル自体によって生成された出力でも生徒モデルを訓練することである.多くの場合、これらの教師出力は「ソフトターゲット」- 教師の最終層(例えば、ソフトマックス関数の後)によって生成されたクラス確率または分布です。これらのソフト・ターゲットは、異なるクラス間の関係について、ハード・ラベルだけよりも豊かな情報を含んでいます。例えば、教師モデルはトラックの画像を70%トラック、25%車、5%バスと予測し、生徒が学習できるニュアンス情報を提供するかもしれません。生徒モデルの学習目的は、通常、標準的な損失関数(生徒の予測とグランドトゥルースを比較する)と蒸留損失(生徒の予測/ソフトターゲットを教師のソフトターゲットと比較する)を組み合わせます。このプロセスは、Hinton, Vinyals, and Deanの論文で最初に一般化されたもので、生徒が教師の推論プロセスを模倣するように効果的にガイドします。

利点と応用

知識蒸留にはいくつかの重要な利点がある:

  • モデルの圧縮:限られた容量のデバイスでモデルを展開するために重要な、より少ないメモリとストレージを必要とする軽量モデルの作成を可能にします。
  • 推論の高速化:より小さなモデルは一般的に推論をより高速に実行するため、以下を使用した物体検出のようなアプリケーションのリアルタイム推論が可能になります。 Ultralytics YOLOモデルをエッジプラットフォームで使用することができます。エッジAIデバイス上でコンピュータビジョンアプリケーションを展開するためのオプションを検討します。
  • 計算コストの削減:より小さなモデルをトレーニングし、実行することで、エネルギーと計算リソースをより少なく消費できます。
  • 知識転送: ImageNetのような膨大なデータセットで学習された可能性のある大規模モデルで学習された複雑な知識を、より小さなアーキテクチャに転送することを容易にする。

実際の応用例としては、以下のようなものがある:

  1. エッジコンピューティング:スマートフォンや組込みシステムのようなデバイスに高度なコンピュータビジョンモデルを配置し、画像の分類や検出などのタスクを行う。YOLOv8xのような大規模で高精度なモデルは YOLOv8xは、YOLOv8nような小さな生徒の教師として機能します。
  2. 複雑なタスクの高速化: YOLO Vision 2023で強調されたように、大規模なファウンデーション・モデルは、詳細なデータ注釈付けのような負荷の高いタスクに使用することができ、その知識は、効率的な展開のために、より小さく、より高速なモデルに抽出され、データ・ラベリングのようなプロセスを大幅にスピードアップします。
  3. 自然言語処理(NLP): BERTや GPTのような大規模な言語モデルをより小さなバージョンに圧縮し、ユーザー・デバイス上でより高速なテキスト分析や翻訳を実現します。

関連概念

知識蒸留は、他のモデル最適化技法と関連していますが、そのアプローチは異なります:

  • モデルの刈り込みすでに学習済みのネットワークから冗長なパラメータ(重みまたは接続)を削除することで、モデルサイズを縮小する。KDは、より小さな別のネットワークを学習する。
  • モデルの量子化ウェイトとアクティベーションに低精度の数値フォーマット(例:FP32の代わりにINT8)を使用することで、モデルサイズを縮小し、計算を高速化する。KDとは異なり、モデル・アーキテクチャ自体は変更しない。これらの手法(モデルの最適化)は補完的であることが多く、併用することができます。
  • 転移学習あるタスクから得た知識を、関連する別のタスクに適用する、より広い概念。KDは、主に圧縮のために、同じタスクのための大きなモデルから小さなモデルへの知識の移転に焦点を当てた移転学習の特定の形態と見なすことができる。
すべて読む