Task Vectors
学习任务向量如何实现高效的模型合并和行为引导。发现如何操作 Ultralytics YOLO26 权重以进行零样本多任务处理。
Task vectors 代表微调期间对 neural network's 权重所做的特定更改,以实现新功能。通过从微调模型的参数中减去 foundational base model 的参数,研究人员可以隔离权重空间中的方向向量,该向量封装了该特定任务的学习行为。这种方法允许开发者对 arithmetic operations on model parameters 应用简单的算术运算来引导、修改或合并模型行为,而无需额外的训练计算。
任务向量与迁移学习的区别#
虽然 transfer learning 的概念涉及在新数据集上顺序训练模型以使其适应现有知识,但 task vectors 在训练后直接对模型的结构权重进行操作。使用 task vectors 的 weight space interpolation 允许从业者线性组合来自多个独立训练模型的权重差异,而不是重新训练梯度来学习新领域。这实现了零样本 model merging,允许单个模型同时继承多种功能,而没有典型的 computational overhead during training。
实际应用#
代数化操作 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 的缩放因子)可以产生在两个域中都表现良好的平衡模型。
在PyTorch中使用任务向量#
创建和应用任务向量需要访问并操作 PyTorch state dictionary。以下示例演示了如何从微调后的 Ultralytics YOLO26 模型中提取任务向量,并以特定的缩放因子将其应用回基础模型。
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]权重操作的未来#
随着 large language models 和海量视觉 transformer 等架构的参数数量增长,为每个微调调整重新训练它们在经济上变得不可行。Task vectors 为训练后 model optimization 提供了一种数学上优雅的替代方案。通过共享轻量级 task vectors 而不是整个多 GB 模型,AI 社区可以加速 open-source collaboration in AI。一旦你的自定义 task vectors 得到完善,利用 Ultralytics Platform 可以简化后续的 model deployment 和监控过程,确保你的优化权重直接转化为生产就绪的端点。






