Task Arithmetic
タスク算術がウェイト更新を使用してモデルの挙動を編集する方法を紹介します。フル再トレーニングなしで、Ultralytics YOLO26においてタスクを統合したり、機能を忘却させたりする方法を学びましょう。
タスク算術(Task arithmetic)は、事前学習済みニューラルネットワークの動作を、特定の重み更新の加算または減算によって変更する高度な 機械学習 の手法です。モデルを一から完全に再学習させる代わりに、エンジニアはベースモデルとファインチューニング済みモデルの間の学習された差分を切り出すことができます。これらの差分は、本質的に特定機能や動作をカプセル化した方向性の更新です。これらの更新に対して加算や減算といった基本的な数学的操作を適用することで、開発者は ディープラーニング システムを動的に編集できます。このパラダイムは、タスク算術に関する最近の arXiv の研究 において大幅に注目を集めており、大規模モデルを新しい要件に適応させるための軽量かつ計算効率の高い方法を提供しています。
この概念の仕組み#
この手法の基盤は、ベースとなる事前学習済みモデルと、特定のデータセットで ファインチューニング を経たバージョンとの間の モデル重み の差分の計算に依存しています。この切り出された差分は、新しいスキルの局所的な表現になります。エンジニアは、PyTorch のステート辞書を直接操作する ことや、TensorFlow のトレーニング手法 を活用することで、これらの重みの差分をスケーリングおよび結合できます。たとえば、特定の重み更新を減算することで、モデルに学習済みの動作を「忘れ」させることができます。この概念は モデルの安全性に関する Anthropic の研究 で深く探求されています。
実社会での応用#
タスク算術は、現代の コンピュータビジョン および自然言語処理のパイプラインにおいて、いくつかの非常に効率的なワークフローを実現します。
- マルチタスク機能の統合: エンジニアは、Ultralytics YOLO26 のベースモデルを2つの異なるデータセットで独立してトレーニングさせることができます(1つは特殊な 物体検出 用、もう1つは 画像分類 用です)。両方のタスクの重み差分を計算し、それらをベースモデルに足し戻すことで、結果として得られるネットワークは、破滅的忘却を引き起こすことなく、両方のタスクを同時に実行できるようになります。
- AI の安全性のためのターゲットを絞ったアンラーニング: ビジョンモデルがトレーニングデータから意図せずバイアスのかかった特徴を学習した場合、研究者はバイアスのあるデータでコピーをファインチューニングし、特定の重み差分を抽出して、元のモデルからそれを減算することができます。さまざまな Google DeepMind の発見 で指摘されているように、これにより、モデルの一般的な 人工知能機能 を維持しながら、不要な動作を効果的に消去できます。
関連する概念との違い#
IEEE Xplore のアーカイブ または ACM デジタルライブラリ を閲覧していると、タスク算術を関連する手法と混同しやすくなります。
- タスクベクトル: これらは、算術プロセスの 中 で使用される実際の数学的テンソル(計算された重みの差分)です。タスク算術は、これらのベクトルを加算または減算する包括的なフレームワークです。
- モデルマージ: これは、複数のモデルを結合するためのより広範な用語です。算術はモデルをマージする1つの方法ですが、マージには複雑なルーティングネットワークやアンサンブルが含まれる場合もあります。
- 転移学習: Wikipedia の転移学習の概念 によると、これには1つのタスクからの知識を別のタスクの出発点として使用することが含まれ、通常はさらなるトレーニングループが必要になります。タスク算術は、追加のトレーニングループなしで、直接的な重みの計算のみを通じて動作を変更します。
算術演算の実装#
これらの モデル最適化戦略 を実際に適用するには、モデルの内部状態を慎重に管理する必要があります。以下は、PyTorch を使用して更新を計算および適用する例であり、最近のコンピュータビジョンの論文 で頻繁に議論されている手法です。
import torch
# Load the state dictionaries of the pre-trained base and fine-tuned models
base_weights = torch.load("yolo26_base.pt")
tuned_weights = torch.load("yolo26_tuned.pt")
# Calculate the task vector and add it back to the base model with a scaling factor
scaling_factor = 0.5
for key in base_weights.keys():
task_vector = tuned_weights[key] - base_weights[key]
base_weights[key] += scaling_factor * task_vector複雑な データアノテーション パイプラインや複数のファインチューニング済みモデルバージョンを管理するチームにとって、Ultralytics プラットフォーム は、クラウドトレーニングとシームレスなデプロイを監督するための合理化された環境を提供し、反復的なモデル改善の管理をはるかに効率的にします。






