3,583 papers
arXiv:2601.16766 73 23 янв. 2026 г. FREE

Детекторы галлюцинаций работают на любых языках, даже когда модель сильно ошибается

КЛЮЧЕВАЯ СУТЬ
Парадокс: На бенгальском и урду LLM дают правильный ответ в 2-3 раза реже (падение точности на 50-90%), но детекторы галлюцинаций теряют всего 5-20% эффективности. Метод позволяет проверять факты на любом языке, даже если модель на нём слабо обучена. SelfCheckGPT работает через консистентность: задай один вопрос 10 раз с высокой температурой. Правда повторяется, галлюцинации разбегаются — если базовый ответ совпадает с вариантами меньше чем в 50% случаев, это галлюцинация.
Адаптировать под запрос

TL;DR

Робастность детекторов галлюцинаций не зависит от языка так сильно, как точность самих ответов. Исследователи проверили как LLM отвечают на вопросы и как детекторы находят галлюцинации на 5 языках: английский, немецкий, хинди, бенгальский, урду. Тестировали 4 модели (от 7B до 70B параметров) на фактах, STEM и гуманитарных вопросах. Ключевая находка: на бенгальском и урду модели дают правильный ответ в 2-3 раза реже (падение точности на 50-90%), но детекторы галлюцинаций падают всего на 5-20%.

Причина в том, как LLM кодируют неуверенность. Модель может выдать чушь на бенгальском, но внутренние сигналы неуверенности остаются сильными — модель "знает" что не уверена, просто не может сформулировать правильный ответ. Это как человек, который чувствует что забыл ответ, но всё равно пытается что-то сказать. Детекторы ловят именно эти сигналы колебаний, а не смотрят на правильность самого текста.

Исследование описывает три техники детекции галлюцинаций. SelfCheckGPT — генерируй один вопрос 5-10 раз с высокой temperature: правда повторяется, галлюцинации разбегаются. Semantic Entropy — то же самое, но группируй ответы по смыслу через эмбеддинги: высокая энтропия кластеров = модель мечется между вариантами. MAM (Model Artifacts Method) — анализирует скрытые состояния модели на финальном слое, но требует API с доступом к внутренним активациям.


📌

Схема: SelfCheckGPT (проверка через консистентность)

ШАГ 1: Базовый ответ
Задай вопрос с temperature=0 → получи детерминированный ответ

ШАГ 2: Генерация вариантов
Задай тот же вопрос 5-10 раз с temperature=0.8-1.0 → получи разнообразные ответы

ШАГ 3: Оценка консистентности
Посчитай насколько базовый ответ "выбивается" из распределения вариантов
→ Если сильно отличается = галлюцинация

Все шаги можно выполнить вручную через копирование промпта между чатами или через API с разными temperature.


📌

Схема: Semantic Entropy (проверка через семантическую разбросанность)

ШАГ 1-2: Как в SelfCheckGPT
Генерируй базовый ответ (temp=0) + 5-10 вариантов (temp=0.8-1.0)

ШАГ 3: Кластеризация по смыслу
Преобразуй каждый ответ в эмбеддинг (через API эмбеддинг-модели)
→ Сгруппируй ответы с похожим смыслом (cosine similarity > 0.75)

ШАГ 4: Расчёт энтропии
Посчитай энтропию распределения кластеров
→ Высокая энтропия = модель раскидывает ответы по разным смыслам = неуверенность

Требует доступ к API эмбеддингов (OpenAI embeddings, Cohere, или бесплатные через HuggingFace).


📌

Пример: SelfCheckGPT для проверки фактов

Задача: Готовишь статью про историю Телеграм. Нужно проверить факт: "В каком году Павел Дуров продал ВКонтакте?" Модель может перепутать 2014 с 2013 или вообще нафантазировать сделку.

Промпт (повтори 10 раз, меняя temperature):

В каком году Павел Дуров продал свою долю в ВКонтакте? 
Ответь кратко, только год.

[Первый раз: temperature = 0]
[Раз 2-10: temperature = 1.0]

Результат:

Если модель уверена — все 10 ответов скажут "2014". Если галлюцинирует — увидишь разброс: 2013, 2014, 2015, "не продавал, его вытеснили". Чем больше разных вариантов, тем выше вероятность галлюцинации. Посчитай сколько раз повторился базовый ответ (с temp=0) среди остальных — если меньше 50%, факт под вопросом.


📌

Пример: Semantic Entropy для юридических вопросов

Задача: Консультируешь клиента по ТК РФ. Вопрос: "Сколько дней оплачиваемого отпуска положено при стаже работы 1 год?" Ошибка может стоить конфликта с работодателем.

Промпт (10 раз с разной temperature):

Сколько календарных дней оплачиваемого отпуска по ТК РФ положено 
работнику при стаже 1 год на одном месте? Ответь кратко, только число.

[temp=0, потом temp=1.0 для остальных]

Результат:

Соберёшь 10 ответов. Преобразуй в эмбеддинги (через API). Сгруппируй по смыслу: - Кластер 1: "28 дней" (5 ответов) - Кластер 2: "14 дней пропорционально" (3 ответа) - Кластер 3: "полный отпуск не положен" (2 ответа)

Три разных смысловых кластера = высокая энтропия = модель мечется = не уверена. Такой ответ опасно использовать без проверки юриста. Если бы все 10 ответов были в одном кластере "28 дней" — энтропия низкая, модель уверена.


🧠

Почему это работает

LLM не знает правду, но чувствует свою неуверенность. Когда модель генерирует текст, внутренние механизмы (attention scores, скрытые состояния) кодируют вероятностное распределение следующего токена. Если модель уверена — распределение острое, один вариант намного вероятнее. Если не уверена — распределение размазанное, много вариантов с близкими вероятностями.

При низкой температуре (0) модель всегда выбирает топ-1 вариант. При высокой температуре (0.8-1.0) — сэмплирует из распределения случайно. Если внутреннее распределение размазано (неуверенность), высокая температура выдаст разные ответы в разных запусках. Если распределение острое (уверенность) — даже при высокой температуре ответы будут похожи.

SelfCheckGPT использует эту механику без доступа к внутренностям модели — просто запускает генерацию много раз и смотрит на разброс. Semantic Entropy делает то же, но умнее: группирует ответы по смыслу, чтобы не считать "28 дней" и "двадцать восемь дней" разными.

Почему работает на любых языках: Неуверенность кодируется на уровне механизмов attention и скрытых состояний, которые универсальны для модели. Даже если токенизация для бенгальского хуже (больше токенов на символ), внутренний сигнал "я не знаю" остаётся сильным.


📌

Шаблон: SelfCheckGPT вручную

1. Скопируй свой вопрос
2. Вставь в чат с системным промптом:

Отвечай кратко и по делу. Никаких рассуждений, только финальный ответ.

{твой_вопрос}

3. Получи базовый ответ (это детерминированный ответ модели)

4. Открой 5-10 новых чатов с тем же вопросом, но попроси модель быть креативнее:

Отвечай кратко. Если не уверен — выбери наиболее вероятный вариант, 
но не бойся дать альтернативу если есть сомнения.

{твой_вопрос}

5. Сравни ответы:
   - Все похожи на базовый? → Модель уверена
   - Половина отличается? → Средняя уверенность, перепроверь
   - Каждый новый чат говорит разное? → Галлюцинация, не используй

📌

Шаблон: SelfCheckGPT через API (ChatGPT/Claude)

# Псевдокод для понимания логики, не требует программирования
# Можно попросить ChatGPT написать скрипт на основе этой логики

ВОПРОС = "{твой_вопрос}"

# Шаг 1: Базовый ответ
базовый_ответ = ask(ВОПРОС, temperature=0)

# Шаг 2: Генерация вариантов
варианты = []
for i in range(10):
    вариант = ask(ВОПРОС, temperature=1.0)
    варианты.append(вариант)

# Шаг 3: Проверка консистентности
совпадений = count(варианты, где ответ == базовый_ответ)
уверенность = совпадений / 10

if уверенность > 0.7:
    print("Модель уверена")
elif уверенность > 0.4:
    print("Средняя уверенность, перепроверь")
else:
    print("Галлюцинация")

Как использовать без кода: Попроси ChatGPT/Claude адаптировать этот шаблон под твой вопрос и выполнить проверку:

Выполни SelfCheckGPT для моего вопроса: "{твой_вопрос}"

1. Ответь на него один раз максимально точно (как если бы temperature=0)
2. Потом ответь на него же 10 раз, представляя разные варианты (как если бы temperature=1.0)
3. Сравни насколько первый ответ совпадает с остальными 10
4. Скажи мне: уверена ли ты в первом ответе или это может быть галлюцинация?

⚠️

Ограничения

⚠️ Стоимость токенов: SelfCheckGPT требует 10 запросов на каждый вопрос — это дорого при частой проверке. Semantic Entropy ещё дороже (нужны эмбеддинги всех ответов).

⚠️ Не работает для субъективных вопросов: Если вопрос допускает много правильных ответов ("как лучше написать email клиенту?"), разброс ответов — это норма, не галлюцинация. Метод только для фактических вопросов с одним правильным ответом.

⚠️ Semantic Entropy требует API эмбеддингов: Нужен доступ к эмбеддинг-модели (OpenAI, Cohere, или HuggingFace). Без этого — только SelfCheckGPT "на глаз".

⚠️ MAM недоступен в чатах: Model Artifacts Method требует доступа к скрытым состояниям модели — это возможно только через специализированные API (OpenAI API не даёт hidden states, только logprobs). Для обычного пользователя чатов — недоступно.

⚠️ Ложные срабатывания на редких фактах: Если модель знает редкий факт слабо (например, столица малоизвестной страны), она может давать разные ответы даже будучи близкой к правде. Детектор покажет галлюцинацию, хотя один из вариантов был правильным.


🔍

Как исследовали

Команда создала mTREx — мультиязычную версию датасета TREx (факты из Википедии) через перевод английских вопросов на немецкий, хинди, бенгальский и урду с помощью GPT-4o-mini. Выбрали именно эту модель для перевода, потому что она лучше остальных справилась с собственными именами — не переводила "Future Shop" как "магазин будущего", а сохраняла как есть. Носители языков проверили 600 случайных примеров — 90% переводов оказались корректны.

Взяли 4 модели (Mistral-7B, LLaMA-8B, Mistral-24B, LLaMA-70B) и прогнали через 5 задач: три категории фактов (столицы, страны, официальные языки) + STEM и гуманитарные вопросы из Global MMLU. Сравнили точность ответов и точность детекторов по метрике AUROC (Area Under ROC curve — показывает насколько хорошо детектор отличает правду от галлюцинации независимо от порога отсечки).

Результат удивил: На бенгальском точность падала с 70-80% до 10-30% (падение на 50-70 процентных пунктов), но AUROC детекторов падал с 80-85% до 70-80% (падение всего на 5-15 п.п.). Ввели метрику TPHR (Task Performance to Hallucination Ratio) — во сколько раз падение точности больше падения детектора. В большинстве случаев TPHR > 1, то есть детектор падает в 10+ раз меньше, чем точность ответов.

Почему так? Проверили корреляцию с качеством токенизации: на бенгальском и урду один символ = 2-3 токена (против 0.3-0.5 на английском), модель неэффективно обрабатывает текст. Но механизмы неуверенности (attention, скрытые состояния) работают независимо от токенизации — даже плохо обработав текст, модель "понимает" что не уверена.

Дополнительно проверили кросс-лингвальный transfer (обучить детектор на английском, применить на хинди) — провалился. Но мультиязычное обучение (смешать данные из всех языков) дало результат почти как для каждого языка отдельно. Вывод: детектору нужны примеры галлюцинаций на целевом языке, но не обязательно много — даже небольшая примесь данных из языка X в общий датасет сильно помогает.


💡

Адаптации и экстраполяции

📌

🔧 Техника: Упрощённый SelfCheckGPT (3 вместо 10 генераций)

Если токены дорогие, сократи до 3 вариантов с высокой temperature. Уверенность будет грубее, но всё равно покажет явные галлюцинации.

Пример:

Базовый ответ (temp=0): "2014"
Вариант 1 (temp=1.0): "2014"
Вариант 2 (temp=1.0): "2013"
Вариант 3 (temp=1.0): "2014"

→ 2 из 3 совпали с базовым = средняя уверенность

📌

🔧 Техника: SelfCheckGPT + объяснения (видеть ЧТО смутило модель)

Попроси модель объяснить каждый вариант ответа. Сравни не только ответы, но и аргументацию. Если модель в одном чате говорит "продал в 2014 Алишеру Усманову", а в другом "ушёл сам, никому не продавал" — это семантическая галлюцинация, даже если год один.

Промпт:

{вопрос}

Ответь кратко и объясни на чём основан ответ (1 предложение).

[Повтори 5 раз с temp=1.0]

📌

🔧 Комбинация: SelfCheckGPT как фильтр перед важным выводом

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

Пример workflow:

1. Извлеки ключевые факты из задачи (даты, цифры, имена)
2. Прогони каждый факт через SelfCheckGPT
3. Отметь факты с уверенностью < 50% как "требуют проверки"
4. Передай модели: "Используй только проверенные факты: [...], избегай сомнительных: [...]"

🔗

Ресурсы

Do LLM hallucination detectors suffer from low-resource effect? Исследование принято на EACL 2025 (Main Conference).

Ключевые отсылки из исследования: - TREx датасет (Elsahar et al., 2018) — оригинальный английский датасет фактов из Википедии - Global MMLU (Singh et al., 2025) — мультиязычная версия MMLU для академических доменов - SelfCheckGPT (Manakul et al., 2023) — оригинальная статья о методе проверки консистентности - Semantic Entropy (Farquhar et al., 2024) — оригинальная статья о методе семантической энтропии - LaBSE model (Feng et al., 2022) — языково-агностичная модель для эмбеддингов, использованная в Semantic Entropy

Код и данные: https://github.com/aisoc-lab/low-resource-hallucination-detection

Авторы: Debtanu Datta, Mohan Kishore Chilukuri, Yash Kumar (Indian Institute of Technology Kharagpur), Saptarshi Ghosh (IIT Kharagpur), Muhammad Bilal Zafar (Ruhr University Bochum, UAR Research Center for Trustworthy Data Science and Security).


📋 Дайджест исследования

Ключевая суть

Парадокс: На бенгальском и урду LLM дают правильный ответ в 2-3 раза реже (падение точности на 50-90%), но детекторы галлюцинаций теряют всего 5-20% эффективности. Метод позволяет проверять факты на любом языке, даже если модель на нём слабо обучена. SelfCheckGPT работает через консистентность: задай один вопрос 10 раз с высокой температурой. Правда повторяется, галлюцинации разбегаются — если базовый ответ совпадает с вариантами меньше чем в 50% случаев, это галлюцинация.

Принцип работы

Задай вопрос один раз с temperature=0 (детерминированный ответ). Потом задай тот же вопрос 5-10 раз с temperature=1.0 (случайная выборка из распределения вероятностей). Посчитай сколько раз базовый ответ повторился в вариантах. Если модель уверена — внутреннее распределение острое, даже при высокой температуре выдаст похожие ответы. Если не уверена — распределение размазано, каждый запуск даст разный текст.

Почему работает

Неуверенность кодируется на уровне механизмов attention и скрытых состояний, которые универсальны для модели. Даже если токенизация для бенгальского плохая (больше токенов на символ), внутренний сигнал "я не знаю" остаётся сильным. Модель может выдать чушь на бенгальском, но вероятностное распределение следующего токена будет размазанным — это ловит детектор. На английском точность ответов 70-80%, на урду 15-30%, но детектор показывает 85% vs 75% — разница всего 10 процентных пунктов при трёхкратном падении качества ответов.

Когда применять

Проверка фактов для статей, юридических консультаций, медицинских рекомендаций — везде где один правильный ответ и цена ошибки высока. Особенно полезно для многоязычного контента: проверяешь переводы на хинди, бенгальский, арабский — модель может плохо знать язык, но детектор всё равно покажет где она врёт. НЕ подходит для субъективных вопросов (как написать email, какой дизайн лучше) — там разброс ответов это норма, не галлюцинация.

Мини-рецепт

1. Базовый ответ: Задай вопрос в чате с системным промптом Отвечай кратко и по делу. Только финальный ответ, без рассуждений. — это детерминированный ответ модели
2. Генерация вариантов: Открой 5-10 новых чатов с тем же вопросом, но промпт Отвечай кратко. Если не уверен — дай наиболее вероятный вариант, но не бойся альтернативы. — это имитация высокой temperature
3. Проверка консистентности: Посчитай сколько раз базовый ответ совпадает с вариантами. Больше 70% — модель уверена. 40-70% — средняя уверенность, перепроверь. Меньше 40% — галлюцинация, не используй
4. Для API: Попроси ChatGPT выполнить эту процедуру автоматически через промпт: Выполни SelfCheckGPT для вопроса: {твой_вопрос}. Ответь один раз точно, потом 10 раз с вариациями. Скажи: уверена ли ты в первом ответе?

Примеры

[ПЛОХО] : Сколько дней оплачиваемого отпуска по ТК РФ положено при стаже 1 год? (просто спросил, модель может нафантазировать 14 или 28 дней)
[ХОРОШО] : Отвечай кратко, только число. → получил базовый ответ "28 дней". Потом 10 раз спросил с вариациями, получил: "28" (5 раз), "14 пропорционально" (3 раза), "полный не положен" (2 раза). Три разных смысла = высокая энтропия = галлюцинация. Не используй без проверки юриста. Если бы все 10 были "28" — можно доверять.
Источник: Do LLM hallucination detectors suffer from low-resource effect?
ArXiv ID: 2601.16766 | Сгенерировано: 2026-01-26 05:31

Концепты не выделены.

📖 Простыми словами

DoLLMhallucination detectors suffer from low-resource effect?

arXiv: 2601.16766

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

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

Исследование показало удивительный разрыв: на бенгальском или урду модели тупеют в разы и выдают правильный ответ всего в 10-30% случаев, тогда как на английском бьют в цель почти всегда. Казалось бы, детекторы должны посыпаться следом, но нет. Точность обнаружения бреда на редких языках падает всего на 5-20%. Получается, что модель может не знать ответа, но она почти всегда прекрасно осознает, что несет херню.

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

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

Работа с исследованием

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

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с