Перейти к содержимому
ПереводыAnthropic

Transformer Circuits: «Towards Monosemanticity» и «Scaling Monosemanticity» — конспект

Пересказ двух статей Anthropic о словарном обучении: разреженный автоэнкодер раскладывает 512 нейронов однослойного трансформера на тысячи понятных признаков (2023), а затем — активации Claude 3 Sonnet на 34 млн признаков: многоязычные и мультимодальные понятия, управление признаком моста Золотые Ворота, признаки, важные для безопасности, и пределы метода (2024).

Статья о суперпозиции закончилась выбором из трёх путей. Эти две работы — история успеха второго: взять обученную модель и после обучения найти «переполненный базис» признаков методом словарного обучения (dictionary learning), а конкретно — разреженным автоэнкодером (sparse autoencoder, SAE). В 2023 году метод доводят до убедительного результата на крошечной модели, в 2024-м — масштабируют на производственную модель Claude 3 Sonnet.

  • Нейрон — плохая единица анализа: в однослойной модели один нейрон реагирует и на научные ссылки, и на английский диалог, и на HTTP-запросы, и на корейский текст.
  • SAE раскладывает активации на признаки: кодировщик с ReLU переводит вектор активаций в длинный разреженный вектор «признаков», декодер собирает обратно; штраф L1 заставляет на каждом токене включаться лишь немногим.
  • 2023: 512 нейронов MLP однослойного трансформера дают от 512 до 131 072 признаков; признаки гораздо понятнее нейронов (медианная оценка человека: 12 против 0 по рубрике), признаки «расщепляются» при росте словаря, во многом универсальны между моделями и складываются в «конечные автоматы».
  • 2024: SAE на 1M, 4M и 34M признаков для среднего слоя Claude 3 Sonnet. Признаки абстрактные — многоязычные, мультимодальные, объединяют конкретное и абстрактное (код с уязвимостью и разговор об уязвимостях); ими можно управлять поведением модели (зажатый признак моста Золотые Ворота заставляет модель считать себя этим мостом).
  • Есть признаки, важные для безопасности (уязвимый код, предвзятость, угодничество, обман, опасный контент), но авторы предупреждают: само их существование ещё не делает метод полезным для безопасности.
  • Вместе с уроком 9.3.2 «Суперпозиция и разреженные автоэнкодеры»: в уроке SAE обучается на маленькой модели прямо в практике, есть Gemma Scope и Neuronpedia. Конспект даёт подробности двух статей, на которые урок ссылается.
  • До этого — конспект «Toy Models of Superposition».
  • После — урок 9.3.3 «Выравнивание» (признаки обмана и угодничества — мост к выравниванию) и графы атрибуции.
  • Что пропустить новичку. Приложения о тренировке SAE (пересэмплирование «мёртвых» признаков, гиперпараметры), подробные гистограммы специфичности, раздел о законах масштабирования SAE.

Почему не «просто сделать модель без суперпозиции»? Авторы пробовали все три пути из статьи о суперпозиции и пишут, что нашли контрпримеры: разреженные архитектуры не спасают от полисемантичности, а стандартные методы словарного обучения сильно переобучаются. Поэтому они берут «слабый» алгоритм словарного обучения — разреженный автоэнкодер.

Подопытная модель — однослойный трансформер с MLP на 512 нейронов. Почему однослойный: мало «истинных» признаков (словари поменьше их покрывают), его дёшево сильно переобучить (возможно, это даёт более чистые представления), а влияние признака на логиты почти линейно. Обучили две такие модели (A и B), отличающиеся только случайным зерном, — вторая нужна для проверки универсальности.

flowchart LR
X["Активации MLP, 512 чисел"] --> E["Кодировщик: линейный слой + ReLU"]
E --> F["Признаки: 4096 чисел, почти все нули"]
F --> D["Декодер: линейный слой"]
D --> R["Восстановленные активации, 512 чисел"]
Разреженный автоэнкодер (наша схема; размеры — для словаря A/1)

Кодировщик — линейный слой со смещением и ReLU, декодер — линейный слой со смещением. Потери — ошибка восстановления (MSE) плюс L1-штраф на активации признаков, который делает их разреженными. Два практических урока авторов: (1) масштаб данных важен — SAE обучали на 8 млрд векторов активаций, и чем больше данных, тем «резче» признаки; (2) часть признаков «умирает» (перестаёт включаться), и их полезно периодически пересэмплировать на плохо восстановленные примеры.

Обучили словари размером от 1× (512 признаков) до 256× (131 072 признаков). Подробно изучали запуск A/1 на 4096 признаков. Обозначение признаков: «A/1/3450» — модель A, запуск 1, признак 3450.

Как понять, что SAE работает? Хорошей единой метрики нет — и авторы прямо называют это нерешённой проблемой. Ориентиры: ручной просмотр; плотность признаков (сколько живых и на какой доле токенов срабатывают); ошибка восстановления; игрушечные модели, где правильный ответ известен.

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

  • Арабское письмо (A/1/3450): текст на арабском, фарси, урду. Арабский — всего 0,13 % обучающих токенов, но 81 % токенов, на которых признак активен (при сильной активации, выше ~5, — 98 %). Ни один нейрон этого не выделяет.
  • ДНК: последовательности из букв A, C, G, T.
  • Base64: закодированные строки; при большем словаре расщепляется на три более тонких признака.
  • Иврит: признак, который не активен ни в одном из топ-примеров ни одного нейрона — в базисе нейронов он практически невидим.

Управление генерацией (pinned feature sampling): если принудительно выставить признаку высокое значение и сэмплировать из модели, она пишет соответствующий текст — признак base64 даёт base64, арабский — арабский текст. Значит, признаки не только описывают данные, но и используются моделью.

Глобальный анализ: насколько понятен типичный признак

Заголовок раздела «Глобальный анализ: насколько понятен типичный признак»
  • Оценка человеком (слепая разметка одним из авторов по рубрике, 412 интервалов активаций для 162 признаков и нейронов, с примерами из всего диапазона активаций, а не только максимальных): медианный нейрон получил 0 — разметчик не смог даже сформулировать гипотезу; медианный интервал признака — 12 (уверенная, конкретная, согласованная гипотеза).
  • Автоматическая интерпретируемость (по методу Bills и соавт.): Claude по примерам пишет объяснение признака и по нему предсказывает активации на новых токенах. Для признаков это получается заметно лучше, чем для нейронов; то же — при предсказании, какие токены признак продвигает (по весам в логиты).
  • Сколько модели объясняют признаки. Если подставить вместо активаций MLP их восстановление из A/1, сохраняется 79 % снижения потерь, которое даёт MLP-слой. Авторы предупреждают: эта цифра условна — вероятен «длинный хвост» признаков.
  • Модель или данные? SAE, обученный на модели со случайно перемешанными весами, даёт признаки, понятные по активациям, но не по влиянию на выход. А у настоящей модели влияние признаков (веса в логиты, абляции, управление) согласуется с активациями — значит, признаки отражают работу модели.
  • Расщепление признаков (feature splitting). При росте словаря (512 → 4096 → 16 384) один признак распадается на семейство более тонких — например, «математика и физика» на признаки разных технических контекстов, а артикли «the» и «a» начинают различаться. Похожие признаки имеют близкие направления в словаре. Гипотеза авторов: есть «идеальный» набор признаков для бесконечного словаря, а конечный словарь даёт его приближение с разным «разрешением» — поэтому «правильное число признаков» менее важно, чем кажется, а маленький словарь — это «конспект» модели.
  • Универсальность. Признаки моделей A и B в основном похожи друг на друга — больше, чем на нейроны своей же модели. Base64-признак настолько универсален, что авторы использовали его присутствие как проверку исправности запуска.
  • «Конечные автоматы». Признаки продвигают токены, на которых срабатывают другие признаки, — и так по цепочке. Простейший случай — признак base64 сам себя «возбуждает» на следующем токене. Пара признаков пишет переменные в стиле ARRAY_MAX_VALUE (один — на заглавных буквах, другой — на подчёркиваниях); целые системы признаков генерируют корректный HTML.
  • 512 нейронов вмещают десятки тысяч признаков: новые признаки продолжают находиться при росте словаря.

Главный вопрос после 2023 года — масштабируется ли метод на большие модели. Объект — Claude 3 Sonnet (версия 3.0, производственная, после дообучения). Модель закрытая, поэтому часть сведений (размер, единицы на некоторых графиках) авторы не раскрывают.

ПараметрЗначение
Где обучали SAEостаточный поток в среднем слое (меньше, чем MLP; меньше проблем с межслойной суперпозицией; там вероятны абстрактные признаки)
Размеры словаря~1M (1 048 576), ~4M (4 194 304), ~34M (33 554 432) признаков
Активных признаков на токенв среднем меньше 300
Объяснённая дисперсияне меньше 65 %
«Мёртвые» признаки≈2 % (1M), 35 % (4M), 65 % (34M) — у 34M живых около 12 млн
Как выбрали число шагов для 34Mпо законам масштабирования: при оптимальном выборе числа признаков и шагов потери SAE падают по степенному закону от вычислений

Формулы SAE (с нашими пояснениями). Признак ii:

fi(x)=ReLU⁡(Wi,⋅enc⋅x+bienc),x^=bdec+∑i=1Ffi(x) W⋅,idec.f_i(\mathbf{x}) = \operatorname{ReLU}\bigl(\mathbf{W}^{enc}_{i,\cdot}\cdot \mathbf{x} + b^{enc}_i\bigr), \qquad \hat{\mathbf{x}} = \mathbf{b}^{dec} + \sum_{i=1}^{F} f_i(\mathbf{x})\,\mathbf{W}^{dec}_{\cdot,i} .

Словами: активация признака — «насколько вектор похож на шаблон признака», обрезанная снизу нулём; восстановление — сумма направлений признаков (столбцов декодера) с весами-активациями. Потери:

L=Ex[∥x−x^∥22+λ∑ifi(x) ∥W⋅,idec∥2].\mathcal{L} = \mathbb{E}_{\mathbf{x}}\Bigl[\lVert \mathbf{x}-\hat{\mathbf{x}}\rVert_2^2 + \lambda \sum_i f_i(\mathbf{x})\,\lVert \mathbf{W}^{dec}_{\cdot,i}\rVert_2\Bigr] .

Первое слагаемое — ошибка восстановления, второе — штраф за активность, умноженный на длину направления признака (иначе SAE «схитрил» бы: уменьшил fif_i и увеличил длину столбца, не меняя восстановления).

Четыре примера. Мост Золотые Ворота (34M/31164353), науки о мозге, памятники и туристические места, транспортная инфраструктура. Признак моста срабатывает на упоминания моста на разных языках и на его изображения — признаки многоязычные и мультимодальные, хотя SAE обучали только на тексте.

Управление поведением (feature steering): признак «зажимают» (clamp) на заданном значении во время прямого прохода. Если зажать признак моста на 10× от его максимума, модель начинает называть себя мостом Золотые Ворота; признак транспортной инфраструктуры на 5× заставляет упоминать мост там, где его не было.

Сложные признаки. Признак «ошибка в коде» (1M/1013764) срабатывает на опечатку в имени переменной (rihgt) в Python, а также в C и Scheme — но не на опечатки в обычном тексте. Есть признаки, представляющие функции и сигнатуры типов в коде.

Признаки против нейронов. У 82 % признаков (из случайной выборки 1M-словаря) самый похожий нейрон во всех предыдущих слоях коррелирует с ними не больше чем на 0,3. По автоматической интерпретируемости (объяснения писал Claude 3 Opus) случайные признаки значительно понятнее и специфичнее случайных нейронов.

Окрестности и расщепление. Рядом с признаком моста — Алькатрас, Пресидио, дальше — озеро Тахо, Йосемити. Признак «Сан-Франциско» из 1M-словаря расщепляется на 2 признака в 4M и на 11 — в 34M. В больших словарях появляются и понятия, которых в малых нет вовсе (группа признаков о землетрясениях).

Полнота. Модель знает все районы Лондона и десятки улиц в них, но признаки нашлись лишь примерно для 60 % районов даже в 34M-словаре. Вероятность, что у понятия есть свой признак, тесно связана с частотой понятия в данных: словарь с вероятностью больше 50 % содержит понятие, если оно встречается чуть чаще, чем один раз на (число живых признаков) токенов. Следствие (наша арифметика по выводу авторов): понятию, которое встречается раз на миллиард токенов, нужен словарь порядка миллиарда живых признаков. Отсутствие отдельного признака не значит, что модель не знает понятия, — информация может быть размазана по другим признакам.

Признаки как промежуточные шаги вычислений. Через атрибуции (линейное приближение эффекта выключения признака) и абляции находятся признаки промежуточных шагов. Пример: «Факт: столица штата, где играл в баскетбол Коби Брайант, — это…» (правильно — Сакраменто). Среди самых влиятельных признаков: «Коби Брайант», «Калифорния», «столица», «Лос-Анджелес», «Лос-Анджелес Лейкерс». (Полноценные графы таких цепочек — в Circuit Tracing и Biology.)

Найдены признаки уязвимостей и бэкдоров в коде, предвзятости (от явных оскорблений до тонких стереотипов), угодничества (сочувственное «да, у меня тоже так», угодливая похвала, саркастическая похвала), обмана, стремления к власти и манипуляции (включая «вероломный поворот»), опасного и преступного контента (например, о биологическом оружии), а также признаки, связанные с представлением модели о самой себе. Управление ими меняет поведение в ожидаемую сторону.

Пример: обнаружить и исправить обман. Модель просят «забыть» слово — трансформер этого не умеет, но по умолчанию модель уверяет, что забыла. Перед её ответом активен признак «внутренний конфликт, дилемма» (1M/284095). Если зажать его на 2× максимума, модель раскрывает «забытое» слово и объясняет, что забыть не может; то же даёт признак «открытость и честность».

Оговорки авторов. Существование таких признаков не должно удивлять: модель видела бесчисленные истории о предательстве, подхалимах и роботах-убийцах. Интересен вопрос, когда они активируются: какие признаки отвечают за «самоидентификацию» Claude, какие должны быть выключены, чтобы модель не помогала с оружием массового поражения, что активно при джейлбрейках и в «спящих агентах». Работа не показывает, что признаки уже полезны для безопасности, — только что многие выглядят потенциально полезными.

  • Поверхностные: словарь учили на тексте, похожем на претрейн, без диалогов «Human/Assistant» и без картинок.
  • Нечем оценить: цель SAE (восстановление + разреженность) — лишь прокси для интерпретируемости.
  • Межслойная суперпозиция: градиентный спуск не заботится, в каком слое реализован признак, и признаки «размазываются» по слоям. (Ответ на это — межслойные транскодеры в Circuit Tracing.)
  • Далеко не все признаки: по оценке авторов, найденных признаков, скорее всего, на порядки меньше, чем есть, и собрать все во всех слоях стоило бы больше, чем обучение самой модели.
  • «Усадка» (shrinkage): L1-штраф систематически занижает ненулевые активации.
  • Суперпозиция во внимании и «веса интерференции» остаются нерешёнными; проблема масштаба (слишком много признаков и схем) — тоже; научное понимание признаков и суперпозиции пока ограниченно.
  1. Пройдите практику SAE из урока 9.3.2 и повторите «расщепление»: обучите словари в 1×, 4× и 16× размера слоя и найдите один признак, который распадается.
  2. На Neuronpedia откройте признаки Gemma Scope и найдите аналог «арабского письма» или «base64». Проверьте специфичность сами: на каких примерах из нижней части спектра активаций он ошибается?
  3. Повторите оценку «признак против нейрона»: для 20 случайных признаков вашего SAE найдите самый коррелированный нейрон. Какая доля корреляций меньше 0,3?
  4. Подумайте над вопросом авторов: почему существование признака «обман» не означает, что модель обманывает, и какой эксперимент отличил бы одно от другого? (См. урок 9.3.3.)
ENRU
monosemanticityмоносемантичность
dictionary learningсловарное обучение
sparse autoencoder (SAE)разреженный автоэнкодер
expansion factorкоэффициент расширения (размер словаря / размер слоя)
dead features, resampling«мёртвые» признаки, пересэмплирование
feature splittingрасщепление признаков
universalityуниверсальность
automated interpretabilityавтоматическая интерпретируемость
pinned feature sampling, feature steering, clampingсэмплирование с закреплённым признаком, управление признаком, «зажим»
multilingual / multimodal featureмногоязычный / мультимодальный признак
cross-layer superpositionмежслойная суперпозиция
shrinkage«усадка» активаций
sycophancyугодничество