Hallucination (in LLMs)
Галлюцинация LLM — это связный и уверенный ответ, который не соответствует действительности или не подтверждается источником. Почему модели галлюцинируют и как помогают поиск по источникам и отказ от ответа.
Галлюцинация в большой языковой модели (LLM) — это сгенерированный контент, который выглядит связным и убедительным, но является ложным, не подтверждается источниками модели или противоречит ее входным данным. Галлюцинации варьируются от выдуманной ссылки на источник или неверной даты до краткого изложения, содержащего утверждения, которых не было в исходном документе; их трудно обнаружить, поскольку неверный ответ звучит так же уверенно, как верный. В деле Mata v. Avianca (2023) федеральный суд США наказал двух юристов за подачу документа со ссылками на шесть судебных решений, выдуманных ChatGPT. Некоторые исследователи предпочитают термин «конфабуляция», поскольку модель заполняет пробелы в знаниях правдоподобным текстом.
Типы галлюцинаций#
- Внутренние галлюцинации: Результат противоречит предоставленному источнику, например в кратком изложении указан год утверждения, отличный от года в исходном документе. В обзоре Ji et al. этот термин и следующий используются для классификации ошибок при суммаризации, диалоге и переводе.
- Внешние галлюцинации: Результат добавляет информацию, которую нельзя подтвердить источником; она может быть как истинной, так и ложной.
- Фактические ошибки в ответах на открытые вопросы: Если источника нет, модель сообщает неверные факты, выдумывает ссылки на источники или смешивает сведения о нескольких людях в одной биографии.
- Галлюцинации с пакетами: Помощники по написанию кода импортируют несуществующие библиотеки. Исследование 576 000 сгенерированных фрагментов кода от 16 моделей показало, что как минимум 5.2% пакетов, предложенных коммерческими моделями, и 21.7% пакетов, предложенных моделями с открытым исходным кодом, были выдуманы. Всего обнаружено 205 474 уникальных несуществующих имени пакетов, которые злоумышленники могли зарегистрировать и снабдить вредоносным кодом.
- Галлюцинации объектов: Модели «зрение — язык» (VLM) описывают объекты, которых нет на изображении.
Почему LLM галлюцинируют#
LLM генерирует текст, предсказывая следующий токен на основе вероятностей, усвоенных при предварительном обучении, и не имеет встроенной проверки по базе фактов. Kalai et al. (2025) из OpenAI связывают галлюцинации с двумя статистическими факторами. При предварительном обучении факты, встречающиеся лишь однажды, например день рождения малоизвестного человека, невозможно надежно усвоить: если 20% фактов о днях рождения встречаются в обучающих данных ровно один раз, можно ожидать, что базовая модель будет галлюцинировать как минимум в 20% ответов на вопросы о днях рождения. После обучения большинство тестов оценивают ответы как правильные или неправильные и не начисляют баллов за «Не знаю», поэтому модель, которая угадывает, набирает больше очков, чем модель, воздерживающаяся от ответа, а дообучение превращает модели в уверенных угадывающих.
Свою роль играют и другие факторы. При высокой температуре или широком сэмплировании по ядру могут выбираться продолжения с низкой вероятностью; точность падает, когда важные факты теряются в длинных входных данных (деградация контекста); а модели, обученные на одобрении людей, склонны соглашаться с ложной предпосылкой в вопросе — это форма подхалимства ИИ.
Обнаружение и сокращение галлюцинаций#
- Генерация с дополнением извлеченной информацией (RAG): Система извлекает фрагменты из надежной коллекции и просит модель отвечать на их основании. Переранжировщик улучшает отбор фрагментов для запроса, хотя модель все еще может неверно их истолковать или проигнорировать.
- Заземление со ссылками на источники: Для каждого утверждения нужно привести ссылку на извлеченный фрагмент, а проверяющая система, часто вторая модель, подтверждает, что фрагмент подкрепляет это утверждение.
- Семантическая энтропия: Модель несколько раз отвечает на один вопрос, ответы группируются по смыслу, а высокая энтропия между группами указывает на вероятную конфабуляцию.
- Цепочка проверки (CoVe): Модель составляет ответ, формулирует вопросы для проверки собственных утверждений, независимо отвечает на них и исправляет исходный текст.
- Поощрение воздержания от ответа: Обучение с помощью RLHF или других методов обратной связи, при которых за уверенные ошибки штрафуют сильнее, чем за ответ «Не знаю», а также такая же оценка моделей устраняют стимул угадывать.
Система ответов на вопросы с заземлением объединяет несколько таких проверок в цикл:
Галлюцинации и родственные понятия#
- Предвзятость ИИ: Систематическое смещение результатов, например предпочтение одной группы. Ответ может быть свободен от предвзятости, но содержать галлюцинацию, или быть фактически верным, но предвзятым.
- Переобучение: Запоминание обучающих примеров в ущерб обобщению. Галлюцинации часто возникают в противоположной ситуации, когда модель дополняет факт, который встречался слишком редко, чтобы его запомнить.
- Коллапс модели: Утрата редких знаний, когда модели обучаются на сгенерированных данных; из-за этого последующие модели могут чаще галлюцинировать о редко встречающихся фактах.
Галлюцинации объектов в моделях «зрение — язык»#
VLM опираются на языковые закономерности, поэтому модель для создания подписей может упомянуть вилку на обеденном столе, где ее нет, поскольку в обучающих подписях вилки часто соседствуют с тарелками. Галлюцинации объектов при создании подписей к изображениям измеряются метрикой CHAIR — долей упомянутых в подписи объектов, отсутствующих в эталонной разметке изображения. Один из способов смягчить проблему — передать языковой модели список объектов, которые действительно обнаружил детектор. Приведенный ниже фрагмент запускает YOLO26 на изображении и превращает результаты обнаружения в ограничение для запроса:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Per-class detection counts as text, used as facts the language model must stay within
detections = result.verbose()
prompt = f"Describe this image. Mention only these detected objects: {detections}"
print(prompt)result.verbose() возвращает количество обнаруженных объектов для каждого класса, поэтому за каждым объектом, названным в запросе, стоит ограничивающая рамка, а упоминание любого другого объекта в ответе можно выявить до того, как ответ дойдет до пользователя.










