TL;DR
Distribution-Calibrated Aggregation — метод агрегации множественных оценок от LLM-судьи, который учитывает полное распределение голосов, а не только большинство. Вместо простого подсчёта "за" и "против", метод анализирует два параметра: margin (насколько решительное большинство: 5:4 vs 9:0) и decisiveness (как часто модель выбирает ничью). Калибруется на небольшом наборе примеров через Bradley-Terry-Davidson модель, затем агрегирует новые оценки с учётом силы консенсуса.
Исследователи обнаружили два критических факта про LLM-судей: (1) Опция "ничья" резко снижает позиционный bias — gemini-2.5-flash показывал 14.6% bias в forced-choice режиме, но всего 2.4% когда разрешили ничью. (2) Частота ничьих крайне нестабильна — один и тот же датасет на одной модели даёт от 12% до 37% ничьих в зависимости от формулировки промпта. Стандартное большинство голосов не различает узкий перевес (5 против 4) и единогласное решение (9 против 0), выбрасывая ценную информацию о силе доказательств.
Метод работает в два этапа: (1) Калибровка — на небольшом calibration set (~5% данных) обучает вероятностную модель, которая связывает распределение голосов с правильным ответом. (2) Агрегация — для новой пары берёт n независимых оценок (с reasoning), считает голоса за A, B и tie, извлекает признаки margin и tie-evidence, пропускает через модель и выбирает решение с минимальным ожидаемым риском.
Схема метода
Калибровка (один раз, офлайн):
ШАГ 1: Собрать голоса на calibration set
→ Для каждого примера: подсчитать (votes_A, votes_tie, votes_B)
ШАГ 2: Извлечь признаки
→ margin s = ½ log((votes_A + α)/(votes_B + α))
→ tie_evidence t = log((votes_tie + κ)/(n + κ))
ШАГ 3: Обучить Bradley-Terry-Davidson модель
→ Минимизировать DRPS на calibration set
→ Получить параметры (β, η₀, γ)
Агрегация (для каждой новой пары):
ШАГ 1: Сгенерировать n независимых оценок
→ n/2 запросов в порядке A-then-B
→ n/2 запросов в порядке B-then-A
→ Каждый с reasoning + rating (-1, 0, +1)
ШАГ 2: Подсчитать голоса и признаки
→ Подсчитать (votes_A, votes_tie, votes_B)
→ Вычислить margin s и tie_evidence t
ШАГ 3: Применить калибровочную модель
→ Вычислить вероятности p(-1), p(0), p(+1)
→ Вычислить риски для каждого решения
→ Выбрать решение с минимальным риском
Пример применения
Задача: Ты запускаешь сервис оценки текстов для маркетплейса — нужно сравнивать описания товаров и выбирать лучшее. Делаешь 12 независимых оценок через API gemini-2.5-flash для каждой пары.
Реальная ситуация: - Пара 1: Описание А получило 7 голосов, описание Б — 3, ничьих 2 - Пара 2: Описание А получило 11 голосов, описание Б — 1, ничьих 0
Простое большинство выберет А в обоих случаях. Но в первой паре консенсус слабый (7:3), а во второй — подавляющий (11:1).
Промпт для одной оценки (повторяется n раз):
Сравни два описания товара и определи какое лучше.
ОПИСАНИЕ А:
{текст_А}
ОПИСАНИЕ Б:
{текст_Б}
Критерии:
- Понятность для покупателя
- Полнота информации
- Убедительность
Рассуждай вслух, затем выбери:
+1 если А лучше
-1 если Б лучше
0 если равноценны (ничья)
Формат ответа:
РАССУЖДЕНИЕ: [твой анализ]
ОЦЕНКА: [число]
Результат с Distribution-Calibrated методом: Для пары 1 (7:3:2) метод может выбрать tie, потому что margin небольшой и есть 2 голоса за ничью — недостаточно консенсуса. Для пары 2 (11:1:0) уверенно выберет А — подавляющее большинство. Калибровочная модель автоматически находит оптимальные пороги: где узкий перевес должен превратиться в ничью, а где решительное большинство достаточно для выбора.
Почему это работает
Слабость LLM: Одна оценка от модели шумная — на одной и той же паре модель может выдать разные вердикты из-за temperature sampling, порядка предъявления (позиционный bias), формулировки промпта. Позиционный bias особенно силён: gemini-2.5-flash в forced-choice режиме предпочитал первую позицию в 14.6% случаев. Опция "ничья" снижает этот bias до 2.4%, но создаёт новую проблему — частота ничьих крайне нестабильна: три слегка разных промпта на одном датасете дают 12%, 21% и 37% ничьих.
Сильная сторона LLM: Модель хорошо генерирует множественные независимые оценки с рассуждениями. Когда делаешь n запросов с temperature > 0 и чередуешь порядок (A-B и B-A), получаешь распределение голосов, которое содержит информацию не только что выбрать, но и насколько уверенно. Распределение 9:0:1 качественно отличается от 5:4:1 — первое показывает сильный консенсус, второе — неопределённость.
Как метод использует силу: Простое большинство голосов выбрасывает информацию о силе консенсуса — оно не видит разницы между 5:4 и 9:0, обе превращаются в "выбрать А". Distribution-Calibrated метод смотрит на два ключевых сигнала: (1) Margin — насколько перевес (логарифм отношения голосов), (2) Tie-evidence — сколько моделей выбрали ничью. Калибровка на небольшом наборе (~5% данных) учит модель где проходят границы: когда узкий margin должен стать tie, а когда широкий — уверенным выбором. Это как научить систему различать "спорное решение" и "очевидный победитель".
Рычаги управления:
Количество сэмплов n → Больше сэмплов = точнее оценка распределения, но дороже. Исследование показало что n=12 достаточно для большинства задач, дальше прирост качества минимален. Для простых задач можно n=4.
Temperature при сэмплировании → T=0.5 даёт хороший баланс между разнообразием оценок и их адекватностью. T=0 (greedy) убьёт разнообразие — все сэмплы будут одинаковыми при фиксированном порядке.
Чередование порядка → n/2 сэмплов A-B, n/2 сэмплов B-A обязательно для нейтрализации позиционного bias.
Размер calibration set → Исследование использовало 5% от данных. Можно больше для повышения качества калибровки, но даже малый набор (~25-50 примеров) даёт значительный выигрыш.
Упрощённый шаблон для чата
Полная математическая реализация требует код (нужно минимизировать DRPS, обучать модель). Но можно попросить LLM эмулировать логику метода.
Ты — система агрегации множественных оценок. Я дам тебе результаты {n} независимых оценок пары (A vs B), каждая с reasoning и rating (-1, 0, +1).
ПРИНЦИПЫ АГРЕГАЦИИ:
1. Учитывай СИЛУ КОНСЕНСУСА, не только большинство:
- Решительное большинство (9:0, 8:1) → уверенный выбор
- Узкий перевес (5:4, 6:5) → склоняйся к TIE
2. Учитывай ЧАСТОТУ НИЧЬИХ:
- Если >30% оценок выбрали tie → сигнал что пара равноценна
- Если 0% ничьих + решительное большинство → уверенный выбор
3. БАЛАНС двух факторов:
- MARGIN: насколько голосов больше у победителя
- DECISIVENESS: насколько модели были решительны (не выбирали tie)
ГОЛОСА:
{вставь результаты: например "A: 7 голосов, B: 3 голоса, Tie: 2 голоса"}
ЗАДАЧА:
1. Проанализируй margin: {7-3=4 при n=12}
2. Проанализируй decisiveness: {2 ничьих из 12 = 17%}
3. Примени логику: узкий/широкий margin × низкая/высокая частота ничьих
4. Выбери финальный вердикт: A wins / B wins / TIE
ФОРМАТ ОТВЕТА:
АНАЛИЗ MARGIN: [твой анализ]
АНАЛИЗ DECISIVENESS: [твой анализ]
ФИНАЛЬНЫЙ ВЕРДИКТ: [A/B/TIE]
УВЕРЕННОСТЬ: [высокая/средняя/низкая]
Пояснение плейсхолдеров:
- {n} — количество независимых оценок (обычно 4-12)
- {вставь результаты} — подсчитанные голоса, например "A: 7, B: 3, Tie: 2"
Для массовой обработки: LLM не заменит полноценную калибровку, но может применить эвристики, близкие к логике метода. Для production лучше реализовать через код с настоящей калибровкой.
Ограничения
⚠️ Требуется калибровка: Полная реализация метода требует обучить вероятностную модель на calibration set. Это нельзя сделать в чате — нужен код для минимизации DRPS и фиттинга параметров.
⚠️ Стоимость inference: Метод требует n независимых вызовов LLM для каждой пары. При n=12 это 12× дороже одной оценки. Экономия только если сравниваешь с human evaluation.
⚠️ Зависимость от calibration set: Качество агрегации зависит от того, насколько calibration set похож на реальные данные. Если характер задачи меняется — нужна рекалибровка.
⚠️ Не для быстрых решений: Если нужен мгновенный ответ, этот метод избыточен. Он для ситуаций где точность важнее скорости и стоимости.
Как исследовали
Команда из Google и DeepMind проверила метод на восьми бенчмарках: два датасета машинного перевода из WMT23 (EN→DE и ZH→EN) и шесть задач из Reward Bench 2 (оценка reward моделей: фактчекинг, математика, безопасность, точное следование инструкциям, фокус, определение ничьих). В WMT использовали consensus-based evaluation — каждый сегмент оценивали 6-10 независимых human raters, затем брали majority vote как ground truth. Это позволило сравнить LLM-судей не просто с одним человеком, а с консенсусом группы экспертов.
Сравнивали с семью baseline методами агрегации: greedy decoding, few-shot с примерами, Self-Consistency (простое большинство), Soft Self-Consistency (взвешивание по confidence scores), Confidence-Informed (weighted majority vote), Generative Self-Aggregation (просят LLM синтезировать новый ответ из n сэмплов), Universal Self-Consistency (LLM выбирает наиболее консенсусный ответ). Тестировали три Thinking LLM: gemini-2.5-flash, qwen3-next-80b, gpt-oss-120b.
Ключевой инсайт из результатов: Distribution-Calibrated метод последовательно выигрывает на всех восьми задачах при любом n (от 4 до 20 сэмплов). Особенно сильно превосходство на задачах где высокая частота ничьих — там baseline методы деградируют с ростом n, а калибровочный метод продолжает улучшаться. На задаче RB2-Ties при n=12 разница в pairwise accuracy составила 91.8% vs 84.2% (следующий лучший baseline). При этом Simple Self-Consistency часто деградирует с ростом n — на задаче RB2-Factuality MAE вырос с 0.615 до 0.647 при увеличении с n=4 до n=12. Это показывает что "больше голосов" без правильной агрегации может навредить.
Исследователи также обнаружили парадоксальное явление: на некоторых задачах калибровочный метод с LLM-судьёй превосходит точность индивидуальных human raters при сравнении с consensus ground truth. Это не значит что LLM "умнее людей" — это означает что правильно откалиброванная агрегация множественных оценок приближается к качеству группового консенсуса, тогда как один человек более шумный.
Адаптации
🔧 Техника: Упрощённая weighted aggregation без калибровки
Если нет возможности обучить модель, можно использовать эвристическое правило, вдохновлённое методом:
Правило агрегации для n голосов:
1. Подсчитай: votes_A, votes_B, votes_tie
2. Вычисли:
- margin = votes_A - votes_B
- tie_rate = votes_tie / n
3. Применяй пороги:
- Если tie_rate > 0.33 → выбери TIE (треть модели видит ничью)
- Если |margin| < 0.2×n → выбери TIE (слишком узкий перевес)
- Иначе → выбери сторону с большинством голосов
Пример при n=10:
- 5 A, 3 B, 2 tie: margin=2 (20%), tie_rate=20% → близко к порогам → TIE
- 7 A, 2 B, 1 tie: margin=5 (50%), tie_rate=10% → уверенный выбор → A
- 4 A, 4 B, 2 tie: tie_rate=20%, margin=0 → TIE
Эту логику можно кодифицировать в промпт для LLM-агрегатора или реализовать простым скриптом. Пороги (0.33 для tie_rate, 0.2 для margin) — эмпирические; можно настроить под свои данные методом проб.
🔧 Техника: Consensus confidence score
Добавь к финальному вердикту числовой индикатор уверенности:
confidence = (max(votes_A, votes_B) - second_max) / n
Пример:
- 9 A, 1 B, 0 tie → confidence = (9-1)/10 = 0.8 (высокая)
- 5 A, 4 B, 1 tie → confidence = (5-4)/10 = 0.1 (низкая)
Используй confidence для downstream решений: - confidence > 0.6 → автоматически принять вердикт - confidence 0.3-0.6 → передать human reviewer - confidence < 0.3 → автоматически пометить как TIE
Ресурсы
Distribution-Calibrated Inference Time Compute for Thinking LLM-as-a-Judge — исследование Google, Google DeepMind и Google Research. Авторы: Hamid Dadkhahi, Firas Trabelsi, Parker Riley, Juraj Juraska, Mehdi Mirzazadeh.
Связанные работы упомянутые в исследовании: - Self-Consistency (Wang et al., 2023) — baseline для majority voting - Bradley-Terry-Davidson model (Davidson, 1970) — математическая основа метода - WMT23 dataset (Song et al., 2025) — бенчмарк для машинного перевода - Reward Bench 2 (Malik et al., 2025) — бенчмарк для оценки reward моделей
