- BrainTools - https://www.braintools.ru -

Детектор был прав, разметка врала: как мы искали слепую зону LLM-судей и нашли ошибки в эталоне

Иногда самое опасное в исследовании — получить слишком красивый результат.

Мы собрали training-free детектор галлюцинаций для RAG, получили хорошие метрики и наткнулись на группу примеров, где все шесть LLM единогласно спорили с эталонной разметкой. Сначала мы решили, что нашли общую слепую зону LLM-as-a-Judge — переносимый, заголовочный результат. Потом открыли первоисточник. И оказалось, что ошибались вовсе не модели.

Дальше — история о том, почему несущим здесь оказалась не находка и не детектор, а процедура проверки, которая поймала нас самих.

Что работает — и это мы не отзываем

Задача: grounding-галлюцинации в RAG. Модель отвечает или суммирует по источнику; «галлюцинация» — это утверждение в ответе, не подтверждаемое источником. Есть бенчмарк RAGTruth (Niu et al., ACL 2024) — тексты такого рода с человеческой разметкой неподтверждённых фрагментов.

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

Детектор показал AUROC 0.882, а консенсус шести моделей оказался лучше любого отдельного судьи. Даже без дополнительного обучения качество получилось сопоставимо с опубликованными решениями (F1 0.766 — между базовым GPT-4-turbo и дообученной Llama-2-13B). На отдельных подвыборках открытые модели младшего яруса вообще показали AUROC выше 0.91, хотя разница находится на границе статистической значимости — и это при прогоне стоимостью около доллара.

Эти результаты никуда не делись. Дальше история становится интереснее.

Странная единодушность

Нашлась подгруппа, где судьи вели себя подозрительно слаженно: все шестеро молчали (считали ответ чистым), а эталон говорил «галлюцинация». Единогласные ложноотрицательные — 31 пример, около 7.7% от всех положительных.

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

Ровно поэтому — опасно. Красивая гипотеза, которая льстит и хорошо продаётся, — первое, что стоит попытаться убить.

Как мы это проверяли

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

И оно подтвердило слепую зону. Каждое семейство систематически промахивалось на одном и том же ядре примеров, разделённая слепота держалась по всем осям.

Триумф. Примерно на минуту.

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

Переворот

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

«Фабрикации» были в источнике. Дословно. Там, где эталон писал «в источнике нет упоминания USDA», статья буквально гласила: «…экономист Министерства сельского хозяйства США Аннмари Кунс… рост на 2.5–3.5%…» — с процентами и экономистом поимённо. Три таких примера пришли из одной статьи (совпадает идентификатор источника, судя по всему — одна сессия разметки): ложные метки ходят семьями.

Дальше мы сделали то, чему сами себя учили: слепую переклассификацию всех примеров этой единогласно-«слепой» группы — слепую к тому, как на каждом вёл себя детектор, только глазами по источнику. Из примерно тридцати: 11 — доказуемые ошибки [2] разметки (сущность есть в источнике дословно), 12 — спорные (метку нельзя ни подтвердить, ни защитить — свободный текст, где «этого нет» пробивается пересказом), и лишь 7–8 — подтверждённые галлюцинации.

Три четверти меток не выдержали сверки с источником. Если говорить совсем аккуратно: в проверенной выборке независимая ревизия чаще подтверждала вывод комитета судей, чем исходную разметку. «Слепая зона 7.7%» ужимается до ~2% (7–8 подтверждённых из 402 позитивов) плюс большая серая область.

И это не односторонняя претензия к золоту. Ещё до истории с этим ядром мы проверяли ложные тревоги детектора — случаи, где он флагал, а эталон молчал. Все проверенные (11 из 11) оказались настоящими галлюцинациями, пропущенными разметкой. Золото грязно в обе стороны — и недо-, и переразмечено, — а детектор был прав против обеих ошибок. Это снимает и подозрение в черри-пикинге: мы смотрели не только на неудобные метки.

Здесь же — почему мы этому поверили, и почему это не «доверяйте LLM больше людей». Расхождение судей с эталоном стало лишь триггером обратиться к первоисточнику, а арбитром остался источник, не модель. Честная схема — не «судья правит золото», а золото ↔ судья, и при расхождении оба идут к источнику. Мы не предлагаем верить машине больше человека. Мы предлагаем не верить никому без грепа.

Урок, который переживёт эту статью

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

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

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

Честные оговорки — в текст, не в сноску

Настоящий остаток после чистки узкий: паттерн «выдуманная платформа рейтинга» на структурированных данных (несколько примеров) плюс отдельный тип — искажённые значения (перепутанные часы работы, инверсия «принимает / не принимает карты»). Это материал для отдельной будущей проверки, а не заявка на целый класс.

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

Данные, вердикты и очищенный код детектора — в отдельном публичном репозитории [3]. Перед публикацией все шесть чисел этой статьи были воспроизведены с этого репозитория офлайн, без ключей, независимой сессией, видевшей только публичный код — бит-в-бит. Инструментарий самой проверки в репозиторий не входит.

И под конец

Мы не поймали ошибку, будучи умными в моменте. Гипотеза нам нравилась, слепая зона была красивой находкой, и был соблазн записать её в результат как есть. Более того — независимый судья в тот заход вообще проверял не эту гипотезу, а тексты для другого эксперимента; источник попал ему в промт по совсем другой причине. Правило «независимый судья + источник» сработало как сеть, поймавшая не ту рыбу, за которой её ставили. Процедура поймала то, что не искала — и это свидетельство в её пользу сильнее, чем если бы мы всё предвидели.

Самое полезное, что получилось в этом проекте, — вовсе не детектор.

Детекторы можно сделать лучше. Датасеты можно заменить. Модели через полгода тоже будут другими.

А вот привычка открывать первоисточник каждый раз, когда красивая гипотеза начинает слишком хорошо складываться, останется полезной ещё очень долго.

Если эта статья чему-то и посвящена, то именно этой привычке.

Весь цикл, приведший к этой статье, — порядка 12 долларов и один месяц работы; сам переворот стоил около десятка API-вызовов.

Автор: itsjustmarsel

Источник [4]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/32827

URLs in this post:

[1] обучения: http://www.braintools.ru/article/5125

[2] ошибки: http://www.braintools.ru/article/4192

[3] отдельном публичном репозитории: https://github.com/itsjustmarsel/llm-jury

[4] Источник: https://habr.com/ru/articles/1057056/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1057056

www.BrainTools.ru

Rambler's Top100