Steering Vectors
Векторы управления — это направления в пространстве активаций модели, которые изменяют её поведение при добавлении во время инференса без переобучения. Методы и код.
Вектор управления — это направление в пространстве активаций нейронной сети, соответствующее определённому понятию или поведению, например положительной тональности, отказу или лести. Добавление масштабированной копии вектора к скрытым активациям сети во время прямого прохода направляет выходные данные к этому поведению, а вычитание вектора отдаляет их от него; при этом веса модели не меняются. Этот метод относится к инженерии активаций и в основном применяется к большим языковым моделям (LLM). Он основан на наблюдении, что многие высокоуровневые понятия представлены в остаточном потоке примерно линейными направлениями. Остаточный поток — это текущая сумма активаций, которую каждый слой трансформера считывает и обновляет.
Как создают и применяют векторы управления#
Самый распространённый способ — вычислить разность средних. Исследователи подают в модель пары контрастных входных данных, одна из которых демонстрирует нужное поведение, а другая — нет, записывают активации выбранного слоя и усредняют разности. Метод Activation Addition (ActAdd), представленный Александром Мэттом Тёрнером и его коллегами в 2023 году, показал, что для изменения тональности GPT-2-XL достаточно одной пары, например «Любовь» и «Ненависть». Метод Contrastive Activation Addition (CAA) усредняет множество пар ответов с несколькими вариантами, чтобы усиливать или ослаблять у Llama 2 Chat такие проявления, как угодничество, галлюцинации и отказы, добавляя вектор на позиции каждого токена после запроса пользователя. Направления также можно получить с помощью линейных проб, главных компонент разностей или признаков разреженного автокодировщика.
При инференсе хук добавляет к выходу выбранного слоя произведение коэффициента на вектор. Обычно лучше всего работают промежуточные слои, а коэффициент задаёт силу воздействия: слишком маленький коэффициент не даёт заметного эффекта, а слишком большой превращает текст в повторы или бессмыслицу.
Эксперимент ActAdd умещается в несколько строк PyTorch с GPT-2 на 124 миллиона параметров из библиотеки Hugging Face Transformers. Хук прямого прохода добавляет вектор «Любовь» минус «Ненависть» к выходу блока 6, пока модель продолжает враждебный запрос:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
layer = 6
def activation(text):
"""Return the last token's activation at the output of the steering layer."""
with torch.no_grad():
outputs = model(**tokenizer(text, return_tensors="pt"), output_hidden_states=True)
return outputs.hidden_states[layer + 1][0, -1]
# Steering vector: activation difference between a contrastive pair of prompts
steering_vector = activation(" Love") - activation(" Hate")
prompt = tokenizer("I hate you because", return_tensors="pt")
for coeff in [0.0, 1.0]:
# Add the scaled vector to the layer's output at every position while generating
hook = model.transformer.h[layer].register_forward_hook(
lambda module, args, output: output + coeff * steering_vector
)
tokens = model.generate(**prompt, max_new_tokens=16, do_sample=False, pad_token_id=tokenizer.eos_token_id)
hook.remove()
print(f"coeff={coeff}: {tokenizer.decode(tokens[0])}")Без управления модель продолжает фразу: «Я ненавижу тебя, потому что я тебя ненавижу. Я ненавижу тебя, потому что я тебя ненавижу». При добавлении вектора с коэффициентом 1,0 то же жадное декодирование продолжается так: «Я ненавижу тебя, потому что ты хороший человек. Я люблю тебя. Я люблю тебя». В обоих запусках веса идентичны; изменились только активации одного слоя.
Векторы управления и смежные понятия#
- Векторы задач: разность между весами до и после тонкой настройки, добавляемая к модели для переноса навыка. Векторы задач изменяют веса один раз, а векторы управления — активации при каждом прямом проходе.
- Инженерия представлений (RepE): более широкий подход к чтению модели и управлению ею через внутренние представления. Векторы управления — основной инструмент управления в этом подходе.
- Промпт-инжиниринг: направляет поведение с помощью входного текста. Управление действует на внутренние активации, поэтому для него нужен доступ к внутренним компонентам модели; оно работает только с моделями с открытыми весами или системами самого провайдера.
- Тонкая настройка: навсегда меняет поведение, обучая веса методом градиентного спуска. Для создания вектора управления достаточно выполнить прямой проход на нескольких или нескольких сотнях примеров.
- Механистическая интерпретируемость: объясняет, как модели выполняют вычисления. Управление — один из инструментов проверки того, действительно ли найденное направление вызывает определённое поведение.
Примеры применения в реальных условиях#
Векторы управления — не только метод управления, но и инструмент исследования безопасности ИИ. В 13 открытых чат-моделях с числом параметров до 72 миллиардов отказ определяется одним направлением: его удаление заставляет модель перестать отказывать на вредоносные запросы, а добавление — отказывать на безвредные. Это показывает, насколько легко отменить обучение безопасности на уровне весов в открытых моделях.
Направления, связанные с правдивостью, уменьшают галлюцинации. Метод Inference-Time Intervention сдвигает активации нескольких голов внимания вдоль таких направлений, повышая правдивость модели Alpaca на бенчмарке TruthfulQA с 32,5% до 65,1%. Векторы личности Anthropic применяют тот же подход к чертам характера, например угодничеству, склонности к галлюцинациям и злонамеренности: эти черты отслеживаются при развёртывании, усиливающие их обучающие данные помечаются, а во время тонкой настройки поведение корректируется в противоположную сторону. В моделях рассуждений векторы, извлечённые из моделей DeepSeek-R1-Distill, управляют поведением при рассуждениях, например выражением неуверенности, проверкой примеров и возвращением к предыдущим шагам.
Модели компьютерного зрения также кодируют понятия в виде направлений; тот же подход применим к картам признаков сети компьютерного зрения. В Ultralytics YOLO26 функция model.embed() возвращает усреднённые пулингом активации каждого изображения для любого выбранного слоя. Это даёт активации отдельных изображений, необходимые для вычисления направления как разности средних для двух наборов изображений, например дневных и ночных сцен.
Ограничения#
Надёжность управления ниже, чем можно предположить по наиболее впечатляющим результатам. В исследовании обобщающей способности и надёжности векторов управления Дэниел Тан и его коллеги обнаружили, что эффективность управления сильно меняется от одного входа к другому, на результат могут влиять случайные признаки контрастных запросов, а небольшие разумные изменения запроса могут нарушить работу вектора. Управление также ухудшает беглость текста: в экспериментах ActAdd с тональностью перплексийная оценка несвязности текста с управлением была в 1,5–3 раза выше, чем без него.










