Неделя 18. Оценка
Учиться в приложении: тьютор, задачи с кодом →
Ядро: контаминация, McNemar, bootstrap, p-value, выбор против отчёта, дизайн эксперимента · Глубина: Pearson и Spearman, бандиты против A/B, red-teaming, test-time compute и верность CoT · ≈ 11 ч ядро / 22 ч всё
Любое улучшение из предыдущих недель (промпт, LoRA, DPO) ничего не стоит, пока не показано, что разница больше шума. Неделя о том, как не обмануть себя: контаминация, выбор на тестовом наборе, не тот статистический тест. Без неё дизайн эксперимента на контрольной точке 4 и research craft недели 22 держатся на числах, которым нельзя верить.
- Бенчмарки и их патологии: контаминация (тест попал в обучающие данные), чувствительность к формату промпта, saturation (все модели у потолка, бенчмарк их больше не различает)
- Оценка генерации: перплексия (определена в неделе 4), pass@k (доля задач, где верна хотя бы
одна из
kпопыток), LLM-as-judge (модель оценивает ответы вместо человека: position bias, то есть любит первый по порядку; verbosity bias, любит длинный; self-preference, любит свой) - Human eval, разметка, согласие аннотаторов (насколько разметчики ставят одни и те же оценки)
pass@1 или pass@k: чего ты хочешь от модели. На пальцах. Политика A решает каждую задачу с вероятностью 0.6
в каждой попытке. Политика B знает 60% задач наверняка, а остальные 40% не решает никогда. pass@1 у обеих 0.6.
pass@3: у A 1 − 0.4³ ≈ 0.94, у B по-прежнему 0.6. Средняя точность одна, а разница по pass@3 34 п.п.
Язык для этого есть в теории выбора в условиях риска. По теореме фон Неймана–Моргенштерна (1944) предпочтения над
лотереями (исходами со случайностью), если они полны, транзитивны, непрерывны и независимы от посторонних исходов,
записываются как максимизация ожидаемой полезности E[u(x)]. Метрика оценки и есть такая u от доли успеха p на задаче.
pass@1 берёт u(p) = p: линейная, нейтральна к риску, важно только среднее. pass@k берёт u(p) = 1 − (1 − p)^k:
вогнутая, значит, по неравенству Йенсена, не любит разброса p между задачами. Для B доля успеха на задаче является
лотереей «1 или 0», и pass@3 ценит её как гарантированные p = 1 − 0.4^(1/3) ≈ 0.26 на каждой задаче
(эквивалент определённости); премия за риск 0.6 − 0.26 ≈ 0.34. Вывод: RL с наградой «верно или нет» максимизирует
E[r], то есть pass@1, и ему безразлично, превратится ли A в B. Если модель будут сэмплировать k раз, мерь pass@k при нескольких k.
Фронт Парето. Кроме качества есть стоимость. Модель доминирует другую, если не хуже по обеим осям и лучше хотя бы по одной; недоминируемые модели образуют фронт Парето. Пример (цена за 1M токенов, accuracy): M1 0.5 $ и 68%, M2 2 $ и 79%, M3 3 $ и 76%, M4 8 $ и 84%. M3 дороже M2 и хуже неё: выбывает. Между M1, M2 и M4 выбирает бюджет, а не таблица.
На пальцах. Две модели, 200 вопросов. Обе правы на 150, обе ошиблись на 30. Эти 180 вопросов о разнице ничего не говорят. Остаются 20 несогласных: в 15 случаях A права, а B нет; в 5 случаях наоборот. Если модели равны, несогласные делятся как монетка, около 10 на 10. Перекос 15:5 или сильнее в любую сторону случается с вероятностью около 0.04. McNemar смотрит только на эти 20 пар. Два отдельных 95%-интервала, для A (82.5%) и для B (77.5%), перекрылись бы и спрятали эффект.
На пальцах. Из 1000 проверяемых идей по-настоящему работают 100. Тест с порогом 0.05 и мощностью 0.8
признаёт значимыми 80 работающих и 45 из 900 неработающих (5%). Среди 125 «значимых» 45 ложных, то есть 36%.
Значит, p < 0.05 не означает «эффекта нет с вероятностью меньше 5%».
p-value равно P(данные | H₀), а доля ложных находок зависит ещё и от того, как часто идеи вообще работают.
- Статистика, применённая по назначению:
- McNemar: две модели на одном тестовом сете (для этой типовой постановки лучший выбор)
- Парный t-test (t-интервал по нескольким замерам уже был в неделе 13,
bench.py), bootstrap-доверительные интервалы (пересэмплировать тест с возвращением и смотреть разброс метрики), множественные сравнения (чем больше проверок, тем больше случайных «значимых») - Pearson vs Spearman: устойчивость к выбросам, нелинейные монотонные связи
- p-value равно
P(данные | H₀), а неP(H₀ | данные)
- Safety-оценка, red-teaming (целенаправленный поиск входов, ломающих модель), jailbreak'и
На пальцах. Два шаблона промпта, P1 и P2, тестовый набор из 100 вопросов. P1 даёт 71%, P2 даёт 74%. Берём P2 и пишем в отчёт 74%. Но на 100 вопросах случайный разброс accuracy составляет около ±4.5 п.п. (одно стандартное отклонение). Пусть оба шаблона на самом деле дают 72%, а шум у них независимый. Тогда лучший из двух в среднем покажет примерно на 2.5 п.п. больше правды: мы выбрали его как раз потому, что ему повезло. Из 20 шаблонов «победитель» в среднем приносит около +8 п.п. из ничего. Честно так: выбрать шаблон на одном наборе, а мерить его на другом, который при выборе не трогали.
Где выбирать и где отчитываться. Дисциплина, без которой любая статистика
выше бесполезна: (а) чекпоинт, промпт, порог, гиперпараметр выбираются на одном
наборе данных, а результат сообщается на другом; (б) срез данных, на котором метод
«особенно помогает», ищется на одной половине и подтверждается на другой.
Иначе ты находишь шум и называешь его эффектом. Это тот же принцип, что честное
разбиение для оценки гетерогенных эффектов в причинном выводе.
Проверь себя: «Нашёл срез, где метод даёт +8 п.п. Почему этого недостаточно и что делать?»
В тренажёре это задача select_then_report: она симуляцией меряет завышение победителя на той выборке,
где его выбирали, и показывает, что на отдельном тесте завышение пропадает.
A/B-тест против многорукого бандита. A/B-тест (трафик делится заранее и поровну, решение после теста) отвечает
на вопрос «насколько B лучше A». Многорукий бандит (алгоритм, который по ходу теста отдаёт больше трафика варианту,
выигрывающему сейчас; например, Thompson sampling показывает вариант с вероятностью того, что он лучший по текущим данным)
отвечает на другой вопрос: «как потерять поменьше, пока выясняем».
На пальцах. Два промпта в продукте: у A 5% успешных диалогов, у B 6%, на тест 20 000 диалогов. A/B отдаёт худшему
варианту половину, 10 000 диалогов, и теряет около 10 000 · 0.01 = 100 успехов. Бандит через несколько тысяч диалогов
отдаёт B большую часть трафика и теряет в разы меньше. Платят за это оценкой. Вариант, которому в начале не повезло
(при 5% выпасть 0 успехов из первых 20 показов можно с вероятностью 0.95²⁰ ≈ 0.36), почти перестаёт получать трафик,
и его заниженная оценка так и не исправляется. Везучему варианту дают больше данных, и его оценка возвращается к правде.
Поэтому средние по вариантам в бандите смещены вниз, сильнее у проигравших, разница средних обычно завышает эффект,
а размер выборки сам зависит от исходов, и обычный t-test или доверительный интервал к ней неприменим.
Правило: нужна честная оценка эффекта для отчёта или решения надолго, значит, A/B с фиксированным разбиением.
Вариантов много, живут они недолго (промо, выбор промпта на неделю), а каждый показ проигравшего стоит денег, значит, бандит.
Оценку эффекта из бандита восстанавливают перевзвешиванием по записанным вероятностям показа (inverse propensity weighting)
или держат фиксированную долю трафика на равномерный показ.
Test-time compute: как тратить вычисления на ответ. Модель улучшают не только обучением: ей можно дать больше вычислений на каждый ответ. На этом стоят reasoning-модели, которые «думают» тысячи токенов, и схемы «сгенерировать много, выбрать один». Оценивать их надо так же строго, как всё остальное в этой неделе.
На пальцах. Модель решает задачу с вероятностью p = 0.3 за попытку, попытки независимы. Есть идеальный
верификатор (программа, которая проверяет ответ, как в RLVR недели 17). Тогда среди N попыток хотя бы одна
верная найдётся с вероятностью 1 − (1 − p)^N: при N = 1 это 0.3, при N = 4 уже 1 − 0.7⁴ ≈ 0.76, при N = 16
около 0.997. Это та же формула, что у pass@k выше, только ответ теперь выбирает верификатор, а не человек.
С неидеальным верификатором (reward model) рост останавливается раньше: чем больше N, тем вероятнее среди
попыток встретится неверный ответ, который верификатор переоценил. Это reward hacking недели 17, только на инференсе.
- Best-of-N (сгенерировать
Nответов и вернуть тот, которому верификатор или reward model дали высшую оценку). Качество ограничено качеством верификатора: при идеальном растёт как1 − (1 − p)^N, при шумном выходит на плато или даже падает с ростомN - Self-consistency (самосогласованность:
Nнезависимых цепочек рассуждений, итоговые ответы сравниваются, побеждает самый частый; верификатор не нужен). На пальцах. Пять цепочек дали ответы 12, 12, 15, 12, 9: побеждает 12 с тремя голосами. Помогает, когда у задачи короткий ответ, который можно сравнить (число, вариант), а ошибки разбросаны по разным неверным ответам: верный ответ модель даёт чаще любого конкретного неверного. Не помогает, когда модель ошибается систематически одинаково (самый частый ответ неверен, голосование закрепит ошибку), и на открытых ответах (эссе, код), где два ответа редко совпадают и голосовать не за что - PRM против ORM. ORM (outcome reward model, модель награды за итог) оценивает только финальный ответ. PRM (process reward model, модель награды за шаги) оценивает каждый шаг рассуждения. На пальцах. Решение из пяти шагов, на шаге 2 ошибка, но ответ случайно сошёлся. ORM ставит высокую оценку, PRM находит ошибку на шаге 2 и ставит низкую (оценку решения часто берут как минимум или произведение оценок шагов). PRM даёт более плотный сигнал и лучше отбирает ответы в best-of-N, но требует разметки по шагам, а это дорого; ORM дёшев, но награждает «верный ответ неверным путём»
- Кривая «качество против вычислений на инференсе». По оси x FLOPs (или токены) на задачу, по оси y точность.
Методы сравнивают при равном бюджете, иначе любой метод выигрывает просто потому, что ему дали больше попыток.
На пальцах. Модель на 1B за ответ в 500 токенов тратит около
2 · 10⁹ · 500 = 10¹²FLOPs (2Nна токен при инференсе, неделя 9); best-of-16 тратит1.6 · 10¹³. Столько же стоит один такой же ответ модели на 16B. Если best-of-16 даёт 62%, а модель на 16B даёт 70%, этот бюджет выгоднее вложить в размер модели. Где выгоднее тратить на инференсе, зависит от трудности задачи: на лёгких и средних задачах больше даёт поиск и проверка, на самых трудных больше даёт модель покрупнее - Дистилляция рассуждений. Большая модель генерирует длинные цепочки рассуждений, проверщик отбирает верные, и на них делают SFT (неделя 15) маленькой модели. Так маленькая модель учится рассуждать дешевле, чем через RL с нуля (вспомни порог около 1.5B параметров из недели 17). Тот же приём сокращает рассуждения: из нескольких верных цепочек берут самую короткую, и модель учится отвечать короче без потери точности
- Верность цепочки рассуждений (CoT faithfulness). Текст рассуждения не обязан отражать настоящую причину ответа. На пальцах. В примерах промпта верный ответ всегда стоит под буквой «A». На новых вопросах модель выбирает «A» на 30 п.п. чаще, чем без такого перекоса, а в рассуждениях объясняет выбор содержанием задачи и закономерность не упоминает ни разу. Проверяют вмешательством: (1) добавить или убрать подсказку и посмотреть, меняется ли ответ и признаётся ли это в рассуждении; (2) оборвать рассуждение на середине или вписать в него ошибку: если ответ от этого не меняется, рассуждение было декорацией, а не причиной. Вывод: цепочку рассуждений можно читать как объяснение только после такой проверки, и это важно для мониторинга безопасности
В тренажёре это задача best_of_n: вероятность найти верный ответ среди N, голосование большинством
с разрывом ничьей и выбор по оценкам верификатора.
Математика (трек D): D27: McNemar и парный bootstrap; D28: множественные сравнения.
Интервью-вопрос недели: «Модель B на 5 п.п. лучше A на одном тестовом наборе из 200 вопросов.
Это значимо?» Структура на 3 минуты: (1) первым делом уточнить постановку: набор один и тот же, значит,
сравнение парное; (2) вывод: McNemar по несогласным парам, а не два независимых интервала; цифра: из
20 несогласных 15:5 в пользу B, p ≈ 0.04, хотя интервалы для 82.5% и 77.5% перекрылись бы; (3) масштаб
шума: на 100 вопросах одно стандартное отклонение accuracy около 4.5 п.п.; (4) где выбирали: если промпт
или чекпоинт выбран на этом же наборе, выигрыш завышен, из 20 шаблонов «победитель» приносит около +8 п.п.
из ничего, нужен отдельный набор; (5) контаминация и чувствительность к формату промпта; жди «а если
сравниваешь 20 срезов?». Это множественные сравнения: часть «значимых» случайна, срез подтверждают
на другой половине.
Источники: Athey, Imbens, Machine Learning Methods That Economists Should Know About (2019), §6.2–6.3 и раздел о многоруких бандитах; Athey, Imbens, PNAS (2016), honest trees. К test-time compute: Cobbe et al., Training Verifiers to Solve Math Word Problems (2021); Wang et al., *Self-Consistency Improves Chain of Thought Reasoning in Language Models* (2022); Lightman et al., Let's Verify Step by Step (2023); Snell et al., Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters (2024); Turpin et al., Language Models Don't Always Say What They Think (2023); Lanham et al., Measuring Faithfulness in Chain-of-Thought Reasoning (2023). Ссылки в 04-РЕСУРСЫ, раздел «Test-time compute и оценка рассуждений».
Результаты недели
- Могу выбрать тест для сравнения двух моделей на одном тестовом наборе и провести McNemar руками.
- Могу построить bootstrap-интервал для разницы accuracy двух моделей.
- Могу назвать три смещения LLM-as-judge и способ контроля каждого.
- Могу одной фразой правильно определить p-value.
- Могу разделить выбор и отчёт: выбрать на валидации, отчитаться на отдельном тесте и оценить, насколько завышен победитель из N вариантов.
- Могу сказать, когда вместо A/B-теста брать многорукого бандита и почему его оценку эффекта нельзя читать как результат A/B.
- Могу посчитать выигрыш best-of-N по формуле
1 − (1 − p)^N, сравнить его с self-consistency и большой моделью при равном бюджете FLOPs и предложить проверку верности цепочки рассуждений вмешательством.
Самопроверка
- Почему для двух моделей на одном тестовом наборе McNemar лучше двух независимых интервалов?
- Как проверить бенчмарк на контаминацию?
- Когда Spearman предпочтительнее Pearson?
- У двух моделей pass@1 одинаковый. Почему pass@k может различаться на десятки п.п. и какая из метрик нейтральна к риску?
- Промпт выбрали из 20 по тестовому набору из 100 вопросов и в отчёт написали его accuracy на этом же наборе. Примерно на сколько завышено число и как устроить честную процедуру?
- Когда многорукий бандит выгоднее A/B-теста и почему разницу средних из бандита нельзя читать как оценку эффекта?
- Модель решает задачу с вероятностью 0.2 за попытку. Сколько попыток нужно best-of-N с идеальным верификатором, чтобы найти верный ответ с вероятностью не ниже 0.9? Почему с reward model вместо верификатора рост остановится раньше и когда self-consistency не поможет совсем?
- Чем PRM отличается от ORM и почему кривую «точность против вычислений на инференсе» сравнивают при равном бюджете FLOPs? Как вмешательством проверить, что цепочка рассуждений действительно привела к ответу?
✅ Контрольная точка 4
Спроектировать эксперимент: «Мы хотим понять, помогает ли метод X. Как проверишь?» Нужны дизайн, бейзлайны, метрики, стат-тест, абляции, что может пойти не так. 45 минут вслух.