了解任务向量如何实现高效的模型融合和行为引导。探索如何调整Ultralytics 的权重以实现零样本多任务学习。
任务向量代表了在微调过程中对 神经网络权重所做的具体调整, 以实现新的能力。 通过将微调后模型的参数 减去基础模型的参数, 研究人员可以在权重空间中分离出一个方向向量,该向量封装了针对该 特定任务所学习的行为。这种方法使开发者能够对模型参数 进行简单的 算术运算,从而引导、修改或合并模型行为,而无需额外的训练计算资源。
虽然迁移学习的概念涉及 在新的数据集上对模型进行序列化训练以适应其现有知识,但任务向量直接作用于 模型训练后的结构权重。 与通过重新训练梯度来学习新领域不同, 利用任务向量进行权重空间插值,使从业者能够 线性组合多个独立训练模型的权重差异。这实现了零样本 模型融合,使单个模型能够同时继承 多种能力,且无需承受训练过程中通常存在的 计算开销。
能够通过代数方法操作深度学习模型 这一能力已在现代人工智能管道中催生了多项具有深远影响的应用:
创建和应用任务向量需要访问并操作 PyTorch 字典。 以下示例演示了如何从微调后的 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]
随着 大型语言模型和巨型视觉 变换器等架构的参数数量不断增加,为每次微小的调整而重新训练它们在经济上已不再可行。任务 任务向量为模型训练后的 优化提供了数学上优雅的替代方案。通过共享 轻量级的任务向量而非整个数GB级的模型,AI 社区能够加速 AI 领域的开源协作。一旦 您的自定义任务向量得到优化,利用 Ultralytics 即可简化后续的 模型部署和监控流程, 确保您的优化权重能直接转化为生产就绪的端点。
开启您的机器学习未来之旅