Вы когда-нибудь пытались доверить LLM расчёт налоговой декларации, а модель в ответ с абсолютной уверенностью несла чушь про вычеты, которых не существует? Знакомо. Галлюцинации — проклятие всех крупных моделей. Их пытаются лечить RAG, PPO, RLHF, но каждый раз это как затыкать дырявое ведро: одно починил — другое протекло.
И тут на ICML 2026 выходит работа, от которой у инженеров зачесались руки. ntkMirror — метод, который не требует ни дообучения, ни доступа к обучающим данным. Только forward pass модели. Звучит как магия? На деле — элегантная геометрия residual stream.
В чём суть: модель сама ставит себе красный флаг
Авторы ntkMirror пошли по пути, который многие исследователи обходили стороной: они проанализировали, как изменяется curvature в пространстве признаков на последних слоях. Оказалось, что когда LLM собирается галлюцинировать, NTK (Neural Tangent Kernel) в residual stream ведёт себя кардинально иначе — возникают аномалии в локальной геометрии. Если упростить: модель сама, без внешних подсказок, выдаёт сигнал «я сейчас совру».
Метод использует information-budget abstention — своего рода внутренний аудит информации. Модель проверяет, хватит ли у неё фактических данных для ответа. Если нет — не отвечает (или возвращает специальный токен). Никаких внешних детекторов, никаких дообученных классификаторов. Только прямой проход + один линейный слой, который учится на ходу без обратного распространения через всю модель.
Ключевой сдвиг: вместо того, чтобы бороться с галлюцинациями постфактум, ntkMirror даёт модели возможность заранее отказаться от ответа. Это меняет парадигму с «как сделать модель правдивее» на «как заставить модель признать своё незнание».
Как это выглядит на практике (да, код есть)
На GitHub выложен референс на PyTorch. Установка — три строки. Интеграция с существующими open-weight моделями — подменяете последний слой attention.
1 Подготовка модели (на примере Llama 3.3 70B)
pip install ntk-mirror
python -m ntk_mirror.install --model meta-llama/Llama-3.3-70B --mirror-dim 512 --device cuda2 Прогон с детекцией галлюцинаций
from transformers import AutoTokenizer
from ntk_mirror import MirrorModel
model = MirrorModel.from_pretrained('meta-llama/Llama-3.3-70B')
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-3.3-70B')
prompt = 'What is the capital of France?'
outputs = model.generate_with_abstention(prompt, threshold=0.3)
print(outputs['text']) # 'Paris'
print(outputs['hallucination_score']) # 0.02
# А теперь вопрос, на который модель не знает точного ответа
prompt2 = 'What is the average weight of a neutron star in kilograms?'
outputs2 = model.generate_with_abstention(prompt2, threshold=0.3)
print(outputs2['text']) # Special token: '<|ABSTAIN|>'
print(outputs2['hallucination_score']) # 0.87Обратили внимание? Порог можно менять «на лету»: хотите меньше отказов — снизьте threshold. Но тогда возрастёт риск галлюцинации. NtkMirror не убирает ложь совсем (такого пока не умеет никто), но даёт предсказуемый слайдер между уверенностью и осторожностью.
Сравнение с «конкурентами»: кто кого?
| Метод | Требует дообучения? | Предсказуемость ошибки | Скорость на инференсе | Совместимость с open-weight |
|---|---|---|---|---|
| ntkMirror | Нет (только forward) | Высокая (ROC-AUC ~0.94) | +10% overhead | Да (любая архитектура) |
| RAG | Нет | Низкая (зависит от индекса) | Высокий (поиск) | Да |
| Fine-tuning (RLHF/DPO) | Да (дорого) | Средняя | Без изменений | Ограниченная |
| Detector на энтропии logits | Нет | Низкая | Минимальный | Да |
Метрики в таблице — с официальной бумаги. По тестам на TriviaQA и HotpotQA ntkMirror дотягивает до 94% AUC при отсечении 30% самых рискованных ответов. Для сравнения, простая энтропия logits даёт около 67% на тех же данных.
Под капотом: геометрия вранья
Если коротко: NTK отражает, как градиенты распространяются через сеть. В исправных ответах матрица NTK почти единичная на последних токенах. А перед галлюцинацией появляются outlier eigenvalues. NtkMirror фильтрует именно эти выбросы.
На практике это значит, что метод работает на любой архитектуре: от крошечных Gemma 2B до гигантов вроде Qwen3.5-397B. Авторы даже не меняли код — просто подставили другую модель.
Кому это реально нужно (и как не обжечься)
- Разработчикам чат-ботов в банках и медицине — где каждый галлюцинаторный ответ стоит денег или репутации. С ntkMirror можно просто выставить порог на 0.1 и получить отказ при малейшем сомнении.
- Командам, которые делают локальные LLM-решения — я уже писал про мультимодальный краулер, там детекция вранья была бы критична.
- Исследователям безопасности — ntkMirror даёт интерпретируемую метрику, которую можно анализировать, в отличие от чёрных ящиков RAG.
Ещё один приятный бонус — метод работает даже с теми моделями, которые вы дообучали и подвеpгли катастрофическому забыванию. NTK-кривизна остаётся чувствительной к разрывам в знаниях.
Куда бежать и что читать
Открытый код — на GitHub под лицензией MIT. Бумага — в трудах ICML 2026. Авторы обещают расширение на мультимодальные модели к концу года — слепые пятна VLM тоже нуждаются в лечении галлюцинаций.
Лично я ставлю на то, что через год ntkMirror войдёт в стандартный пайплайн любого серьёзного LLM-проекта. Потому что бесплатный чек-пойнтер «знаю — не знаю» — это именно то, чего не хватало индустрии. А вы как думаете?