Почему у LLM галлюцинации, подходы к смягчению последствий, проблемы с наборами оценочных данных и многое другое

Генеративные модели большого языка (LLM) могут генерировать очень плавные ответы на различные запросы пользователя. Однако их склонность к галлюцинациям или заявлениям, не связанным с фактами, может поставить под угрозу доверие.

Я думаю, что мы доведем проблему галлюцинаций до гораздо лучшего уровня… это займет у нас год-полтора-два. — Генеральный директор OpenAI Сэм Альтман

Поскольку разработчики стремятся создавать системы с моделями, эти ограничения представляют собой реальную проблему, поскольку вся система должна соответствовать требованиям качества, безопасности и обоснованности. Например, можем ли мы доверять тому, что автоматический анализ кода, проводимый LLM, верен? Или полученный ответ на вопросы о том, как решать задачи, связанные со страхованием, является достоверным?

Эта статья начинается с обзора того, почему галлюцинации остаются постоянной проблемой для студентов LLM, за которыми следуют шаги (и связанные с ними исследовательские работы), направленные на решение проблем, связанных с галлюцинациями и надежностью.

Отказ от ответственности. Информация в статье актуальна по состоянию на август 2023 года, однако имейте в виду, что впоследствии могут произойти изменения.

"Краткое содержание

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

  1. Отрегулируйте параметр температуры, чтобы ограничить креативность модели.
  2. Обратите внимание на оперативное проектирование. Попросите модель подумать шаг за шагом и предоставить в ответе факты и ссылки на источники.
  3. Включите внешние источники знаний для улучшения проверки ответов.

Сочетание этих подходов позволяет добиться наилучших результатов.

Что такое галлюцинация LLM?

Исследовательская статья Центра исследований искусственного интеллекта определяет галлюцинацию от LLM как когда сгенерированный контент бессмысленен или не соответствует предоставленному исходному контенту.

Галлюцинации можно разделить на несколько типов:

  1. Логические ошибки: модель ошибается в своих рассуждениях, давая неправильные ответы.
  2. Фальсификация фактов. Вместо ответа Я не знаю модель уверенно утверждает несуществующие факты.
    Пример: Чат-бот Google с искусственным интеллектом Бард допускает фактическую ошибку в первой демонстрации.
  3. Предвзятость, основанная на данных. Результаты модели могут быть искажены из-за преобладания определенных данных, что приведет к неверным результатам.
    Пример: Политические предубеждения, обнаруженные в моделях НЛП.

Почему у студентов-магистров галлюцинации

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

Конечно, ключом к этому сжатию является то, что генеративная модель хранит математическое представление отношений (вероятностей) между входными данными (текстом или пикселями), а не сами входные данные. Что еще более важно, это представление позволяет нам извлекать знания (путем выборки или выполнения запросов/подсказок).

Такое сжатие снижает точность воспроизведения, аналогично сжатию JPEG, как обсуждалось в статье New Yorker. По сути, полное восстановление исходных знаний становится трудной, если не невозможной, задачей. Тенденция моделей несовершенно заполнять пробелы или галлюцинировать — это компромисс для такого сжатого, но полезного представления знаний.

LLM также галлюцинируют, когда их набор обучающих данных содержит ограниченную, устаревшую или противоречивую информацию о поставленном перед ними вопросе.

Подготовка к эксперименту

Целью этой статьи является создание и проверка практических мер по уменьшению галлюцинаций и повышению производительности систем. Для этого, просмотрев различные наборы данных, я остановился на TruthfulQA Benchmark.

Хотя в наборе данных есть проблемы, такие как расхождения между правильными ответами и их источниками, он остается наиболее подходящим вариантом из-за разнообразия тем и всестороннего охвата. Я также ценю, что ответы представлены в формате викторины, что облегчает тестирование модели. Ответ легко запросить в формате JSON:

… Вернуть ответ в формате JSON, например: [{“class”: “A”}]

Я использовал набор данных из 800 строк, используя GPT-3.5 Turbo из-за его экономичности.

Другие критерии оценки галлюцинаций

Снижение температуры

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

Для задач, требующих правдивости, стремитесь к насыщенному информацией контексту и установите температуру = 0, чтобы получать ответы, основанные на контексте.

Цепочка подсказок мыслей и самосогласованность

Ошибки эталонного тестирования часто можно исправить, улучшив дизайн приглашения. Именно поэтому я уделил этой теме больше внимания.

Студенты LLM часто не справляются с многоэтапными логическими задачами, такими как арифметика или логика. Последние работы показывают, что предоставление примеров разбиения задачи на этапы повышает производительность. Примечательно, что просто подсказка Давайте подумаем шаг за шагом без конкретных примеров дает аналогичные улучшения.

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

Теперь давайте углубимся в каждый метод и оценим их качество на наборе данных.

1. Цепочка мыслей (ЦТ)

Основная идея статьи — добавить в подсказку «Думай шаг за шагом»:

Подумайте шаг за шагом, прежде чем ответить, и верните ответ в формате JSON, например: [{“class”: “A”}]”

Оценка: Accuracy = 58%

2. Самосогласованность с CoT (CoT-SC)

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

Подумайте шаг за шагом, прежде чем ответить, и дайте три ответа: если бы ответил эксперт в предметной области, если бы ответил руководитель, и ваш ответ. Вот ответ в формате JSON:

Оценка: Accuracy = 57%

3. Древо мыслей (ТоТ)

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

Представьте, что на этот вопрос отвечают три разных эксперта. Все эксперты запишут один шаг своего размышления, а затем поделятся им с группой. Затем все эксперты перейдут к следующему шагу и т. д. Если какой-либо эксперт в какой-то момент поймет, что он не прав, он уйдет. Вот ответ в формате JSON:

Оценка: Accuracy = 37%

4. Контекстные подсказки с тегами

Этот метод включает в себя создание наборов вопросов, создание контекстных подсказок посредством сводок и проверку контекстных подсказок и вопросов.

Учитывая сложность создания дополнительных наборов данных, я скорректировал свой подход, запросив ссылку на источник и факты:

Предоставьте подробную информацию и укажите источники в ответе. Верните ответ в формате JSON, например:
[{“class”: “A”, “details”: “Человеческая кровь в венах на самом деле не синяя. Кровь красная из-за присутствия гемоглобина», «источник»: «https://example.com}]

Оценка: Accuracy = 61%

5. Самоисправление

Возможно, это один из наиболее продвинутых методов оперативного проектирования. Идея состоит в том, чтобы заставить модель перепроверить и раскритиковать ее результаты, что вы можете увидеть ниже:

Выберите наиболее вероятный ответ из списка [«А», «Б», «В», «Г», «Е»]. Затем внимательно проверьте свой ответ. Подумайте, правильный ли это ответ, согласятся ли с ним другие? При необходимости улучшите свой ответ.
Верните ответ в формате JSON, например: [{“first_ответ”:”A”, “final_ответ”:”B”}]

Оценка: Accuracy = 58%

6. Несколько агентов

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

Подсказка 1

Шаг за шагом изложите факты и свои мысли, чтобы найти правильный ответ на этот вопрос: {QUESTION}.

Подсказка 2

Используя решения других агентов в качестве дополнительной информации, выберите правильный вариант ответа: {QESTION} {ANSWERS}. Вернуть ответ в формате JSON…

Оценка: Accuracy = 54%

Я бы не рекомендовал использовать этот подход в реальных приложениях, поскольку вам нужно сделать два и более запроса. Это не только увеличивает затраты на API, но и замедляет работу приложения. В моем случае на получение ответов на 800 вопросов ушло более двух часов.

Используйте внешнюю базу знаний

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

Поскольку на практике извлечение соответствующих данных из базы знаний является нетривиальной задачей, я сосредоточился на небольшой выборке (около 300 строк) из собранного мной набора данных.

В итоге мое приглашение выглядело так:

Используя эту информацию {ИНФОРМАЦИЯ}, выберите правильный ответ {ВОПРОС} и верните ответ в формате JSON…

Оценка: Accuracy = 65%

Еще предстоит поработать над фильтрацией/ранжированием извлеченных отрывков и принятием решения о том, какая часть контекстного бюджета LLM используется в этом упражнении. Кроме того, извлечение и ранжирование могут привести к задержкам, имеющим решающее значение для взаимодействия в реальном времени.

Еще один интересный подход — Поисковая дополненная генерация (RAG), который объединяет возможности поиска и генерации текста в моделях большого языка. Этот подход объединяет систему поиска для извлечения соответствующих фрагментов документов из обширного корпуса с LLM, который генерирует ответы на основе полученной информации.

Некоторые статьи по теме

Оперативное проектирование и внешняя база знаний

Этот подход объединяет предыдущие пункты. Используются различные методы оперативного проектирования и внешняя база знаний. Я реализовал логику из фреймворка CRITIC:

Используя эту информацию {ИНФОРМАЦИЯ} выберите правильный ответ {QUESTION} Затем внимательно проверьте свой ответ. Подумайте, правильный ли это ответ, согласятся ли с ним другие? При необходимости улучшите свой ответ.
Верните ответ в формате JSON, например: [{“first_ответ”:”A”, “final_ответ”:”B”}]

Оценка: Accuracy = 67%

Хотя качество не сильно улучшилось, это связано с проблемами в наборе данных, который я использовал. Некоторые «правильные» ответы не соответствуют информации из источников.

Вынос

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

Моя ключевая рекомендация? Отдайте предпочтение быстрому дизайну — это наиболее экономичный и эффективный способ избавиться от галлюцинаций.

Рекомендации

  1. Практические шаги по уменьшению галлюцинаций и повышению производительности систем, построенных с использованием больших языковых моделей — Одна из лучших статей, которые я нашел.
  2. Список чтения галлюцинаций в LLM — полезный репозиторий GitHub с различными ссылками о галлюцинациях в LLM.

Если у вас есть вопросы или предложения, смело пишите в LinkedIn.