返回 Ultralytics 术语表
Task Vectors
任务向量是微调模型与基础模型权重之间的差值,用于捕捉单项技能,以便添加、移除或合并。介绍其用途。
任务向量表示神经网络在微调过程中为获得新能力而产生的特定权重变化。研究人员可以从微调模型的参数中减去基础模型的参数,从而在权重空间中分离出一个方向性向量,用来封装特定任务所学到的行为。这种方法让开发者可以对模型参数进行简单的算术运算,以引导、修改或合并模型行为,而无需额外的训练计算。
任务向量与迁移学习的区别#
迁移学习涉及在新数据集上依次训练模型,以适应现有知识;而任务向量则是在训练后直接作用于模型的结构权重。无需通过重新训练梯度来学习新领域,使用任务向量进行权重空间插值,从而线性组合多个独立训练模型的权重差异。这种方法支持零样本模型合并,让单个模型能够同时继承多种能力,而无需承担通常发生在训练过程中的计算开销。
实际应用#
以代数方式操纵深度学习模型的能力,已在现代 AI 流水线中催生了多种重要应用:
- 多任务模型合并:工程师可以合并同一基础模型的不同微调所得任务向量,例如在不同数据集上训练的两个目标检测模型;任务向量只能在架构完全相同的模型之间合并,因此检测模型的微调版本不能与图像分割模型合并。将这种方法应用于 Ultralytics YOLO26基础模型后,可以得到一个兼具各个原始微调模型优势的单一模型。
- 机器遗忘与 AI 安全: 如果模型表现出有偏见或危险的输出,研究人员可以计算代表这种特定不良行为的任务向量。从模型权重中减去该向量,就能有效“抹去”这种行为,从而大力推动AI 安全和稳健的AI 伦理标准。
- 计算机视觉中的领域自适应: 在将模型适配到特定环境时,例如从白天切换到夜间实时推理,任务向量允许用户调整适配幅度。应用部分向量(例如缩放因子为 0.5)可以得到一个在两个领域中都表现良好的平衡模型。
在 PyTorch 中使用任务向量#
创建并应用任务向量需要访问并操作 PyTorch 状态字典。以下示例演示了如何从经过微调的 Ultralytics YOLO26 模型中提取任务向量,并使用特定缩放因子将其应用回基础模型。
from ultralytics import YOLO
# 加载基础模型和微调模型的状态字典
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# 计算任务向量(微调权重减去基础权重),跳过整数缓冲区
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights if base_weights[k].is_floating_point()}
# 使用 0.5 的缩放因子将任务向量应用于基础模型
for k, delta in task_vector.items():
base_weights[k] += 0.5 * delta权重操作的未来发展#
随着大型语言模型和大型视觉 Transformer 等架构的参数量不断增长,为每个细微调整重新训练模型在经济上变得难以承受。任务向量为训练后的模型优化提供了一种数学上优雅的替代方案。AI 社区可以通过分享轻量级任务向量,而非整个数 GB 的模型,加速 AI 开源协作。自定义任务向量优化完成后,使用 Ultralytics Platform可以简化后续的模型部署和监控流程,确保优化后的权重能直接用于生产环境的端点。










