Task Vectors
タスクベクトルが効率的なモデル統合と挙動制御をどのように可能にするか学びます。ゼロショットのマルチタスクに向けて、Ultralytics YOLO26のウェイトを操作する方法を発見しましょう。
Task vectorsは、新しい機能を達成するためにファインチューニング中にneural network's重みになされた特定の変更を表します。foundational base modelのパラメータからファインチューニングされたモデルのパラメータを減算することで、研究者はその特定のタスクのために学習された動作をカプセル化する重み空間内の方向ベクトルを分離できます。このアプローチにより、開発者はモデルパラメータに対する単純なarithmetic operations on model parametersを適用して、追加のトレーニング計算を必要とせずにモデルの動作を制御、変更、またはマージできます。
Link to this sectionTask Vectorsと転移学習の違い#
transfer learningの概念は、既存の知識を適応させるために新しいデータセットでモデルを順次トレーニングすることを含みますが、task vectorsはトレーニング後のモデルの構造的な重みに直接作用します。新しいドメインを学習するために勾配を再トレーニングする代わりに、task vectorsを使用したweight space interpolationにより、実務者は個別にトレーニングされた複数のモデルからの重みの差分を線形に結合できます。これによりゼロショットのmodel mergingが可能になり、単一のモデルが複数の機能を同時に継承できるため、典型的なcomputational overhead during trainingを回避できます。
Link to this section実社会での応用#
deep learningモデルを代数的に操作する能力は、現代のAIパイプライン全体でいくつかの影響力のあるアプリケーションにつながっています。
- Multi-Task Model Merging: エンジニアは、object detection用に最適化されたtask vectorと、image segmentation用にトレーニングされた別のベクトルを結合できます。Ultralytics YOLO26ベースモデルに適用すると、各元のファインチューニングの長所を維持しながら、両方のタスクで同時に優れた能力を発揮するデュアルパーパスなアーキテクチャが作成されます。
- Machine Unlearning and AI Safety: モデルが偏った、または危険な出力を示す場合、研究者はその特定の望ましくない動作を表すtask vectorを計算できます。このベクトルをモデルの重みから減算することで、その動作を効果的に「消去」でき、AI safetyの向上と堅牢なAI ethics基準に大きく貢献します。
- Domain Adaptation in Computer Vision: 特定の環境(昼間から夜間へのreal-time inferenceの切り替えなど)に合わせてモデルを適応させる際、task vectorsを使用すると、ユーザーは適応の大きさをスケーリングできます。ベクトルの一部(例:スケーリング係数0.5)を適用することで、両方のドメインで優れたパフォーマンスを発揮するバランスの取れたモデルが得られます。
Link to this sectionPyTorchにおけるTask Vectorsの使用#
task vectorを作成および適用するには、PyTorch state dictionaryにアクセスして操作する必要があります。以下の例は、ファインチューニングされたYOLO26モデルからtask vectorを抽出し、特定のスケール係数でベースモデルに適用する方法を示しています。
from ultralytics import YOLO
# Load the state dictionaries for the base and fine-tuned models
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# Calculate the task vector (tuned weights minus base weights)
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights.keys()}
# Apply the task vector to the base model using a 0.5 scaling factor
for k in base_weights.keys():
base_weights[k] += 0.5 * task_vector[k]Link to this section重み操作の未来#
large language modelsや大規模なvision transformersのようなアーキテクチャのパラメータ数が増加するにつれて、わずかな調整のためにそれらを再トレーニングすることは経済的に実行不可能になります。Task vectorsは、トレーニング後のmodel optimizationのための数学的に洗練された代替手段を提供します。数ギガバイトにも及ぶモデル全体を共有する代わりに軽量なtask vectorsを共有することで、AIコミュニティはopen-source collaboration in AIを加速できます。カスタムtask vectorsが洗練されたら、Ultralytics Platformを利用することで、その後のmodel deploymentおよび監視プロセスが簡素化され、最適化された重みが直接プロダクション対応のエンドポイントに変換されることが保証されます。






