Поправка направления стиринга для GPT-2 small
Этот репозиторий содержит два артефакта из исследования стиринга признаков SAE в residual stream GPT-2 small после шестого блока. Основной результат — обученная поправка направления
w(v) = normalise(v + A Bᵀv)
Матрицы имеют ранг 64, всего в модели 98 304 параметра. При интервенции h + s·w(v̂) норма
возмущения совпадает с наивным вариантом h + s·v̂. Поэтому сравнение отражает изменение
направления без скрытого увеличения силы стиринга.
Автоматические метрики показывают более сильную доставку целевого признака и меньший Pythia log-perplexity. Дополнительная слепая разметка одним AI-аннотатором подтверждает усиление целевого признака, но не подтверждает улучшение связности или общего качества. У неё также больше случаев дегенерации. Человеческой разметки и второго независимого аннотатора в работе нет.
Использование поправки
import torch
from model import load_direction_correction
correction = load_direction_correction("direction_correction.pt")
v_hat = torch.randn(768)
v_hat = v_hat / v_hat.norm()
w = correction(v_hat.unsqueeze(0))[0]
h_tilde = h + s * w
model.py содержит определение модуля и функцию загрузки. В полной реализации интервенция
применяется ко всем позициям, кроме первых двух. На этих позициях норма residual stream является
выбросом и искажает оценку масштаба.
Сила задаётся как s = c · max_activation · ‖W_dec[f]‖, то есть относительно естественного
масштаба конкретного признака. Поправка обучалась для c ∈ [0.5, 2.5]. При c = 0.5 улучшения
нет, значения выше c ≈ 3 не проверялись.
Состав
direction_correction.pt— основной артефакт, поправка направления ранга 64denoiser.pt— денойзер residual stream из первого раунда экспериментовmodel.py— автономное определение моделей и функции загрузкиconfig.json— архитектура и зафиксированные параметрыREADME.md— эта карточка модели
direction_correction.pt принимает нормированное направление формы (..., 768) и возвращает
направление той же формы с единичной нормой. denoiser.pt принимает активацию с последней
размерностью 768 и величину возмущения.
Обучение
Поправка обучалась через зафиксированную верхнюю половину GPT-2. Для чистой активации h,
направления v и силы s оптимизировался отклик финальных логитов:
L = −A / A_naive + γ · relu(C / C_naive − 1)
A измеряет сохранённый отклик вдоль малосигнального причинного направления, а C — относительный
размер нелинейной невязки. Референсные величины считаются в том же батче с исходным направлением.
Так оптимизатор не может получить хороший loss простым уходом в безопасное направление без доставки
признака. Обучение занимало около 4,2 минуты на GTX 1660 Ti с 6 ГБ памяти.
Денойзер обучался отдельно на активациях OpenWebText с квадратичным loss
‖h − D(h + s·u)‖². Во всех абляциях использовалось одинаковое распределение энергии шума.
Контроль утечки
Признаки SAE для обучения не пересекаются с признаками для выбора параметров и итоговой оценки. Из обучающего словаря исключены признаки с абсолютной косинусной близостью не меньше 0,3 к любому оценочному направлению. Поправка также проверялась на двенадцати признаках, исключённых из её обучающего пула до финального переобучения.
Ограничения
- Проверены только GPT-2 small, один слой интервенции и один релиз SAE.
- Обучающий seed один, поэтому устойчивость к переобучению поправки не измерена.
- Вывод основан на двенадцати признаках с объективным лексическим правилом отбора.
- Автоматический выигрыш по perplexity не означает улучшения качества текста для человека.
- При генерации распределение активаций сдвигается с ростом силы, а поправка остаётся фиксированной линейной картой.
- Перенос на другие модели, слои и SAE не проверялся.
Полный экспериментальный протокол, таблицы, графики и анализ механизма находятся в GitHub-пакете, ссылка на который прикладывается к форме сдачи вместе с этим репозиторием модели.
- Downloads last month
- 14
Model tree for MASad1984/gpt2-small-steering-direction-correction
Base model
openai-community/gpt2