Объяснение галлюцинаций искусственного интеллекта: Почему языковые модели выдумывают вещи и как их уменьшить
Языковая модель может дать уверенный, хорошо написанный ответ, который просто неверен. Узнайте, почему это происходит, какие формы это принимает, а также практические способы уменьшить и обнаружить это с помощью собственных функций ИИ.
- Галлюцинация ИИ — это результат, который звучит правдоподобно, но является ложным или не поддерживается.
- Модели прогнозируют вероятный текст. У них нет встроенного способа узнать, что является правдой.
- Обоснование ответов в надежных источниках, четкие подсказки и автоматические проверки уменьшают галлюцинации.
- Ни один современный метод не удаляет их полностью, поэтому важные результаты все еще нуждаются в проверке.
Чат-бот службы поддержки сообщает клиенту, что возврат средств занимает 14 дней. Настоящая политика гласит 7. Ответ был беглым, вежливым и неправильным. Это галлюцинация ИИ, и это одна из основных причин, по которой функции ИИ требуют тщательного проектирования и тестирования.
В этом руководстве простыми словами объясняются причины и основное внимание уделяется практической профилактике. Автоматическая проверка в конце представляет собой небольшой скрипт Python, который мы запускали на основе примеров ответов, которые мы написали сами. Он не сравнивался с живой моделью ИИ.
Что такое галлюцинация ИИ?
Галлюцинация — это когда генеративная система искусственного интеллекта создает контент, который фактически неверен, выдуман или не поддерживается предоставленной ей информацией, одновременно представляя его как правдивый. Этот термин является метафорой. Модель ничего не видит. Он генерирует текст, соответствующий образцу хорошего ответа, без привязки к фактам.
Опасная часть — это уверенность. Галлюцинированный ответ обычно выглядит точно так же, как правильный, с тем же тоном, структурой и деталями.
Почему языковые модели галлюцинируют
большая языковая модель обучена прогнозировать следующий фрагмент текста, токен, на основе шаблонов в огромном объеме обучающих данных. Из этого следует несколько вещей:
- Правдоподобное — это не то же самое, что истинное. Модель изучает, как обычно выглядят ответы. Даже при недостатке фактов можно придумать наиболее вероятное продолжение.
- Пробелы и ограничения. Данные обучения имеют пробелы и заканчиваются в определенную дату. Модель может скорее восполнить недостающие факты, чем сказать, что она не знает.
- Обучение вознаграждает за ответ. Исследования, в том числе статья OpenAI 2025 года о том, почему модели галлюцинируют, утверждают, что обычные методы обучения и оценки вознаграждают за угадывание, а не за признание неопределенности, что очень похоже на тест с множественным выбором без штрафа за неправильные ответы.
- Неоднозначные подсказки. Неясные вопросы побуждают модель задуматься о деталях.
- Длинный или запутанный контекст. Важные факты могут быть упущены из виду, если они скрыты за длинными входными данными.
Распространенные виды галлюцинаций
| Тип | Пример |
|---|---|
| Выдуманные факты | Неправильная дата, число или статистика. |
| Фейковые источники | Цитаты, статьи или URL-адреса, которые не существуют. |
| Неверные сводки | Сводка, добавляющая претензии, отсутствующие в документе |
| Выдуманный код | Вызовы функций или пакетов, которые не существуют. |
| Неправильное рассуждение | Каждый шаг выглядит нормально, но вывод не следует |
| Ложная уверенность | Отвечаем на вопрос, на который нет достоверного ответа |
Исследователи часто разделяют их на ошибки факта, которые противоречат реальному миру, и ошибки достоверности, которые противоречат исходному материалу, предоставленному модели. Для бизнес-приложений, созданных на основе ваших собственных документов, верность обычно является тем, что вы можете проверить самым непосредственным образом.
Выдуманный код заслуживает особого предупреждения. Если помощник предложит установить несуществующий пакет, злоумышленник может опубликовать вредоносный пакет под этим именем. Перед установкой убедитесь, что каждая предложенная зависимость реальна и заслуживает доверия.
Где это важнее всего
Галлюцинационный факт из фильма безвреден. Доза наркотика, вызывающая галлюцинации, юридическое обоснование, политика возмещения или финансовые показатели — нет. Известны случаи, когда юристы подавали в суд судебные иски с цитатами из дел, придуманными с помощью инструментов искусственного интеллекта. Ранжируйте варианты использования по стоимости неправильного ответа и применяйте самые строгие меры контроля там, где эта цена высока.
Как уменьшить галлюцинации
- Опирайтесь на достоверные данные. Предоставьте модели соответствующие факты, а не полагайтесь на ее память.
- Разрешите «Я не знаю». Прямо скажите модели, чтобы она сообщала, когда информация недоступна, и рассматривайте это как хороший результат.
- Будьте конкретны. Четкие, узкие вопросы оставляют меньше места для изобретательности. В нашем кратком руководстве по проектированию это подробно описано.
- Попросите цитаты или цитаты из предоставленных источников, а затем проверяйте их автоматически.
- Используйте структурированный вывод, например JSON с фиксированными полями, чтобы ответы было легче проверять.
- Используйте инструменты для задач, в которых модели не справляются, например вычислений, дат и поиска данных в реальном времени.
- Держите человека в курсе для принятия важных решений.
Заземление собственными данными
Генерация с расширенным поиском (RAG) – это наиболее распространенная схема заземления. Система ищет в ваших документах отрывки, относящиеся к вопросу, и включает их в подсказку с инструкциями отвечать только на основе этих отрывков. Оно резко сокращает придуманные факты, но не является лекарством. Модель по-прежнему может неправильно прочитать отрывок, неправильно объединить отрывки или обратиться к собственным знаниям, а этап поиска может вернуть неправильные документы. Таким образом, заземленные системы все еще нуждаются в проверках.
Совет: Записывайте найденные отрывки рядом с каждым ответом. Когда сообщается о неправильном ответе, вы можете быстро определить, не удалось ли извлечь данные или модель проигнорировала хороший контекст. Исправления для каждого разные.
Простая автоматическая проверка
Вот одна дешевая защита, которую мы создали: отмечаем в ответе любое число, которого нет в исходном тексте. Это грубо, но такие цифры, как цены, дни и лимиты, — это именно то место, где проявляются дорогостоящие галлюцинации.
import re
SOURCE = """Refunds are paid within 7 days to the original payment method.
Orders over 1000 rupees ship free. Standard delivery takes 3 to 5 working days."""
def unsupported_numbers(answer, source):
found = set(re.findall(r"\d+", answer))
allowed = set(re.findall(r"\d+", source))
return sorted(found - allowed, key=int)
Мы протестировали три ответа, написанные для имитации типичных результатов модели:
grounded -> no unsupported numbers
hallucinated -> ['14', '500']
partly -> ['1']
В «галлюцинированном» ответе говорилось о возврате денег в течение 14 дней и бесплатной доставке на сумму более 500 рупий, и обе цифры были уловлены. В ответе «частично» были указаны правильные сроки доставки, но добавлено «или 1 день с экспресс-доставкой», о чем в политике никогда не упоминается, и это тоже было обнаружено. Вторая проверка подтверждает, что цитируемые фразы действительно встречаются в источнике:
{'paid within 7 days': True, 'no questions asked': False}
Эти проверки имеют очевидные ограничения. Они пропускают неверные слова, единицы измерения и необоснованные утверждения без цифр, а также ошибочно отмечают правильный расчет. Многие команды добавляют этап «магистр права в качестве судьи», на котором вторая модель проверяет каждое утверждение на соответствие источникам. Так улавливается больше, но это тоже может быть неправильно, поэтому измерьте это.
Тестирование на галлюцинации
Относитесь к частоте галлюцинаций как к измеряемому показателю качества, а не как к чувству. Практический подход:
- Создайте тестовый набор реальных вопросов с известными правильными ответами и источниками.
- Включите вопросы, от которых система должна отказаться, поскольку ответа нет в данных.
- Оценивайте ответы на правильность, верность источникам и уместность отказов.
- Запускайте набор при каждом изменении подсказок, моделей или настроек поиска.
- Примеры производственных переговоров для проверки человеком.
Здесь также применима дисциплина регрессионного тестирования: фиксированный набор случаев, запускаемый при каждом изменении, с результатами, сравниваемыми с течением времени. При выборе способа заземления системы наше сравнение RAG с точной настройкой и быстрым проектированием объясняет компромиссы.
Советы для обычных пользователей
- Проверяйте факты, цифры, цитаты и цитаты из первоисточника.
- Будьте особенно осторожны с медицинской, юридической и финансовой информацией.
- Вставьте исходный текст и попросите помощника отвечать только из него.
- Спросите «насколько вы уверены в себе и на чем это основано?», но помните, что ответ может быть и неправильным.
Можно ли избавиться от галлюцинаций?
Не с нынешними технологиями. Новые модели и лучшее обучение снизили уровень галлюцинаций по многим показателям, а заземление очень помогает, но каждая система по-прежнему допускает ошибки. Реалистичная цель — сделать ошибки редкими, легко обнаруживаемыми и с минимальными последствиями за счет проектирования системы, тестирования и четких сигналов пользователям.
Галлюцинации в инструментах кодирования ИИ
Разработчики ежедневно встречают в помощниках по кодированию галлюцинации: метод, которого нет в классе, устаревший параметр конфигурации или уверенное объяснение ошибки, которая на самом деле вызвана чем-то другим. Средства защиты — это те, которые вы уже используете для человеческого кода. Скомпилируйте или проверьте тип результата, запустите тесты и прочитайте официальную документацию для любого API, который вы раньше не использовали. Будьте особенно осторожны с кодом, чувствительным к безопасности, таким как аутентификация, криптография и проверка ввода, где правдоподобный код может быть небезопасным. Относитесь к предложениям ИИ как к черновикам быстрого, но ненадежного коллеги: часто они полезны, но никогда не исправляются автоматически.
Итоги
Галлюцинации возникают из-за того, как работают языковые модели: они генерируют вероятный текст, а не проверенные факты. Их нельзя отключить, но можно спроектировать вокруг них. Обосновайте ответы на достоверных данных, дайте модели сказать «Я не знаю», добавьте автоматические проверки важных деталей и непрерывно измеряйте результаты.
Часто задаваемые вопросы
Что такое галлюцинация ИИ?
Это когда система искусственного интеллекта выдает ложную или неподтвержденную информацию и представляет ее как правдивую, например вымышленную статистику, цитаты или детали политики.
Почему модели ИИ галлюцинируют?
Языковые модели прогнозируют вероятный текст на основе шаблонов, а не проверенных фактов. Пробелы в обучающих данных, расплывчатые подсказки и обучение, поощряющее угадывание всего, повышают вероятность галлюцинаций.
RAG останавливает галлюцинации?
Это уменьшает их, предоставляя модели достоверную информацию, но не останавливает их. Модель по-прежнему может неправильно интерпретировать источники, а поиск может возвращать неправильные документы.
Как обнаружить галлюцинации ИИ?
Сравнивайте ответы с исходными документами, автоматически проверяйте цифры и цитаты, используйте вторую модель для проверки утверждений и просматривайте образцы вместе с людьми.
Исчезнут ли когда-нибудь галлюцинации ИИ?
Показатели падают по мере совершенствования моделей, но ни один из существующих методов не устраняет их полностью. Важные результаты по-прежнему нуждаются в проверке и человеческом анализе.
Продолжайте учиться
Нужна помощь с тестированием, WordPress или SEO?
Мы помогаем командам выпускать лучшее программное обеспечение и развивать свои сайты. Расскажите нам, над чем вы работаете, и мы предложим четкий следующий шаг.
Больше руководств по тестирование, искусственный интеллект и современные разработки
Понравилась эта статья? Выберите тему и сразу приступайте к нашим новейшим руководствам.
Объяснение галлюцинаций искусственного интеллекта: почему языковые модели все выдумывают и как их уменьшить
Галлюцинации ИИ объяснили: что это такое, почему языковые модели их создают, распространенные типы, как уменьшить их с помощью заземления и подсказо…
Читать статью →DevOpsОбъяснение переменных среды: файлы .env, секреты и правильно выполненная конфигурация
Переменные среды объясняются на примерах Python, которые мы запускали: их чтение и установка, почему каждое значение является строкой, файлы .env, н…
Читать статью →Разработка ПООбъяснение ограничения скорости API: алгоритмы, заголовки и обработка ошибок 429
Ограничение скорости API объясняется с помощью проведенного нами моделирования: сегмент токенов, фиксированное окно, скользящее окно, 429 ответов, з…
Читать статью →Автоматизация тестированияИздевательство в Python: unittest.mock, патч и ошибки, из-за которых тесты лгут
Издевательство на Python с помощью unittest.mock, протестировано: Mock и return_value, Side_effect, исправление использования имени, спецификация и …
Читать статью →Тестирование ПООбъяснение покрытия кода: покрытие линий или ветвей и что на самом деле означает 100%
Покрытие кода объяснено с помощью реального запуска покрытия.py: покрытие строк, ветвей и условий, чтение отчета, почему 100%-ное покрытие все еще м…
Читать статью →Базы данных и SQLDELETE, TRUNCATE и DROP в SQL: различия, откат и когда использовать каждый из них
Объяснение DELETE, TRUNCATE и DROP на примере протестированного SQL: что каждый из них удаляет, откат, триггеры, сброс идентификаторов, скорость и ч…
Читать статью →Базы данных и SQLОбъяснение представлений SQL: создавайте, используйте и избегайте ловушек, с примерами
Представления SQL, объясненные с помощью запросов, которые мы выполняли: создание представления, результаты в реальном времени, скрытие столбцов, пр…
Читать статью →Разработка ПОИнтерфейс TypeScript и тип: реальные различия, протестированные с помощью компилятора
Интерфейс TypeScript против типа, проверенный реальным компилятором: что могут делать оба, что может делать только один, слияние объявлений, расшире…
Читать статью →Разработка ПООбъяснение Python *args и **kwargs: гибкие функции с понятными примерами
Python *args и **kwargs, объясненные с помощью кода, который мы запускали: упаковка и распаковка, порядок параметров, аргументы только по ключевым с…
Читать статью →Разработка ПОЛямбда-функции Python: синтаксис, реальное использование и когда их не следует использовать
Лямбда-функции Python, объясненные с помощью кода, который мы запускали: синтаксис, сортировка с помощью ключа, карты и фильтра, замыкания, ловушка …
Читать статью →Искусственный интеллектЧто такое ИИ-агенты? Как они работают: можно запустить простой цикл агента
Что такое агенты ИИ? Простое руководство по циклу агента, инструментам, памяти и ограничениям, с небольшим циклом Python, который мы запустили, реал…
Читать статью →DevOpsМониторинг и наблюдаемость: реальная разница с журналами, метриками и трассировками
Объяснение мониторинга и наблюдаемости: известные и неизвестные сбои, журналы, метрики и трассировки, пошаговое руководство по инцидентам при оформл…
Читать статью →DevOpsDocker Volumes против Bind Mounts: правильное сохранение данных контейнера
Объяснение томов Docker и монтирования привязки: почему исчезают данные контейнера, именованные тома, монтирование привязки, tmpfs, примеры создания…
Читать статью →Автоматизация тестированияTDD против BDD: ключевые различия, одна функция, созданная для обоих способов, и когда использовать каждый
TDD и BDD объясняются с помощью одной функции скидки, созданной в обоих направлениях: красно-зеленый рефакторинг с кодом, который мы запускали, сцен…
Читать статью →Разработка ПОGit merge vs rebase: отличия, примеры и когда что использовать
Git merge vs rebase с реальным выводом log, сравнительной таблицей, золотым правилом rebase и безопасным рабочим процессом для команды.
Читать статью →Разработка ПОГенераторы списков в Python: синтаксис, примеры и когда их избегать
Генераторы списков в Python: синтаксис, фильтры, if-else, вложенные циклы, измеренное время и случаи, когда обычный цикл for лучше.
Читать статью →Базы данных и SQLSQL JOIN: объяснение с примерами (Inner, Left, Right, Full)
Разберите SQL JOIN шаг за шагом на примерах таблиц и запросов: INNER, LEFT, RIGHT, FULL, CROSS и SELF, а также частые ошибки и советы по производите…
Читать статью →