知識蒸留が、大規模な教師モデルからコンパクトな生徒モデルへ知能を転移させる仕組みを学びましょう。Ultralytics 最適化し、高速で効率的なエッジデプロイメントを実現します。
知識蒸留は機械学習における高度な技術であり、 「生徒」と呼ばれるコンパクトなニューラルネットワークを訓練し、 「教師」として知られるより大規模で複雑なネットワークの挙動と性能を再現させる。 このプロセスの主目的は モデル最適化であり、 開発者が重いアーキテクチャの予測能力を、 リソース制約のあるハードウェアへの展開に適した軽量モデルへ移行することを可能にする。教師の予測にエンコードされた豊富な情報を取り込むことで、 生徒モデルは生データのみで学習した場合よりも しばしば著しく高い精度を達成し、 高性能と効率性の間のギャップを効果的に埋める。
従来の教師あり学習では、モデルは 訓練データからの「ハードラベル」を用いて 訓練されます。ここで画像は明確に分類されます (例:100%「犬」かつ0%「猫」)。 しかし、事前学習済み教師モデルは、 全クラスに確率を割り当てるソフトマックス関数を通じて 出力を生成する。これらの確率分布は「ソフトラベル」または「暗黙的知識」として知られる。
例えば、教師モデルがオオカミの画像を分析した場合、90%がオオカミ、9%が犬、1%が猫と予測するかもしれない。この分布は、オオカミが犬と視覚的特徴を共有していることを示しており、これはハードラベルでは無視される文脈情報である。 ディスティレーション処理中、 生徒モデルは カルバック・ライブラダイバージェンスなどの損失関数を最小化し、 自身の予測を教師モデルのソフトラベルに整合させる。 ジェフリー・ヒントンの研究で普及したこの手法は、 生徒モデルの汎化能力向上と 小規模データセットにおける過学習の低減に寄与する。
計算リソースが限られているが、高い性能が不可欠な産業において、知識蒸留は極めて重要である。
知識蒸留は他の圧縮手法とは区別することが重要である。なぜなら、それらはモデルを根本的に異なる方法で変更するからである。
実用的なワークフローでは、まず軽量なアーキテクチャを生徒モデルとして選択します。 Ultralytics 、これらの効率的なモデルのトレーニングtrack 、 データセットを管理するために使用できます。以下は、コンパクトなYOLO26モデルの初期化の例です。 これはエッジ展開に最適であり、生徒ネットワークとして機能します:
from ultralytics import YOLO
# Load a lightweight YOLO26 nano model (acts as the student)
# The 'n' suffix denotes the nano version, optimized for speed
student_model = YOLO("yolo26n.pt")
# Train the model on a dataset
# In a custom distillation loop, the loss would be influenced by a teacher model
results = student_model.train(data="coco8.yaml", epochs=5, imgsz=640)