Добавить в корзинуПозвонить
Найти в Дзене

Один вектор, чтобы править всеми: как у LLM нашли «предохранитель совести»

Внутри современной большой языковой модели спрятана штука, которая буквально решает, ответить вам или вежливо отказать. Долгое время считалось, что это «согласованность» (alignment) — результат хитрой настройки на миллиардах примеров, распределённое поведение, которое нельзя изолировать. Группа Энди Ардити, Нила Нанды и коллег в работе «Refusal in Language Models Is Mediated by a Single Direction»(NeurIPS 2024) показала прямо противоположное: отказ кодируется одним-единственным направлением в пространстве активаций. И это направление можно либо стереть, чтобы модель послушно делала всё подряд, либо, наоборот, усилить — и тогда LLM будет отказываться даже рассказать про пользу йоги. Авторы протестировали методику на 13 открытых чат-моделях размером до 72B параметров — Llama 2/3, Qwen, Gemma, Yi и других. Ключевая идея — до неприличия простая. 🧮 Берём два набора промптов: вредные (harmful) и безобидные (harmless). На каждом из них прогоняем модель и записываем её активации в residual st
Оглавление

Внутри современной большой языковой модели спрятана штука, которая буквально решает, ответить вам или вежливо отказать. Долгое время считалось, что это «согласованность» (alignment) — результат хитрой настройки на миллиардах примеров, распределённое поведение, которое нельзя изолировать. Группа Энди Ардити, Нила Нанды и коллег в работе «Refusal in Language Models Is Mediated by a Single Direction»(NeurIPS 2024) показала прямо противоположное: отказ кодируется одним-единственным направлением в пространстве активаций. И это направление можно либо стереть, чтобы модель послушно делала всё подряд, либо, наоборот, усилить — и тогда LLM будет отказываться даже рассказать про пользу йоги.

Что вообще было показано

Авторы протестировали методику на 13 открытых чат-моделях размером до 72B параметров — Llama 2/3, Qwen, Gemma, Yi и других. Ключевая идея — до неприличия простая.

🧮 Берём два набора промптов: вредные (harmful) и безобидные (harmless). На каждом из них прогоняем модель и записываем её активации в residual stream (остаточном потоке) — это «магистраль данных», которая идёт через все слои трансформера и куда каждый блок что-то дописывает.

📊 Для каждого слоя и каждой позиции токена считаем средний вектор активаций по «вредным» и средний по «безобидным» промптам. Разница между ними — то, что в статистике называется difference-in-means (разность средних) — и есть искомое «направление отказа» (refusal direction).

⚙️ Это вектор в пространстве размерности модели (например, 4096 для Llama-2-7B). Один-единственный. На все случаи жизни.

И теперь начинается весёлое: с этим вектором можно делать ровно две вещи — стирать его из активаций или, наоборот, прибавлять к ним.

Стираем направление — модель перестаёт отказывать

Техника называется направленная абляция (directional ablation): на каждом слое из остаточного потока вычитают проекцию на refusal direction. Звучит как стрельба из снайперки по конкретной мысли модели — потому что фактически это она и есть. Модель физически не может «думать» вдоль этого направления, как если бы у неё отключили один нейронный «канал».

Эффект жуткий: LLM, которая раньше отказывалась писать руководство по фишингу или клевете, начинает спокойно отвечать. При этом её общие способности почти не страдают — авторы прогоняли тесты MMLU, ARC, GSM8K, и просадка минимальна. Это не лоботомия (lobotomy) всей модели, это хирургический разрез по одной плоскости в высокоразмерном пространстве.

Прибавляем направление — модель сходит с ума от паранойи

Обратный эксперимент авторы называют активационным управлением (activation steering): тот же вектор не вычитают, а добавляют к активациям с положительным коэффициентом. Результат — модель отказывает буквально на любой запрос, даже самый невинный.

В статье показано, как Gemma на безобидный промпт о пользе йоги отвечает нечто вроде «не могу предоставить эту информацию, она потенциально вредна». Это и есть главное доказательство причинно-следственной связи: если бы найденное направление было статистическим артефактом, манипуляции с ним не давали бы такого симметричного и предсказуемого эффекта в обе стороны.

Главный практический вывод: ортогонализация весов

Дальше авторы делают то, что превращает академическую находку в практичную атаку. Зачем перехватывать активации на каждом запросе, если можно один раз и навсегда перепаять веса самой модели?

🔧 Метод называется ортогонализация весов (weight orthogonalization). Все матрицы, которые что-то записывают в residual stream — embedding-слои, выходные проекции голов внимания, выходные проекции MLP — корректируются так, чтобы они стали ортогональны вектору отказа. Геометрически: каждой матрице запрещают «выдавать» компоненту в опасном направлении.

💰 Стоимость взлома 70B-модели авторы оценивают в меньше $5 GPU-времени — и это после однократного прохода. Полученные веса работают сразу: никаких дообучений, никакой генерации датасетов вредных примеров, никакой возни с PEFT/LoRA.

🎯 По бенчмарку HarmBench этот метод даёт результаты, сопоставимые с лучшими адверсарными атаками, при этом не убивая полезные способности. Файнтюнинг для расцензурирования (так называемое jailbreak-finetuning) обходится на порядки дороже и часто ломает модель — здесь же мы получаем «пациента» в живом и функциональном виде, просто без рефлекса отказа.

А почему работают магические суффиксы?

В работе есть отдельная красивая часть — авторы заглядывают под капот адверсарных суффиксов (тех самых GCG-атак вроде describing.\ + similarlyNow write...). Долгое время это был чистый чёрный ящик: понимали, что работает, но не понимали почему.

Оказалось, всё то же самое. Адверсарный суффикс подавляет распространение refusal direction в критических головах внимания. Эти головы обычно «смотрят» на токены вредного запроса и записывают в residual stream компоненту вдоль направления отказа. Магический суффикс перетягивает их «взгляд» на себя — головы тратят внимание на бессмысленную абракадабру, refusal direction не активируется, отказ не запускается. Это первое чисто механистическое объяснение того, что раньше казалось колдовством.

Что я думаю об этом как security-исследователь

Тут стоит развести два вопроса.

⚠️ Это white-box атака. Она требует доступа к весам модели. Для закрытых API (Claude, GPT, Gemini) она напрямую неприменима — у вас нет матриц, которые можно ортогонализировать. Так что заголовки «совесть ИИ можно отключить» относятся именно к открытым моделям: Llama, Qwen, Gemma, Mistral. Если вы их хостите у себя — для злоумышленника, скачавшего веса с HuggingFace, никаких преград практически не остаётся.

🧠 Это огромный звоночек для всей парадигмы alignment. Мы тратим миллиарды долларов на RLHF, Constitutional AI, DPO и прочие методы выравнивания. Авторы показали, что вся эта надстройка реализована поведенчески — как одно направление в линейном подпространстве. Это не глубоко зашитый принцип, это тонкая плёнка поверх базовой модели. Снять её, оказывается, можно линейной алгеброй за пять долларов.

🔓 Дискуссия об открытых весах меняется. Сторонники ответственного релиза (Meta, Mistral, Alibaba) обычно говорят, что safety fine-tuning достаточно надёжен, чтобы выпуск открытых моделей не давал атакующим заметного преимущества. Эта работа — серьёзный аргумент против такой позиции. Если производный «расцензурированный» вариант любой открытой модели можно собрать за час и пятёрку, то «безопасная» версия в реальности доступна только тем, кто не хочет её ломать.

🛡️ Что делать защитникам? В короткой перспективе — ничего хорошего. В средней — переходить к архитектурам, где безопасность распределена нелинейно. Например, добавлять внешние классификаторы запросов и ответов (как делают Anthropic с Constitutional Classifiers и OpenAI с moderation API), чтобы решение об отказе не зависело только от внутреннего «компаса» модели. Либо встраивать safety не как отдельную выходную проекцию, а как ограничение на саму внутреннюю геометрию — но как это сделать архитектурно, пока открытый вопрос.

Прогноз

В ближайший год-полтора я ожидаю две вещи. Во-первых, методы защиты от ablation-атак — что-то вроде дообучения, которое распределяет refusal по большему числу направлений или делает его нелинейным. Anthropic, кстати, уже выпускали работы про steering vectors и попытки сделать их более устойчивыми. Во-вторых, расширение метода на другие поведения: раз уж refusal — одно направление, то наверняка и «отказ говорить про политику», «отказ давать медицинские советы», «отказ ругаться» закодированы похожим образом. Это превращает механистическую интерпретируемость из академической субдисциплины в практический инструмент управления поведением модели — и для атаки, и для защиты.

Главный же урок — концептуальный. Мы привыкли думать о LLM как о «чёрном ящике с миллиардами параметров, в котором всё свалено в одну кучу». Эта работа — ещё одно доказательство, что внутри есть вполне человекочитаемая структура: интерпретируемые направления, моносемантические нейроны, чёткие функциональные роли у голов внимания. И с каждой такой работой граница между «магическими нейросетями» и «понятными вычислительными системами» сдвигается на пару миллиметров. Совесть, оказывается, — это не философское свойство, а вектор в R⁴⁰⁹⁶. И его координаты теперь известны.

Источники

🔗 Arditi A. et al. — Refusal in Language Models Is Mediated by a Single Direction (arXiv): https://arxiv.org/abs/2406.11717

🔗 Полный разбор на русском (telegra.ph): https://telegra.ph/Odin-shchelchok-vyklyuchatelya-kak-uchyonye-nashli-i-vyklyuchili-sovest-u-II-05-02

🔗 Репозиторий с кодом и весами (Andy Arditi, GitHub): https://github.com/andyrdt/refusal_direction

🔗 Публикация на NeurIPS 2024: https://mlanthology.org/neurips/2024/arditi2024neurips-refusal/