TL;DR
RDS — метрика неуверенности модели, которая измеряет геометрический разброс вариантов ответа в пространстве эмбеддингов. Генеришь 10 вариантов ответа на один вопрос, каждый переводишь в числовой вектор через sentence encoder, вычисляешь центр этого облака точек, затем суммируешь расстояния от каждой точки до центра — большой разброс = высокая неуверенность, маленький = модель уверена.
Существующие методы измерения неуверенности LLM либо слишком сложны (требуют кластеризацию ответов по смыслу — хрупко и чувствительно к настройкам), либо требуют доступ к внутренним состояниям модели (недоступно для API), либо нужна калибровка на отдельном датасете. EigenScore — простая геометрическая альтернатива — сильно недооценивает неуверенность в критическом случае: когда модель генерирует два противоположных по смыслу ответа ("да" vs "нет"), центроид оказывается ровно посередине на единичной сфере, почти вся дисперсия схлопывается в радиальное измерение, остальные направления показывают близкий к нулю разброс, и метрика ошибочно сигналит низкую неуверенность.
RDS использует L1-норму (сумму абсолютных значений координат) вместо L2-нормы (суммы квадратов), что даёт более сильную реакцию на разброс и лучше ловит антиподальные (противоположные) кластеры ответов. Взвешенная версия RDS_w учитывает вероятности генерации каждого ответа — варианты с низкой вероятностью (возможно шумовые) влияют меньше на итоговую оценку. Метод естественно даёт per-sample оценку для каждого отдельного ответа — можно выбрать лучший из N вариантов (best-of-N selection).
Схема метода
Агрегатная оценка неуверенности (для всей выборки ответов):
ШАГ 1: Сгенерировать N ответов (N=10) на один вопрос через sampling
ШАГ 2: Перевести каждый в эмбеддинг через sentence encoder → N векторов
ШАГ 3: Вычислить центроид (среднюю точку) всех векторов
ШАГ 4: Посчитать L1-расстояние от каждого вектора до центроида → N чисел
ШАГ 5: Суммировать все расстояния → RDS score (чем больше = выше неуверенность)
Per-sample оценка (для каждого отдельного ответа):
Для каждого ответа: L1-расстояние от его эмбеддинга до центроида
→ Ответы близкие к центру = надёжные
→ Ответы далёкие от центра = выбросы, низкая уверенность
⚠️ Требует sentence encoder (модель для перевода текста в векторы) — недоступно в обычном чате, нужен API или код.
Пример применения принципа
⚠️ Точный метод RDS требует sentence encoder. Но принцип "генерируй много — смотри на разброс" можно применить вручную или через симуляцию в LLM.
Задача: Проверить юридический документ — понять насколько модель уверена в своей интерпретации спорного пункта.
Применение принципа вручную:
- Запусти ChatGPT 5 раз (можно в новых чатах) с одним вопросом: "Что означает пункт 3.2 в этом договоре? [текст пункта]"
- Сравни ответы:
- Если все 5 интерпретаций похожи (одна идея разными словами) → модель уверена
- Если ответы сильно различаются (противоречат друг другу) → модель не уверена, нужна консультация юриста
Промпт для симуляции через LLM:
Вопрос: [твой вопрос]
Сгенерируй 5 разных вариантов ответа, используя sampling (разные формулировки, углы зрения).
Затем оцени:
1. Насколько эти варианты семантически похожи (шкала 0-10, где 0=полностью разные, 10=идентичны)
2. Есть ли среди них противоречащие друг другу
3. Вывод: высокая или низкая уверенность в ответе
Формат:
- Вариант 1: [...]
- Вариант 2: [...]
...
- Оценка похожести: X/10
- Противоречия: да/нет
- Уверенность: высокая/низкая
Результат:
Модель сгенерирует 5 вариантов ответа, сама оценит их разброс и выдаст вердикт о своей уверенности. Если разброс большой (низкая похожесть, есть противоречия) — знак что нужна дополнительная проверка, модель галлюцинирует или работает на границе своих знаний.
Почему это работает
LLM генерирует текст автоагрессивно — токен за токеном, выбирая следующий из распределения вероятностей. При высокой неуверенности (недостаточно данных, ambiguous вопрос) разные запуски sampling дают семантически разные траектории генерации — модель исследует несколько возможных ответов.
В пространстве эмбеддингов семантически похожие тексты образуют плотные кластеры, разные по смыслу — далеко друг от друга. Если модель уверена — все N ответов падают в один кластер (малый разброс), если не уверена — ответы разбросаны по разным областям (большой разброс от центроида).
L1-норма более чувствительна к выбросам чем L2-норма (квадратичная). В критическом случае антиподальных кластеров (два противоположных ответа типа "да" vs "нет"), центроид оказывается ровно посередине на единичной сфере. EigenScore (сумма квадратов) схлопывается — почти вся дисперсия в радиальном направлении, остальные измерения близки к нулю → недооценка неуверенности. RDS (сумма модулей) сохраняет чувствительность — большие расстояния не квадратируются, метрика остаётся высокой → правильно детектирует высокую неуверенность.
Вероятности генерации (RDS_w) дают дополнительный сигнал: если модель присвоила ответу низкую вероятность, он скорее шумовой — взвешенная версия сдвигает центроид к высоковероятным ответам, усиливая штраф для низковероятных выбросов.
Per-sample scoring работает по принципу self-consistency: ответы близкие к центроidu (к большинству или высоковероятным) — надёжные, далёкие — подозрительные. Это естественно вытекает из геометрии, не требует дополнительных эвристик.
Шаблон промпта
Симуляция принципа RDS через LLM
⚠️ Это не точный RDS (требует sentence encoder), но симуляция принципа "разброс = неуверенность".
Задача: {опиши задачу или задай вопрос}
Шаг 1: Сгенерируй 7 независимых вариантов ответа. Используй разные углы, формулировки, не копируй предыдущие.
Шаг 2: Для каждой пары ответов оцени семантическую близость по шкале 0-1 (0=противоположные, 1=идентичны).
Шаг 3: Вычисли среднюю попарную близость по всем парам.
Шаг 4: Интерпретация:
- Средняя близость > 0.7 → Высокая уверенность (ответы согласуются)
- 0.4 < близость < 0.7 → Средняя уверенность (есть вариативность)
- Близость < 0.4 → Низкая уверенность (ответы противоречат, высокий риск галлюцинаций)
Шаг 5: Выдай финальный ответ:
- Рекомендуемый ответ: [консенсус или вариант с максимальной близостью к остальным]
- Уровень уверенности: [высокая/средняя/низкая]
- Предупреждения: [если низкая уверенность — укажи противоречия]
Плейсхолдеры:
- {опиши задачу или задай вопрос} — твой конкретный вопрос или задача
Для ручной проверки (без LLM симуляции)
1. Задай один и тот же вопрос ChatGPT/Claude 5-10 раз (можно в новых чатах или через "regenerate")
2. Выпиши все ответы
3. Оцени глазами:
- Все похожи (одна идея, разные слова) → Модель уверена ✅
- Есть 2-3 разных подхода → Средняя уверенность ⚠️
- Сильно противоречат друг другу → Модель не уверена ❌
4. При низкой уверенности: перепроверь через другие источники, уточни вопрос, добавь контекст
🚀 Быстрый старт — вставь в чат:
Вот техника для проверки твоей уверенности в ответе. Адаптируй под мою задачу: [опиши задачу].
[вставить шаблон выше]
LLM спросит детали задачи, затем выполнит симуляцию: сгенерирует варианты ответов, сама оценит их разброс, выдаст уровень уверенности и предупреждения если детектирует противоречия.
Ограничения
⚠️ Требует инфраструктуру: Точный метод RDS требует sentence encoder (модель для перевода текста в векторы) — недоступно в обычном чате, нужен API или код. Шаблоны выше — симуляция принципа, не точная имплементация.
⚠️ Взвешенная версия требует вероятности: RDS_w использует token-level probabilities — доступно только в некоторых API (OpenAI, Anthropic предоставляют через
logprobsпараметр, не в обычном чате).
⚠️ Стоимость: Генерация 10-40 вариантов ответа увеличивает расход токенов в 10-40 раз — используй для критически важных задач (юридические документы, медицинские консультации, финансовые решения), не для рутины.
⚠️ Разброс ≠ ошибка: Высокий RDS означает модель исследует несколько гипотез, не обязательно что все неправильные. Может быть несколько корректных ответов на ambiguous вопрос. Используй как сигнал для проверки, не как вердикт.
⚠️ Зависимость от encoder: В исследовании более крупные sentence encoders (all-roberta-large-1024d) показали хуже результат чем компактные (all-miniLM-384d) на длинных reasoning traces — большие модели страдают от representation collapse на синтетических текстах.
Как исследовали
Команда из Deakin University (Австралия) взяла 4 датасета вопросов (научные QA: SciQ, GPQA; математика: Arithematics, SVAMP) и 4 современных LLM (Falcon3-7B, Gemma2-9B, Llama3.1-8B, Llama3.2-3B). Для каждого вопроса генерировали N=10 ответов через multinomial sampling (temperature=1), переводили в эмбеддинги через sentence encoder (all-MiniLM-L6-v2, 384-мерный), считали RDS и сравнивали с 9 baseline методами (semantic entropy, EigenScore, PRO, self-consistency и др.).
Метрика успеха: Area Under ROC Curve (AUC) — насколько хорошо uncertainty score разделяет правильные и неправильные greedy ответы модели. Правильность определяли через exact match (математика) или ROUGE-L F1 > 0.3 (QA задачи), как в предыдущих работах.
Что удивило: RDS и RDS_w выиграли почти везде — средний AUC 79.7% vs 77.7% у второго места (EigenEmbed). Разрыв особенно большой на математических задачах (+3-5%), где ответы имеют высокую лексическую вариативность (одна цифра/знак отличия → семантически далеко) — именно в таких случаях геометрия эмбеддингов работает лучше чем eigenvector-подходы.
Unexpected insight: Self-Consistency (просто считай сколько раз повторился ответ) силён на математике (топ-3), но проваливается на QA — работает только когда есть exact match, не подходит для свободной формы.
Robustness по N: При увеличении числа сэмплов до N=40 semantic entropy и clustering методы (SE, Deg, SD) деградируют — дополнительные низковероятные сэмплы добавляют шум в кластеризацию. RDS/RDS_w остаются стабильны или даже улучшаются — метод толерантен к шумовым генерациям.
Encoder ablation: Более крупные sentence encoders (768d, 1024d) хуже работали чем компактный 384d на сложных задачах — большие contrastive модели страдают от representation collapse на длинных синтетических reasoning traces, не видели такие тексты при обучении.
Адаптации и экстраполяции
🔧 Техника: Упрощённая проверка через консистентность поколений
Если нет доступа к sentence encoder, но нужно быстро проверить уверенность модели:
Промпт:
Задача: {твой вопрос}
Сгенерируй 3 независимых ответа. После каждого поставь "---".
Затем оцени: насколько эти 3 ответа согласуются друг с другом?
- Если все говорят одно и то же (консенсус) → пометь "✅ Высокая уверенность"
- Если есть расхождения → пометь "⚠️ Проверь дополнительно"
- Если противоречат → пометь "❌ Низкая уверенность, галлюцинации"
Эффект: Быстрая проверка без инфраструктуры. Модель сама играет роль "детектора разброса". Не так точно как RDS, но сигнал better than nothing.
🔧 Техника: Best-of-N через явное ранжирование
Если модель даёт несколько вариантов ответа, используй принцип "близость к центру = надёжность":
Промпт:
У меня есть 5 вариантов ответа на вопрос "{вопрос}":
1. {вариант 1}
2. {вариант 2}
3. {вариант 3}
4. {вариант 4}
5. {вариант 5}
Для каждого варианта вычисли "семантическую близость к консенсусу остальных" (шкала 0-10).
Ранжируй варианты по близости (10=максимально согласуется с большинством, 0=выброс).
Формат:
- Вариант X: близость Y/10
...
- Рекомендация: Вариант [номер] (максимальная близость к консенсусу)
Эффект: Симуляция per-sample RDS scoring. Модель выбирает вариант который "ближе к центру масс" остальных — по принципу RDS это наиболее надёжный ответ.
🔧 Экстраполяция: Комбинация с Chain-of-Thought для прозрачности
Если нужно не только детектировать неуверенность, но и понять ГДЕ модель сомневается:
Промпт:
Задача: {вопрос}
Шаг 1: Сгенерируй 3 варианта решения с рассуждениями (Chain-of-Thought).
Шаг 2: Для каждого варианта:
- Укажи какие факты/предположения использовал
- Оцени свою уверенность в каждом факте (высокая/средняя/низкая)
Шаг 3: Сравни 3 варианта:
- Где рассуждения расходятся?
- Какие факты вызывают споры между вариантами?
Шаг 4: Финальный вывод:
- Консенсусный ответ: [если есть]
- Точки неуверенности: [где расхождения]
- Рекомендация: [что проверить дополнительно]
Эффект: RDS показывает что есть разброс, Chain-of-Thought показывает где и почему. Получаешь не только uncertainty score, но и прозрачность — видишь какие конкретно шаги/факты вызывают разногласия между вариантами.
Ресурсы
Distance Is All You Need: Radial Dispersion for Uncertainty Estimation in Large Language Models Авторы: Manh Nguyen, Sunil Gupta, Hung Le Applied Artificial Intelligence Initiative, Deakin University, Australia
