YOLO Vision 2026:
返回 Ultralytics 词汇表

Steering Vectors

探索转向向量 (Steering Vectors) 如何在无需重新训练的情况下实现对神经网络的实时控制。学习使用 Ultralytics YOLO26 进行激活工程。

引导向量代表神经网络隐激活空间中有意义的数学方向,对应于“礼貌”、“真实性”或特定的视觉特征等高级概念。通过在正向传递过程中从模型的内部状态中人工注入或减去这些向量,开发者可以预测性地控制和改变模型的行为,而无需更新任何底层权重。这项技术从根本上植根于激活工程,为从大型语言模型到视觉架构的深度学习系统提供零成本、推理时的控制。

引导向量的工作原理#

为了创建引导向量,研究人员通常使用一种称为对比激活加法(CAA)的方法。这涉及将一组对比数据对(例如要求模型“有帮助”的提示与要求其“有害”的提示)通过网络。这些对之间的激活函数输出差异在多个样本中取平均值,以隔离出张量空间中代表该概念的特定几何方向。

实时推理期间,使用简单的PyTorch张量加法,将该向量在特定层添加到隐藏状态或从隐藏状态中减去。缩放向量的强度允许实践者微调注入行为的强度。

区分引导向量与相关概念#

了解引导向量如何融入更广泛的机器学习领域,需要将它们与类似的方法论区分开来:

  • 任务向量 虽然任务向量通过在训练后修改实际的模型权重来合并功能,从而在权重空间中运行,但引导向量严格在运行时的激活空间中运行,使原始权重完全保持不变。
  • 表示工程(RepE) RepE是读取和控制内部认知状态的总体方法论框架,受到诸如人工智能安全中心等机构的大力研究。引导向量是RepE控制阶段中使用的特定数学工具。
  • 提示词工程 提示试图通过修改用户的输入文本或图像来引导行为。引导向量绕过了输入瓶颈,直接操纵模型的内部认知处理。
  • 微调 诸如人类反馈强化学习(RLHF)等传统的对齐方法通过梯度下降永久改变模型,需要大量计算,通常通过诸如Ultralytics Platform等云工具进行管理。引导向量完全避免了这种计算开销。

人工智能的实际应用#

动态引导模型的能力在现代人工智能管道中释放了显着的进展:

  • 增强AI安全性 通过隔离与“拒绝”或“无害”相关的引导向量,工程师可以强迫模型拒绝恶意指令。在OpenAI的对齐研究和Anthropic的可解释性研究的支持下,引导特定特征可以极大地改变AI的对话角色并确保严格的安全护栏。
  • 控制推理模型 关于先进思考架构的最新研究表明,引导向量可以调节内部推理链。实践者可以增加模型在复杂问题解决过程中表达不确定性或回溯错误的倾向。
  • 减轻AI偏见 通过提取代表特定社会偏见的向量,开发者可以在生成过程中减去这个方向。这有效地中和了偏见并在不重新训练的情况下提高了公平性,同时降低了LLM幻觉的可能性。
  • 引导计算机视觉系统 在视觉模型中,引导向量可以应用于特征图,以人工提高网络对关键目标的敏感度。例如,可以引导目标检测模型优先在恶劣天气条件下寻找行人。

使用 PyTorch 应用引导向量#

以下是在正向传递期间将激活引导干预应用于Ultralytics YOLO26模型的可运行示例。通过利用PyTorch前向钩子,你可以直接将自定义向量注入隐藏层。

import torch
from ultralytics import YOLO

# Load the recommended Ultralytics YOLO26 model for state-of-the-art vision tasks
model = YOLO("yolo26n.pt")


# Define a hook function to steer the internal activations
def steer_activations_hook(module, input, output):
    # Create a steering vector matching the output shape (for demonstration purposes)
    # In practice, this vector is pre-computed via Contrastive Activation Addition (CAA)
    steering_vector = torch.ones_like(output) * 0.1

    # Add the steering vector to the model's hidden states to alter behavior at inference
    return output + steering_vector


# Attach the hook to a middle layer (e.g., layer index 5) to inject the vector
handle = model.model.model[5].register_forward_hook(steer_activations_hook)

# Run inference on an image with the dynamically steered activations
results = model("https://ultralytics.com/images/bus.jpg")

# Remove the hook to restore the model to its original unsteered state
handle.remove()

Explore solutions

让我们一起构建 AI 的未来!

开启你的机器学习未来之旅