Зачем человек, если есть автометрики

Автоматические метрики из прошлого урока закрывают многое — но упираются в две стены. Во-первых, субъективное качество: полезность, естественность, тон, тактичность — то, что определяется человеческим восприятием и плохо формализуется. Во-вторых, калибровка самих автометрик: LLM-судья и RAGAS нужно с чем-то сверять, чтобы верить их числам, — а сверяют с человеком. Человек — это ground truth, «золотой стандарт» оценки.

Но человеческая оценка дорога и медленна, поэтому её не льют на весь трафик. Роль human evaluation — точечный эталон:

  • Калибровать автоматику. Разметить 200 примеров людьми, проверить, что LLM-судья с ними согласуется, — и дальше доверять судье на объёме.
  • Оценивать то, что не формализуется. Финальное качество продукта, спорные кейсы, edge cases.
  • Строить golden datasets. Человеческие оценки становятся эталонными ответами для offline-регрессий.
ℹ️ Иерархия оценки: человек калибрует машину

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

Процесс разметки и рубрика

Ключевая идея: надёжность оценки создаётся не оценщиками, а инструкцией. Спросишь «хороший ответ?» — получишь разброс мнений и мусор. Дашь чёткую рубрику — получишь воспроизводимые числа. Хорошая разметка держится на трёх опорах.

100%
колёсико — масштаб  ·  зажать и тянуть — перемещение
Пайплайн human evaluation ① Рубрика чёткие критерии + шкала определения «1» и «5» примеры-якоря что делать в спорных чтобы оценивали ОДНО ② Оценщики (≥2) каждый пример — несколько независимо, вслепую рандомизация порядка калибровочная сессия чтобы измерить согласие ③ Agreement меряем согласованность Cohen's / Fleiss' kappa низкий → чинить рубрику разбор расхождений чтобы верить числам низкий agreement → уточнить рубрику и переразметить (петля) Надёжный человеческий эталон → калибрует LLM-judge · → golden dataset

① Рубрика — самое важное. Оценщик не должен додумывать, что значит «хорошо». Рубрика задаёт:

  • Конкретные критерии — оценивать по одному измерению за раз (правильность отдельно от тона), а не «общее впечатление».
  • Определённую шкалу — что именно значит «1», «3», «5». Бинарная (да/нет) надёжнее шкалы 1–10, где «6 или 7?» — вечный спор.
  • Примеры-якоря — образцы ответов для каждой оценки, чтобы выровнять понимание.
  • Правила для спорных — что делать при неполном/пограничном ответе.

② Несколько оценщиков на пересекающихся примерах — иначе согласованность просто не измерить. ③ Agreement — проверка, что рубрика работает (следующий раздел). Часто добавляют формат парного сравнения (A/B: «какой ответ лучше?») — людям сравнивать надёжнее, чем ставить абсолютную оценку.

✅ Сравнение (A vs B) надёжнее абсолютной оценки

Человеку трудно стабильно сказать «этот ответ на 7 из 10», но легко — «ответ A лучше ответа B». Парные сравнения дают более согласованные данные и хорошо годятся для выбора между версиями промпта/модели. Если задача — «какая версия лучше», предпочитай pairwise-разметку абсолютным баллам.

Inter-rater agreement

Допустим, два человека разметили 100 ответов. Если они постоянно расходятся — оценки бессмысленны: это шум, а не сигнал о качестве. Inter-rater agreement (IRR) — метрика согласованности оценщиков. Она отвечает на вопрос: «можно ли вообще доверять этой разметке?»

Наивно считать просто «процент совпадений» — но он обманывает: если 90% ответов хорошие, два оценщика совпадут в ~90% случаев просто случайно, даже не глядя. Поэтому используют каппу Коэна (Cohen's kappa, κ) — она вычитает согласие, ожидаемое по случайности:

κ = (наблюдаемое согласие − случайное согласие) / (1 − случайное согласие)

κ = 1.0   идеальное согласие
κ ≈ 0     согласие на уровне случайности (разметка бесполезна)
κ < 0     систематически расходятся (хуже случайности)

Ориентиры (условны, зависят от задачи):
  0.0–0.20  плохо · 0.21–0.40  слабо · 0.41–0.60  умеренно
  0.61–0.80  хорошо · 0.81–1.00  почти идеально

Cohen's kappa — для двух оценщиков; для трёх и более — Fleiss' kappa. Смысл тот же: измеряем согласие сверх случайного.

Cohen's kappa на разметке двух оценщиков
python
from sklearn.metrics import cohen_kappa_score

# оценки двух разметчиков по 8 примерам (1 = хороший ответ, 0 = плохой)
rater_a = [1, 0, 1, 1, 0, 1, 0, 1]
rater_b = [1, 0, 1, 0, 0, 1, 0, 1]

kappa = cohen_kappa_score(rater_a, rater_b)
print(f"Cohen's kappa: {kappa:.2f}")   # напр. 0.74 → хорошее согласие

# κ низкая? → проблема НЕ в оценщиках, а в РУБРИКЕ:
#   критерий размыт, шкала неоднозначна, нет примеров-якорей
#   → уточнить инструкцию, провести калибровку, переразметить
⚠️ Низкий agreement — диагноз рубрики, а не людей

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

Когнитивные искажения и как их снижать

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

ИскажениеВ чём проявляетсяПротивоядие
Position biasВ A/B чаще выбирают тот, что показан первымРандомизировать порядок вариантов
Length biasДлинный ответ кажется «качественнее»Явно в рубрике: длина ≠ качество
Halo effectКрасивое форматирование → завышают содержаниеОценивать критерии раздельно
AnchoringПервая оценка «якорит» следующиеПеремешивать примеры, паузы
FatigueК концу сессии оценки деградируютКороткие сессии, контроль-примеры
Self/brand biasОценщик знает, где «наша» модельСлепая оценка — скрыть источник
🔒 Главное правило: слепая рандомизированная оценка

Одна практика бьёт сразу несколько искажений: оценивай вслепую и в случайном порядке. Оценщик не должен знать, какая модель/версия/«чья» сгенерировала ответ, а порядок вариантов и примеров должен быть перемешан. Это снимает position bias, brand bias и частично anchoring. Плюс — контрольные примеры с известным ответом, вкраплённые в поток, чтобы ловить fatigue и халтуру.

⚠️ Эти же искажения есть у LLM-судьи

Важная связка со следующим уроком: position bias, length bias, self-bias проявляются и у LLM-as-judge — модель-судья тоже чаще выбирает первый/длинный/«свой» ответ. Приёмы борьбы те же (рандомизация порядка, критерии раздельно). Поняв искажения на людях, ты будешь готов контролировать их у автоматического судьи.

Типичные ошибки

❌ Ошибка 1: «оцените, хороший ли ответ»

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

❌ Ошибка 2: один оценщик на пример

С одним разметчиком нельзя измерить agreement — ты не знаешь, надёжна разметка или это личное мнение одного уставшего человека. Минимум два на пересекающейся выборке.

❌ Ошибка 3: доверять числам при низкой κ

Считать среднюю оценку, когда оценщики не согласуются, — самообман. Сначала подними agreement (через рубрику), потом агрегируй. Низкая κ = числам верить нельзя.

❌ Ошибка 4: неслепая оценка

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

Шпаргалка

Human evaluation — всё в одном месте
text
ЗАЧЕМ ЧЕЛОВЕК: субъективное качество (полезность/тон) + КАЛИБРОВКА автометрик
  человек = ground truth. ПИРАМИДА: люди размечают эталон → калибруют
  LLM-judge/метрики → автоматика масштабируется на весь трафик

ПРОЦЕСС (3 опоры):
  ① РУБРИКА (главное!): конкретные критерии (по одному) · определённая шкала
     (бинарная надёжнее 1–10) · примеры-якоря · правила для спорных
  ② ОЦЕНЩИКИ ≥2 на пересекающихся примерах, независимо, вслепую
  ③ AGREEMENT: измерить согласованность → верить ли числам
  A/B-сравнение надёжнее абсолютной оценки («A лучше B» > «7 из 10»)

INTER-RATER AGREEMENT:
  «% совпадений» ОБМАНЫВАЕТ (случайное согласие при перекосе классов)
  Cohen's kappa (2 оценщика) / Fleiss' kappa (3+): согласие СВЕРХ случайного
  κ=1 идеал · κ≈0 бесполезно · 0.6–0.8 хорошо
  низкая κ = диагноз РУБРИКИ, не людей → уточнить+калибровка+переразметить

ИСКАЖЕНИЯ → противоядия:
  position (первый) → рандомизация порядка · length (длинный) → «длина≠качество»
  halo (форматирование) → критерии раздельно · anchoring → перемешать
  fatigue → короткие сессии+контроль-примеры · brand → СЛЕПАЯ оценка
  ГЛАВНОЕ: слепая + рандомизированная оценка (бьёт сразу несколько)
  ⚠️ те же искажения есть у LLM-judge (следующий урок)

ГРАБЛИ: «хороший ли ответ?» без рубрики · 1 оценщик · верить числам при низкой κ ·
        неслепая оценка

Практическое задание

Задание: организуй human evaluation

  1. Для агента из модулей 03–05 напиши рубрику оценки одного критерия (например, «полезность ответа»): шкала, определения каждого балла, 2 примера-якоря, правило для спорных.
  2. Возьми 10 ответов агента и оцени их сам дважды с интервалом (или попроси коллегу). Посчитай Cohen's kappa (sklearn). Какая вышла согласованность?
  3. Если κ низкая — найди по расхождениям, что в рубрике размыто. Уточни и переразметь. Выросла ли κ?
  4. Переформулируй задачу как парное сравнение (A vs B двух версий промпта). Стало ли оценивать легче и согласованнее? Почему?
  5. Пройдись по таблице искажений: какие из них угрожают именно твоей разметке? Как ты их снимешь в процессе (что конкретно рандомизируешь/скрываешь)?
  6. Спроектируй калибровку LLM-судьи: сколько примеров разметить людьми, чтобы проверить, согласуется ли с ними судья? Какой метрикой проверишь согласие человек↔судья?
  7. Со звёздочкой: вставь в поток разметки 2 контрольных примера с заранее известной оценкой и проверь, ловят ли они невнимательность/fatigue у оценщика.

Что дальше

Человеческая оценка — золотой стандарт, но она дорога и не масштабируется на весь трафик. Решение — LLM-as-judge: модель-судья, откалиброванная по человеческой разметке из этого урока. Следующий урок — как настроить судью, задать критерии и калибровать его, помня про унаследованные от людей искажения.