中文翻译暂不可用,显示俄语原文。
Как вы калибруете LLM-судью под человеческие оценки?
Краткий тезис
Калибровка LLM-судьи — это процесс настройки промпта, параметров декодирования и, при необходимости, постобработки, чтобы оценки модели максимально совпадали с человеческими (human labels). Основной метод: собрать 200–500 размеченных человеком примеров, измерить согласие через Cohen’s Kappa или Spearman correlation, затем итеративно улучшать промпт (few-shot, rubric, chain-of-thought) и подбирать temperature (обычно 0). Для критических случаев применяют fine-tuning судьи на собранных данных или ансамбль нескольких LLM-судей.
1. Термин «LLM-судья» и зачем его калибровать
LLM-судья (LLM-as-a-judge) — это большая языковая модель, которой поручают оценивать качество ответов другой LLM (или той же) по заданным критериям: полезность, безопасность, соответствие фактам, стиль и т.д. Используется как дешёвая альтернатива человеческой оценке при разработке и мониторинге.
Зачем калибровать Без калибровки LLM-судья может:
- быть слишком строгим или слишком снисходительным (bias);
- путать критерии (например, оценивать длину вместо релевантности);
- давать нестабильные результаты при изменении формулировки запроса.
Калибровка приводит оценки судьи в соответствие с золотым стандартом — оценками человека.
2. Сбор человеческих оценок (gold standard)
Для калибровки нужен датасет из 200–500 примеров, где каждый пример содержит:
- запрос пользователя (prompt);
- ответ модели (candidate);
- оценку человека (обычно по шкале 1–5 или бинарно «хорошо/плохо»).
Правила сбора
- Примеры должны покрывать типичные сценарии использования (разные темы, сложность, типы ошибок).
- Каждый пример оценивают 2–3 аннотатора, затем согласие между ними проверяют через Fleiss’ Kappa (для >2 аннотаторов) или Cohen’s Kappa (для двух). Если согласие низкое (<0.6), инструкции для аннотаторов нужно уточнить.
- Разметка может быть абсолютной (оценка ответа) или сравнительной (какой из двух ответов лучше). Для калибровки чаще используют абсолютную, так как она проще для судьи.
3. Метрики согласия между LLM-судьёй и человеком
После получения оценок от LLM-судьи (с начальным промптом) считаем метрики согласия.
3.1 Cohen’s Kappa (для категориальных шкал)
Учитывает случайное совпадение. Интерпретация:
- < 0 — нет согласия;
- 0–0.2 — слабое;
- 0.21–0.4 — удовлетворительное;
- 0.41–0.6 — среднее;
- 0.61–0.8 — хорошее;
- 0.81–1 — почти полное.
Формула (необязательно запоминать, но полезно понимать):
κ = (p_o - p_e) / (1 - p_e)
где p_o — наблюдаемая доля совпадений, p_e — ожидаемая доля случайных совпадений.
3.2 Spearman correlation (для порядковых шкал)
Измеряет монотонную связь между рангами оценок. Значения от -1 до 1. Для калибровки целевое >0.7.
3.3 Дополнительные метрики
- Accuracy (доля точных совпадений) — проста, но не учитывает смещение.
- F1-score для бинарных шкал.
- Kendall’s Tau — альтернатива Spearman, более устойчива к выбросам.
Пример расчёта на Python
from sklearn.metrics import cohen_kappa_score, accuracy_score
from scipy.stats import spearmanr
human_scores = [5, 4, 3, 5, 2, 1, 4, 3]
llm_scores = [5, 4, 2, 5, 3, 1, 4, 3]
kappa = cohen_kappa_score(human_scores, llm_scores)
acc = accuracy_score(human_scores, llm_scores)
rho, _ = spearmanr(human_scores, llm_scores)
print(f"Cohen's Kappa: {kappa:.3f}")
print(f"Accuracy: {acc:.3f}")
print(f"Spearman: {rho:.3f}")
4. Подбор промпта для LLM-судьи
Промпт — главный рычаг калибровки. Основные техники:
4.1 Чёткое определение критериев (rubric)
Включите в промпт шкалу с описанием каждого балла. Пример для оценки полезности (1–5):
Оцени полезность ответа по шкале:
1 – ответ не по теме или вреден
2 – частично релевантен, но неполный
3 – в целом полезен, но есть мелкие недостатки
4 – полезен, точен, хорошо структурирован
5 – исчерпывающий, идеально отвечает на запрос
4.2 Few-shot примеры
Добавьте 2–4 примера с правильными оценками (человеческими). Это задаёт «якорь» для судьи.
Пример 1:
Запрос: "Как приготовить яичницу?"
Ответ: "Разбей яйца на сковороду."
Оценка человека: 2 (слишком кратко, нет деталей)
4.3 Chain-of-Thought (CoT)
Попросите судью сначала объяснить, почему ответ хорош или плох, а потом поставить оценку. Это повышает согласие на 5–15%.
Сначала напиши краткий анализ ответа, затем поставь оценку в формате "Оценка: X".
4.4 Формат вывода
Фиксированный формат (JSON, только число) упрощает парсинг и уменьшает вариативность.
Твой ответ должен быть в формате JSON: {"score": <число>, "reason": "<строка>"}
5. Настройка параметров декодирования
5.1 Temperature
Для оценки temperature = 0 (или 0.0–0.1). Ненулевая температура вносит случайность, что снижает воспроизводимость и согласие.
5.2 Top-p, top-k
Обычно оставляют по умолчанию (1.0, 50) или выключают (top-p=1). При temperature=0 они не влияют.
5.3 Max tokens
Достаточно 100–200 токенов для оценки. Слишком большой лимит может привести к многословию и шуму.
6. Калибровка через пост-обработку
Если после настройки промпта смещение остаётся, можно применить коррекцию:
6.1 Platt scaling (для бинарных шкал)
Обучаем логистическую регрессию на парах (сырая оценка LLM → человеческая оценка). Позволяет перекалибровать вероятности.
6.2 Линейная коррекция (для непрерывных шкал)
Если LLM систематически завышает на 0.5 балла, вычитаем поправку: corrected = llm_score - bias.
6.3 Бакетинг (binning)
Группируем оценки в категории (например, 1–2 → плохо, 3–4 → средне, 5 → отлично) и считаем согласие уже на категориях.
7. Итеративный процесс калибровки
- Собрать gold standard (200–500 примеров).
- Запустить baseline (простой промпт без калибровки) → посчитать метрики.
- Проанализировать ошибки: где судья расходится с человеком? (например, завышает оценки длинным ответам).
- Изменить промпт: добавить рубрику, few-shot, CoT.
- Повторить оценку на том же датасете → метрики должны улучшиться.
- Проверить на отложенном датасете (100–200 примеров) — нет ли переобучения под конкретные примеры.
- Зафиксировать промпт и параметры. При изменении оцениваемой модели или домена — калибровать заново.
8. Продвинутые методы
8.1 Fine-tuning LLM-судьи
Если базовый промпт не даёт нужного согласия (Kappa < 0.6), можно дообучить небольшую модель (например, Llama 3 8B) на парах (запрос+ответ → оценка). Это требует больше данных (1000+ примеров), но даёт лучшее качество.
8.2 Ансамбль судей
Использовать несколько LLM (разных моделей или разных промптов) и усреднять их оценки. Повышает робастность, но увеличивает стоимость.
8.3 Калибровка с учётом уверенности
Попросить судью указать уверенность (например, «уверенность: 0.8»). Затем отбрасывать оценки с низкой уверенностью или взвешивать их.
9. Ограничения и подводные камни
- Смещение в пользу собственных ответов (self-enhancement bias) — LLM-судья может выше оценивать ответы, сгенерированные той же моделью.
- Чувствительность к порядку — если сравниваются два ответа, порядок их предъявления влияет на оценку.
- Неспособность уловить тонкие ошибки — LLM-судья может пропускать фактические неточности, если они звучат правдоподобно.
- Затраты — калибровка требует человеческой разметки, что дорого.
- Дрейф — после обновления модели-судьи или изменения промпта калибровка может устареть.
10. Сравнение с альтернативами
| Метод | Стоимость | Точность | Масштабируемость |
|---|---|---|---|
| Человеческая оценка | Высокая | Высокая | Низкая |
| Автоматические метрики (BLEU, ROUGE) | Низкая | Низкая (не ловят смысл) | Высокая |
| LLM-судья (калиброванный) | Средняя | Средняя–высокая | Высокая |
| Fine-tuned LLM-судья | Высокая (обучение) | Высокая | Высокая |
Пет-проект для закрепления
Задача Разработать калиброванного LLM-судью для оценки кратких ответов на вопросы по Python (шкала 1–5).
Инструменты Python, OpenAI API (или локальная модель через Ollama), библиотека scikit-learn, pandas.
Шаги:
- Собрать 300 пар (вопрос, ответ) из Stack Overflow или сгенерировать с помощью LLM.
- Попросить 2–3 друзей оценить ответы по шкале 1–5. Вычислить Fleiss’ Kappa — если <0.6, уточнить инструкции.
- Написать базовый промпт для GPT-4o-mini: «Оцени ответ от 1 до 5 по критериям: точность, полнота, ясность».
- Получить оценки судьи, посчитать Cohen’s Kappa и Spearman.
- Улучшить промпт: добавить рубрику с описанием каждого балла, 2 few-shot примера, CoT.
- Повторить шаг 4. Если Kappa < 0.7 — добавить ещё примеры или попробовать другую модель.
- Зафиксировать финальный промпт и параметры (temperature=0).
- Написать скрипт, который принимает вопрос и ответ, возвращает оценку и анализ.
Ожидаемый результат Рабочий скрипт с метриками согласия >0.7, документация промпта и процесса калибровки.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 130 | Как вы оцениваете качество генерации в RAG? |
| 131 | Какие метрики эвалюации LLM вы знаете? |
| 133 | Как вы оцениваете безопасность ответов LLM? |
| 134 | Что такое LLM-as-a-judge и какие у него ограничения? |
| 135 | Как вы сравниваете две LLM на практике? |
Навигация
- Предыдущий: 131
- Следующий: 133
- Индекс: 00. Индекс разборов