Галлюцинации в LLM: геометрия residual stream | Глубокий анализ | AiManual
AiManual Logo Ai / Manual.
16 Мар 2026 Гайд

Как устроены галлюцинации в LLM: исследуем геометрию residual stream

Разбираем, как residual stream в трансформерах приводит к галлюцинациям. Методы анализа траекторий представлений по слоям для отладки LLM на 2026 год.

Галлюцинации — это не случайность, а закономерность архитектуры

LLM выдает уверенный, но абсолютно ложный факт. Вы спрашиваете у GPT-4.5 или свежей LLaMA 4 о чем-то простом, а в ответ получаете исторический анекдот, который она только что придумала. Классика. Большинство статей предлагают поверхностные решения: «используйте лучший промпт», «добавьте RAG». Это как лечить симптомы, не понимая болезни.

Корень проблемы глубже. Он закопан в самой архитектуре трансформера, в том, как информация течет через десятки слоев. Этот поток данных называется residual stream — остаточный поток. И его геометрия, траектория движения векторов от токена к ответу, прямо отвечает за то, родится ли в конце правда или красивая, убедительная чушь.

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

Residual stream: информационное шоссе трансформера

Забудьте на секунду про attention и MLP-слои. Представьте residual stream как главную магистраль. Исходное векторное представление токена (эмбеддинг) заезжает на это шоссе. Каждый последующий слой — это съезд, где происходит обработка: внимание добавляет контекст, MLP вносит нелинейные преобразования. Но ключевой момент: результат работы слоя прибавляется к текущему состоянию потока, а не заменяет его полностью. Отсюда и «остаточность».

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

💡
Residual stream — это high-dimensional highway. Его состояние в каждом токене и на каждом слое — точка в пространстве размерностью в тысячи измерений (например, 8192 для больших моделей). Галлюцинация — это специфический маршрут через это пространство.

Когда вектор сходит с ума: анатомия одной траектории

Как это выглядит на практике? Возьмем пример. Спросим у модели: «Кто изобрел телефон в 1875 году?». Правильный ответ — Александр Белл (с оговорками на исторические споры). Но представим, что модель галлюцинирует и говорит «Томас Эдисон».

  1. Слои 0-5: Residual stream кодирует базовые понятия: «изобретатель», «телефон», «1875». Геометрия нормальная — векторы лежат в кластерах, соответствующих фактам.
  2. Слои 6-15: Attention-механизмы собирают контекст. Здесь может начаться скольжение. Если в обучающих данных «Эдисон» и «изобретение» встречались вместе чаще, чем «Белл» и «телефон», ата может начать тянуть представление в сторону сильного, но неверного паттерна.
  3. Слои 16-30: MLP-слои усиливают это смещение. Они применяют нелинейные преобразования, которые могут «закрепить» ложную ассоциацию. Геометрия потока теперь явно отклоняется от траектории, ведущей к правильному ответу.
  4. Слои 31-выход: Unembedding-слой считывает итоговое состояние residual stream и проецирует его на словарь. Вектор теперь находится гораздо ближе к представлению «Томас Эдисон», чем к «Александр Белл». Галлюцинация материализована.

Исследователи из Tsinghua в работе про H-нейроны нашли конкретные нейроны, которые активируются именно в таких ситуациях, подталкивая поток к ложным выводам.

Инструменты для вскрытия: что использовать в 2026

Теория — это хорошо, но как это увидеть своими глазами? Для интроспекции современных моделей (тех же Qwen 4, Gemini 2.5 или LLaMA 4) нужны специальные библиотеки.

  • TransformerLens: де-факто стандарт для механистической интерпретируемости. Позволяет останавливать выполнение на любом слое, смотреть активации, вмешиваться в residual stream. Активно развивается, на 2026 год поддерживает все основные архитектуры.
  • NeuroScope (коммерческая платформа): облачный сервис с визуализацией траекторий residual stream в 3D/2D после PCA. Позволяет сравнивать, как один и тот же запрос обрабатывается разными моделями. Дорогой, но для исследований бесценен.
  • Прямой доступ к весам через Hugging Face transformers и кастомный код. Самый гибкий, но и самый сложный путь.

Совет: начните с открытых моделей среднего размера (7B-13B параметров), таких как LLaMA 3.1 8B или Qwen 2.5 7B. Их проще анализировать, и принципы те же, что и у гигантов на 400B.

Практикум: отслеживаем один ложный факт через слои

Вот схематичный код на Python, который показывает, как можно зацепиться за residual stream. Мы используем TransformerLens и модель LLaMA 3.1 8B (актуальную на 2026 год).

import transformer_lens
import torch

# Загружаем модель
model = transformer_lens.HookedTransformer.from_pretrained("llama-3.1-8B")

# Подготавливаем промпт
prompt = "Кто изобрел телефон в 1875 году?"
tokens = model.to_tokens(prompt)

# Запускаем модель с сохранением активаций
logits, cache = model.run_with_cache(tokens)

# Residual stream на слое 10 для последнего токена
# Форма: [batch, pos, d_model]
resid_stream_layer_10 = cache["resid_post", 10]  # Состояние после 10-го слоя
resid_stream_layer_10_last_token = resid_stream_layer_10[0, -1, :]

# Сравним с residual stream для промпта с правильным ответом в контексте
prompt_with_truth = "Александр Белл изобрел телефон в 1875 году. Кто изобрел телефон в 1875 году?"
tokens_truth = model.to_tokens(prompt_with_truth)
_, cache_truth = model.run_with_cache(tokens_truth)
resid_truth = cache_truth["resid_post", 10][0, -1, :]

# Вычисляем косинусное расстояние между двумя векторами
cosine_sim = torch.nn.functional.cosine_similarity(resid_stream_layer_10_last_token, resid_truth, dim=0)
print(f"Косинусная схожесть траекторий на слое 10: {cosine_sim.item():.3f}")
# Если значение низкое (близко к 0 или отрицательное), значит, потоки уже разошлись.

Этот код — только начало. Настоящий анализ подразумевает построение траекторий по всем слоям и сравнение их между правильными и галлюцинирующими ответами. Как в статье «Когда LLM врет: отлавливаем галлюцинации линейкой в векторном пространстве», где предлагаются метрики для такого сравнения.

Можно ли исправить геометрию? Вмешательство и последствия

Зная точку, где residual stream сворачивает не туда, можно попытаться его «подправить». Это называется активационным инжинирингом.

Метод 1: RepE (Representation Engineering). Идея из статьи «RepE: Как хакнуть активации нейросети». Вы обучаете детектор на признаках галлюцинации в residual stream, а затем вычитаете этот направленный вектор из активаций во время инференса. Это как поставить дорожный знак «объезд» на съезде к галлюцинациям.

Метод 2: Прямая манипуляция (activation patching). Вы берете состояние residual stream из корректного прохода (где модель дала правдивый ответ) и вставляете его в проблемный проход на конкретном слое. Если после этого модель выдает правду, вы нашли точку поломки. Дальше можно пытаться обучать маленькие «заплатки» (adapter layers), которые будут корректировать поток в реальном времени.

💡
Предупреждение: такие вмешательства — это хирургия с завязанными глазами. Исправив галлюцинацию на одном факте, вы можете сломать рассуждение на другом. Модель — это хрупкий баланс, и residual stream — его центральная нервная система.

Что дальше? Прогноз на ближайшие два года

К 2028 году, я уверен, отладка residual stream станет обязательным навыком для ML-инженеров, работающих с продвинутыми LLM. Мы увидим:

  1. Стандартизированные дашборды для визуализации траекторий, встроенные в фреймворки вроде Hugging Face.
  2. Автоматические детекторы галлюцинаций, которые мониторят геометрию residual stream в реальном времени и сигнализируют, когда вектор уходит в опасную зону. Возможно, даже с автоматическим применением коррекций RepE.
  3. Новые архитектурные трюки, вроде дублирования слоев, которые изначально проектируются для более стабильных, линейных траекторий, менее склонных к резким поворотам в сторону вымысла.

Главное — перестать относиться к LLM как к черному ящику. Residual stream — это окно внутрь. И чем лучше мы понимаем геометрию этого потока, тем ближе мы к созданию моделей, которые не просто генерируют текст, а рассуждают reliably. Пусть и с причудами тысячемерного пространства.

Подписаться на канал