Алексей Маркин рабочий журнал

ищет по заголовкам и тексту записей и заметок

запись 5 сентября 2026 г. · 5 мин
Все статьи

Галлюцинации нейросети: почему модель уверенно врёт и что реально помогает

Модель не отличает знание от правдоподобия — она продолжает текст. Разбираю три источника выдумок, приёмы, которые работают, и просьбу «не выдумывай», которая не работает.

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

Отсюда следует главное практическое: просьба «не выдумывай» почти не помогает, а помогает лишить модель необходимости что-то придумывать. Дальше разберу, откуда берутся выдумки и что с каждым источником делать.

Почему это не ошибка, а режим по умолчанию

Модель порождает следующий токен по вероятности. Когда данных достаточно, самое вероятное продолжение оказывается верным — и выглядит это как знание. Когда данных нет, самое вероятное продолжение всё равно существует: это то, что чаще всего писали в похожих местах.

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

Из этого сразу следуют две вещи, о которые спотыкаются чаще всего.

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

Во-вторых, попросить модель оценить свою уверенность — почти бесполезно. Число, которое она выдаст, отражает уверенность формулировки, а не знания; аккуратно изложенная выдумка получит высокий процент. Подробнее я разбирал это в заметке «Оценка уверенности почти не калибрована».

Три источника выдумок

Их полезно разделять, потому что лечатся они по-разному.

Пропуск в данных. Модель не встречала нужного факта или встречала редко. Классика: точные числа, даты, имена, названия версий, номера пунктов — всё, что не повторяется в обучающем корпусе достаточно часто, чтобы закрепиться.

Давление формата. Самый недооценённый источник. Если схема требует обязательное поле дата_договора, а в документе даты нет, модель обязана что-то туда положить — пропустить нельзя. Она положит правдоподобное. Это не «модель врёт», это вы не оставили ей выхода.

Давление вопроса. Вопрос, сформулированный как утверждение («почему в регламенте запрещён возврат после 14 дней?»), сам содержит предпосылку. Модель почти никогда её не оспорит — она ответит на вопрос, достроив несуществующий запрет.

Вопросс предпосылкойКонтекстпропуск в данныхМодельСхемаобязательное полекаждая точка добавляет свою выдумкупереспроситьдать источникразрешить nullлечится в своей точке, не в промпте
рис. 1 Где в конвейере появляется выдумка. Три точки входа лечатся разными средствами, и общего для них нет.

Что действительно снижает выдумки

По убыванию эффекта на единицу усилий.

Дать источник и требовать цитату. Если ответ строится по приложенному тексту, а не по памяти модели, пропуск в данных закрывается. Ключевое здесь — не сам источник, а требование приложить цитату-основание: её можно механически сверить с исходником. Ответ без цитаты отбраковывается автоматически, и проверка перестаёт требовать чтения всего документа.

Как устроен такой поиск и почему он часто приносит не то — разбирал в «Метрики поиска без магии».

Разрешить null и пустой ответ. Каждое поле, которого может не быть во входных данных, должно допускать пустое значение, а инструкция — прямо говорить, что null предпочтительнее догадки. Это одна из немногих формулировок, которая действительно меняет поведение, потому что снимает принуждение. Подробно — в «Формат ответа — это интерфейс».

Разрешить переспросить. «Прежде чем отвечать, задай до трёх вопросов, без которых ответ будет догадкой». Снимает давление вопроса и заодно показывает дыры в вашей постановке.

Разделять факты и предположения в ответе. Работает слабее предыдущего, потому что модель занижает второй раздел, но даже неполный список предположений полезнее его отсутствия.

Сверять с источником программно. Финальная мера: проверять, что каждое число и каждая дата из ответа встречаются во входном тексте. Дёшево и ловит именно тот класс, который дороже всего стоит.

Что не работает

«Не выдумывай, отвечай только правду». У запрета нет содержания: модель не имеет доступа к признаку «это правда», и в точке, где по инерции идёт выдумка, дырка заполняется той же выдумкой. Почему запреты вообще слабее замен — в заметке «Запрет работает хуже замены».

Понижение температуры. Уменьшает разброс формулировок, а не достоверность. Уверенная выдумка при нулевой температуре остаётся уверенной выдумкой, просто одной и той же.

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

Условие несогласия

Если результат читает специалист, который в теме и всё равно проверяет, цена галлюцинации близка к нулю: он заметит. Строить вокруг этого инфраструктуру — работа ради работы.

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

Чего я делать не стал бы

Не стал бы бороться с галлюцинациями сменой модели. Более сильная модель выдумывает реже и убедительнее — второе опаснее первого, потому что снижает шанс поймать глазами.

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

Не стал бы считать, что приложенный источник решает проблему. Он решает только пропуск в данных; давление схемы и давление вопроса остаются на месте, и на них источник не влияет.

Открытый вопрос

Все работающие меры — внешние: дать данные, разрешить не отвечать, сверить программно. Ни одна не делает модель менее склонной к выдумкам, все делают выдумку менее вероятной или более заметной.

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