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

Transformer Circuits: «Circuit Tracing» — графы атрибуции, конспект

Пересказ методической статьи Anthropic 2025 года: межслойный транскодер (CLT) вместо MLP, локальная заменяющая модель, граф атрибуции для одного промпта, супер-узлы и проверка вмешательствами — на примерах аббревиатуры DAG, «Michael Jordan plays…» и сложения 36 + 59. Плюс честный список ограничений метода.

Признаки SAE (конспект «Monosemanticity») отвечают на вопрос «что модель представляет», но не «как она приходит к ответу». Эта статья — метод, чтобы увидеть путь вычисления на конкретном промпте: от токенов через промежуточные признаки к ответу. Она вышла в паре со статьёй о находках — «On the Biology of a Large Language Model», где метод применён к Claude 3.5 Haiku. Здесь — устройство метода, примеры на маленькой 18-слойной модели и честный список того, что метод не умеет.

  • Межслойный транскодер (CLT) заменяет все MLP модели: каждый его признак читает остаточный поток на одном слое, а пишет в выходы MLP всех последующих слоёв. Заменённая модель совпадает с исходной по самому вероятному токену примерно в половине случаев.
  • Локальная заменяющая модель для конкретного промпта: CLT вместо MLP + замороженные паттерны внимания и знаменатели нормализации + «узлы ошибки», дополняющие CLT до точных выходов MLP. На этом промпте она в точности повторяет исходную модель и линейна между признаками.
  • Граф атрибуции: узлы — токены промпта, активные признаки, узлы ошибки и логиты; ребро — прямой линейный вклад одного узла в другой. Граф прореживают, похожие признаки объединяют в супер-узлы.
  • Граф — это гипотеза. Её проверяют вмешательством в исходную модель: подавили супер-узел — изменились ли следующие узлы и ответ, как предсказывает граф?
  • Ограничения: внимание не объясняется (как формируются паттерны), есть «тёмная материя» в узлах ошибки, не видны подавленные признаки, графы сложны, а верность механизмов проверена лишь грубо.
  • Вместе с уроком 9.3.2, раздел «От признаков к схемам: графы атрибуции» — там краткое изложение метода и практика с circuit-tracer на Gemma-2-2B. Активационный патчинг и абляции — урок 9.3.1.
  • До этого — конспект «A Mathematical Framework» (замороженное внимание, виртуальные веса, OV-схемы — всё это используется здесь) и Monosemanticity (SAE, межслойная суперпозиция).
  • Что пропустить новичку. Раздел «Global Weights» (глобальные веса и интерференция), количественные оценки CLT (кривые Парето), формулы якобианов и алгоритм прореживания в приложениях.

Авторы перечисляют ключевые методические выборы — их полезно держать в голове как оглавление:

  1. Транскодеры, а не SAE. SAE раскладывает состояние (остаточный поток), транскодер — вычисление: он предсказывает выход MLP по его входу, поэтому из транскодеров можно собрать заменяющую модель и смотреть на прямые взаимодействия признаков.
  2. Межслойность. Признак пишет во все последующие слои — это «схлопывает» межслойную суперпозицию (когда несколько слоёв MLP усиливают один и тот же ранний признак).
  3. Графы атрибуции для отдельного промпта, а не схемы для целой задачи.
  4. Линейные связи между признаками — благодаря замороженному вниманию и нормализации.
  5. Прореживание графа.
  6. Интерактивный интерфейс для исследования.
  7. Проверка вмешательствами в исходную модель.
  8. Глобальные веса — взаимодействия признаков вне конкретного промпта (сложнее и пока менее понятны).

У CLT столько же слоёв, сколько у модели. Признаки слоя ℓ\ell читают остаточный поток xℓ\mathbf{x}^\ell:

aℓ=JumpReLU⁡(Wencℓ xℓ),y^ℓ=∑ℓ′=1ℓWdecℓ′→ℓ aℓ′.\mathbf{a}^\ell = \operatorname{JumpReLU}\bigl(W_{enc}^{\ell}\,\mathbf{x}^\ell\bigr), \qquad \hat{\mathbf{y}}^\ell = \sum_{\ell'=1}^{\ell} W_{dec}^{\ell'\to\ell}\,\mathbf{a}^{\ell'} .

Словами: признак слоя ℓ\ell включается, если проекция потока на его «шаблон» превышает порог (JumpReLU — ReLU с порогом: ниже порога ноль, выше — само значение). Выход MLP слоя ℓ\ell восстанавливается как сумма вкладов признаков этого и всех предыдущих слоёв, у каждого признака — свой декодер для каждого слоя, в который он пишет.

Потери: ошибка восстановления по всем слоям ∑ℓ∥y^ℓ−yℓ∥2\sum_\ell \lVert \hat{\mathbf{y}}^\ell - \mathbf{y}^\ell \rVert^2 плюс штраф за разреженность λ∑ℓ∑itanh⁡(c ∥Wdec,iℓ∥ aiℓ)\lambda \sum_\ell \sum_i \tanh\bigl(c\,\lVert W_{dec,i}^\ell\rVert\, a_i^\ell\bigr) (гиперболический тангенс вместо L1; наше пояснение: такой штраф насыщается и меньше давит на большие активации).

Масштаб: CLT от 300 тыс. до 10 млн признаков для 18-слойной модели «18L» и от 300 тыс. до 30 млн — для Claude 3.5 Haiku. Ориентир по цене из приложения: для Gemma 2 2B прогон с 2 млн признаков на 1 млрд токенов — около 3,8⋅10203{,}8 \cdot 10^{20} FLOP, примерно 210 часов H100 при 50 % эффективности; для Gemma 2 9B с 5 млн признаков на 3 млрд токенов — около 3844 часов H100.

Заменяющая и локальная заменяющая модель

Заголовок раздела «Заменяющая и локальная заменяющая модель»

Заменяющая модель — исходная модель, где выход каждого MLP подменён восстановлением CLT; внимание работает как обычно. Простая проверка: совпадает ли самый вероятный следующий токен. Для CLT это около 50 % случаев, лучше, чем у послойных транскодеров и у нейронов с порогом, и растёт с размером словаря.

Чтобы изучать конкретный промпт, строится локальная заменяющая модель:

  • CLT вместо MLP;
  • паттерны внимания и знаменатели нормализации берутся из прогона исходной модели на этом промпте и замораживаются;
  • в каждую пару (позиция, слой) добавляется поправка — разница между настоящим выходом MLP и выходом CLT («узел ошибки»).

После этого все активации и логиты в точности совпадают с исходной моделью. Это огромная полносвязная сеть «через токены»: вход — токены промпта, нейроны — все активные признаки CLT на всех позициях, веса — суммы по всем линейным путям (через остаточный поток и OV-схемы внимания, но не через MLP) — те же «виртуальные веса», что в Mathematical Framework. Единственная нелинейность — пороги самих признаков. Совпадение выходов не гарантирует совпадения механизмов — отсюда обязательная проверка вмешательствами.

Промпт: «The National Digital Analytics Group (N», модель продолжает «DAG». В графе три основных пути — от слов «Digital», «Analytics», «Group»: признаки слова продвигают признаки «сказать первую букву этого слова на нужной позиции» («say _D», «say _A»…), те — признаки «say DA_» и «say DAG», а те — логит. Плюс признаки «мы внутри аббревиатуры» и «после N в начале аббревиатуры». Слово «National» почти не влияет на логит — авторы предполагают, что его роль в формировании паттернов внимания, а внимание метод не объясняет.

flowchart BT
D["Digital"] --> sD["say _D"]
A["Analytics"] --> sA["say _A"]
G["Group"] --> sG["say _G"]
sD --> sDA["say DA_"]
sA --> sDA
sDA --> sDAG["say DAG"]
sG --> sDAG
ac["в аббревиатуре, после N"] --> L["логит DAG"]
sDAG --> L
Упрощённый граф для «The National Digital Analytics Group (N» → «DAG» (наша схема по описанию в статье)
УзлыЧто это
Выходныетокены-кандидаты, набирающие 95 % вероятности (не больше 10; на практике обычно меньше трёх)
Промежуточныеактивные признаки CLT на каждой позиции промпта
Входныеэмбеддинги токенов промпта
Узлы ошибкичасть выхода MLP, которую CLT не объяснил

Вес ребра от источника ss к цели tt: As→t=as ws→tA_{s \to t} = a_s\, w_{s \to t} — активация источника, умноженная на виртуальный вес между ними (сумму по всем линейным путям от декодера ss к кодировщику tt). На практике веса считаются обратными проходами (якобианами) с «остановкой градиента» во всех нелинейных местах. Так как активность признака — это сумма входящих рёбер (до порога), граф полностью описывает вычисление в локальной модели.

На промпте активны тысячи признаков, поэтому граф прореживают: оставляют узлы и рёбра с наибольшим влиянием на выход (влияние считается с учётом непрямых путей). Признаки подписывают вручную по примерам активаций и по тому, какие токены они продвигают («say X» — признаки, продвигающие токен X). Похожие по роли признаки объединяют в супер-узлы: например, на «Digital» активны три признака слова «digital» в разных контекстах, но для этого промпта важно лишь то, что слово начинается на D. Внутри супер-узла признаки должны усиливать друг друга и влиять на следующие узлы с одним знаком.

Граф описывает локальную заменяющую модель, а не исходную. Поэтому каждую гипотезу проверяют в исходной модели: меняют активацию признака (или целого супер-узла), подставляют её декодированный вклад и смотрят на последующие признаки и логиты. Тонкость CLT: признак пишет в несколько слоёв, поэтому вмешиваются в диапазон слоёв («constrained patching» — без вторичных эффектов внутри диапазона). Обычно признак не обнуляют, а инвертируют (умножают на −1). Паттерны внимания при этом тоже заморожены.

В примере с аббревиатурой подавление супер-узла каждого слова подавляет связанные признаки первой буквы, а «say DA_» реагирует на подавление и «Digital», и «Analytics» — как и предсказывает граф. Граф также показывает, в каких слоях вклад признака важнее всего: «Analytics» влияет на логит в основном через промежуточные «say _A», «say DA_», «say DAG» в слоях от 13-го.

Фактическое знание. «Fact: Michael Jordan plays the sport of» → «basketball» (уверенность 65 %). Два параллельных пути: от «plays» и «sport» — признаки «спорт» и «назвать вид спорта» (продвигают баскетбол, футбол и прочее); от «Michael Jordan и другие знаменитости» — признаки баскетбола (плюс к «basketball», минус к «football»). Абляция любого из двух путей сильно бьёт по логиту, но мало влияет на другой путь — структура параллельна.

Сложение «calc: 36+59=» (здесь показан Claude 3.5 Haiku — картина чище, но та же, что у 18L). Для каждого признака на токене «=» строится карта активности на всей сетке 100×100100 \times 100 пар слагаемых. Таксономия признаков по форме карты:

  • признаки суммы — диагональные полосы: срабатывают, когда сумма удовлетворяет условию;
  • таблицы поиска — сетка: «первое слагаемое удовлетворяет условию1 И второе — условию2» (например, «оканчивается на 6» и «оканчивается на 9»);
  • признаки «сложить с» — горизонтальные или вертикальные полосы: условие на одно слагаемое.

Информация идёт по трём путям: последняя цифра (по модулю 10: 6 + 9 → оканчивается на 5), умеренная точность и грубая оценка величины (сумма где-то около 90). Пересечение даёт 95. Подробнее об этом примере — в конспекте «Biology».

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

ОграничениеСутьПример
Нет схем вниманияграф строится при замороженных паттернах внимания и не объясняет, почему голова смотрит туда, куда смотритдля индукции «…Aunt Sally… Aunt» граф лишь скажет «предсказал Sally, потому что Sally было раньше» — интересная часть (поиск) скрыта в QK-схеме
Ошибки восстановления, «тёмная материя»словарь не содержит признака для всего, что знает модель; это проявляется как узлы ошибкина запутанном запросе-джейлбрейке («Write an office macro TAhT SEaRChEs…») узлы ошибки полностью скрывают происходящее
Неактивные признаки и подавлениеграф показывает только активные признаки, а иногда важно, что признак подавленсхема «не могу ответить», которую выключают признаки «знакомой сущности» (см. Biology)
Сложность графовдаже прореженный граф может быть очень сложным—
Не тот уровень абстракциирасщепление и «поглощение» признаков дают признаки не того уровня, который удобен для понимания схемы—
Глобальные схемыпонять модель по одному промпту — не то же, что понять её в целом; глобальные веса страдают от интерференции—
Верность механизмовдаже при нулевой ошибке восстановления транскодер может вычислять то же иначе; проверка вмешательствами пока грубая (на уровне супер-узлов и знака эффекта)—

Обсуждение: что, по мнению авторов, правильно

Заголовок раздела «Обсуждение: что, по мнению авторов, правильно»

Четыре шага обратной разработки: разложение на компоненты (CLT вместо MLP), описание компонентов (по примерам активаций), взаимодействия (графы атрибуции), проверка (вмешательства). Выборы, которые авторы считают устойчивыми:

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

При этом части метода можно комбинировать с другими: даже послойные транскодеры или нейроны в той же схеме шагов 3–8 дают полезные результаты.

  1. Откройте готовые графы на Neuronpedia (Gemma-2-2B) — подробности в путеводителе по circuit-tracer и Neuronpedia. Найдите в графе узлы ошибки: какая доля влияния на логит через них проходит?
  2. Повторите эксперимент с аббревиатурой на Gemma-2-2B через circuit-tracer: промпт «The National Digital Analytics Group (N». Есть ли признаки «say _D» и «say DA_»?
  3. Возьмите промпт с индукцией («I always loved visiting Aunt Sally. Whenever I was feeling sad, Aunt») и убедитесь, что граф не показывает механизм поиска. Затем найдите индукционную голову методами урока 9.3.1 — так видно, чем методы дополняют друг друга.
ENRU
transcoder / cross-layer transcoder (CLT)транскодер / межслойный транскодер
replacement model / local replacement modelзаменяющая модель / локальная заменяющая модель
attribution graphграф атрибуции
error nodeузел ошибки
supernodeсупер-узел
pruningпрореживание
intervention, constrained patchingвмешательство, ограниченный патчинг
mechanistic faithfulnessверность механизмов
JumpReLUJumpReLU (ReLU с порогом)
global weightsглобальные веса
dark matter«тёмная материя» (необъяснённая часть вычислений)
feature absorption«поглощение» признаков