04.08
Свежее красивейшее исследование от Anthropic: Persona Vectors в LLM
Помните, как GPT-4o после безобидного дотюнивания вдруг стал страшным подхалимом? Или как Grok начал объявлять себя Гитлером? Естественно, их не учили так себя вести напрямую, но по какой-то причине такая "личность" в них все равно проснулась.
Anthropic в своей новой работе обнаружили, что это далеко не случайность. Оказывается, в нейросетях есть так называемые persona vectors – векторы в пространстве активаций, отвечающие заданным чертам характера.
Более того, исследователи научились такие векторы находить просто по текстовому описанию черты. Пайплайн довольно простой:
1. Берем определенную характеристику (скажем, жестокость) и генерируем два системных промпта. Один «за» черту, другой — против (то есть "будь жестоким" и "не будь", только более развернуто).
2. Скармливаем разным экземплярам модели разные системные промпты и начинаем задавать специальные вопросы, провоцирующие проявление нужной характеристики.
3. Для каждого вопроса трекаем активации на каждом слое сети, усредняем по токенам. Разность таких средних активаций первого экземпляра модели со вторым даёт нужный нам вектор для каждого слоя. Также можно затрекать самый яркий слой, на котором вектор персоны дает максимальное влияние на результат.
Ну а после получения таких персо-векторов делать с ними вообще-то можно очень много всего. Например:
– Определять, какие данные активируют тот или иной persona vector. Например, если научить модель на числах 666 или 1488, она в целом станет безжалостной. И таких неочевидных корреляций, как оказалось, куча, а без таких аналитических инструментов обнаруживать их почти нереально.
– Управлять характером LLM на инференсе. Чтобы вызвать или подавить какую-то черту при генерации, нужно просто к активации h_ℓ на слое ℓ добавить α⋅v_ℓ, где v_ℓ – это persona vector. Например, если мы рассматриваем черту "злость", то при положительных α модель генерирует более агрессивные тексты, а при отрицательных – становится зайкой (доказано на Qwen2.5-7B и Llama-3.1-8B).
– Управлять самим обучением. Тут немного конринтуитивно, но это работает как вакцина. Чтобы избавиться от нежелательных черт модели, нам нужно, наоборот, проактивно инъецировать их в нее на каждом шаге обучения.
Конкретнее: на каждом шаге прямого прохода при обучении мы добавляем к активациям все то же α⋅v_ℓ, и получается, что градиенты по задаче next-token prediction накапливаются уже с учётом этого смещения; благодаря этому модель не должна самостоятельно перестраивать себя вдоль данного вектора персоны v_ℓ. Такой подход называется Preventative Steering, и это работает (и при этом надежнее, чем просто единоразовое подавление на инференсе).
В общем, в этот раз у Anthropic получилась исключительно интересная и многообещая работа, давненько такого не было. Будем следить, и, конечно, советуем почитать полностью 👇 Блогпост | Статья
еще контент в этом сообществе
еще контент в этом соообществе
04.08
войдите, чтобы увидеть
и подписаться на интересных профи