Бенчмарки и метрики для оценки галлюцинаций в LLM

Бенчмарки и метрики для оценки галлюцинаций в LLM

Arty Erokhin

За прошедшее время в академии успело появиться очень много наборов данных и способов оценки галлюцинаций. Почти все из них – англоязычные (увы). На выбор есть и разные задачи (QA, Text Completion, Task Instructions, Text summarization и т.д.), так и разные метрики (Accuracy, AUC, F1, оценки LLM и человеком). 

В статье “Siren’s Song in the AI Ocean: A Survey on Hallucination in Large Language Models” приводится список бенчмарков ниже. В статье “A Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open Questions” их выбор куда больший (и не помещается на слайд).

Небольшой список бенчмарков из статьи

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

TruthfulQA

В данном наборе данных отобраны хитрые вопросы (для достаточно разнообразного набора тем), которые сподвигают модель к т.н. imitative falsehoods. Вообще, можно воспринимать эти вопросы, будто они просто сподвигают к ошибкам. Но если разбираться чуть детальнее, то авторы называют imitative falsehoods такие случаи, когда оптимизируемый функционал модели стимулирует ее к даче ложных ответов.

Пример вопросов для разных категорий знаний

Соответственно, от модели требуется ответить на набор вопросов. После чего ответы оценивает человек или GPT-судья. В случае GPT-судьи, используется отдельная прокси модель, которая оценивает результаты ответов изначальной модели.

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

Пример разных ответов (в зависимости от размера модели)

Оригинальную статью можно почитать по ссылке.

FactualityPrompt

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

При этом, использует любопытный подход к оценке качества генерации модели. Авторы предлагают целую группу прокси-метрик:

  1. Какая доля именованных сущностей совпадает с исходной статьей и нет ли лишних сущностей;
  2. Оценка “следствия” ответа из данных на основе NLI (Natural Language Inference) модели (NLI модель - это такая модель, которая оценивает "логичность" следования одного текста из другого. Например, если из фразы "я - кот" следует, что "я - животное". А вот из той же фразы "я - кот" вовсе не следует, что "у меня есть жабры");
  3. Перплексия нескольких вариантов генерации;
  4. Разнообразность генерируемых текстов (основанная на числе уникальных N-грамм, нормированном на длину текста);
  5. Повторяемость (как часто повторяются некоторые подстроки в тексте).

При этом, еще есть шаг фильтрации полученных текстов на предмет наличия контента для оценки (если модель написала нечто, что мы не можем проверить по источнику данных, то этот текст отбрасывается). И еще есть шаг получения "доказательств" из доверенного источника данных (в данном случае, Wiki).

Общую схему для бенчмарка можно увидеть ниже:

Общая схема FactualityPrompt

HaluEval

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

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

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

Общая схема на изображении ниже:

Общая схема HaluEval

FACTSCORE

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

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

Пример оценки подтвержденных фактов

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

Формальное описание расчета FactScore

Метрики

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

  1. Оценка человеком.
    Здесь все просто. Человек смотрит на результат и ставит оценку (бинарную или числовую) уровня галлюцинаций модели. Самый надежный способ, но и самый затратный, т.к. требует участия разметчиков в процессе оценки;
  2. Оценки на основе модели-судьи.
    Как я уже выше писал, можно обучить некую прокси-модель или GPT-судью, который будет вместо человека оценивать уровень галлюцинаций модели. Судя по статьям, этот подход работает вполне неплохо. Очевидно, что качество будет ниже человеческой оценки, но все еще достаточно хорошим, чтобы использовать этот метод. А уж скорость оценки будет сильно выше, чем у человека;
  3. Оценки на основе прокси-метрик.
    В данном случае, мы используем не прокси-модель, а некие прокси-метрики, которые коррелируют с оценкой человеком. Например, как в FactualityPrompt, где у нас есть целая группа метрик (перплексия, уникальность текста и т.п.). В целом, это может быть самым быстрым способом оценки. Но не самым надежным, т.к. мы полагаемся на прокси (которые могут не всегда хорошо отражать реальное положение дел с уровнем галлюцинаций нашей модели).


Report Page