Как честно измерить качество декодерных генеративных моделей
Perplexity, FID и BLEU дают три разных ответа на один вопрос. Разбираем, какие метрики для декодерных генеративных моделей врут, а какие можно предъявить в отчёте.

Вы обучили декодерную модель, получили perplexity 12,4 и радуетесь. Соседняя команда с perplexity 15,1 обходит вас в слепом сравнении людьми. Так бывает часто: метрика, которую удобно логировать, и метрика, которая отражает качество генерации, — это разные вещи. Ниже — про то, как считать качество декодерных моделей (GPT-подобных языковых, авторегрессионных для изображений и аудио) так, чтобы цифра означала то, что вы думаете.
Почему perplexity — необходимая, но лживая метрика
Perplexity считает, насколько модель удивлена реальными данными: экспонента от средней кросс-энтропии на токен. Формально для тестовой последовательности из N токенов это exp(-1/N · Σ log p(x_i | x_<i)). Чем ниже — тем увереннее модель предсказывает следующий токен.
Проблема в том, что perplexity сравнима только при одинаковой токенизации и одинаковом тестовом наборе. Модель с BPE-словарём на 50 000 токенов и модель на символах дадут числа, которые нельзя ставить рядом. Смена токенизатора меняет знаменатель N — и perplexity падает или растёт без всякого улучшения генерации.
Практическое следствие: если вы приводите perplexity в отчёте, всегда указывайте токенизатор, длину контекста и точный сплит. Иначе цифра не воспроизводима.
Perplexity отвечает на вопрос «насколько модель предсказуема на held-out данных», а не на вопрос «насколько хорош текст, который она пишет». Это две разные вещи, и их постоянно путают.
Bits per byte как способ сравнивать несравнимое
Чтобы уйти от зависимости от токенизатора, считают bits per byte (BPB) или bits per character: суммарную кросс-энтропию нормируют не на число токенов, а на число байт исходного текста. Тогда модель на символах и модель на BPE становятся сопоставимы, потому что знаменатель одинаковый — сырые байты. Для честного бенчмарка между архитектурами это правильнее, чем голая perplexity.
Метрики для генерации, а не для предсказания
Как только вы просите модель что-то сгенерировать, автометрики предсказания перестают работать. Здесь два больших семейства подходов.
Reference-based: сравнение с эталоном
- BLEU, ROUGE, chrF — считают перекрытие n-грамм с эталонным ответом. Работают для машинного перевода и суммаризации, где эталон осмыслен. Для открытой генерации (диалог, творческий текст) почти бесполезны: правильных ответов бесконечно много, а BLEU штрафует за любой, не совпавший с эталоном.
- BERTScore — сравнивает эмбеддинги токенов вместо точного совпадения слов. Терпимее к перефразированию, но всё равно требует эталона.
Reference-free: качество сэмплов без эталона
Для изображений стандарт де-факто — FID (Fréchet Inception Distance)*. Он сравнивает распределение признаков сгенерированных картинок с распределением реальных через расстояние между двумя гауссианами в пространстве активаций Inception. Ниже FID — ближе к реальным данным по статистике признаков. Но FID чувствителен к числу сэмплов (на маленьких выборках систематически завышен) и к предобработке изображений, поэтому две работы с «FID 8» могут быть несравнимы.
Для текста аналога с такой же общепринятостью нет. Используют:
- Self-BLEU — мера разнообразия: считает BLEU каждого сэмпла относительно остальных. Высокий Self-BLEU означает, что модель повторяется.
- MAUVE — сравнивает распределения сгенерированного и человеческого текста в пространстве эмбеддингов, пытаясь поймать и качество, и разнообразие одной цифрой.
- Distinct-n — доля уникальных n-грамм, простая оценка того, не деградировала ли модель в повторы.
Ловушка декодинга: метрика зависит от стратегии сэмплирования
Ключевой момент, который ломает половину сравнений. Декодерная модель — это распределение, но вы никогда не оцениваете распределение напрямую. Вы оцениваете текст, полученный конкретной стратегией декодинга: greedy, beam search, температурное сэмплирование, top-k, nucleus (top-p). Меняете температуру с 0,7 на 1,0 — и разнообразие, и «связность» сдвигаются, а с ними все reference-free метрики.
Отсюда правило: метрика без указания параметров декодинга бессмысленна. Публикуя число, фиксируйте стратегию, температуру, top-p/top-k, максимальную длину и seed.
| Метрика | Что измеряет | Нужен эталон | Зависит от декодинга |
|---|---|---|---|
| Perplexity / BPB | Качество предсказания на held-out | Нет | Нет |
| BLEU / ROUGE | Перекрытие n-грамм с эталоном | Да | Да |
| BERTScore | Семантическая близость к эталону | Да | Да |
| FID | Близость распределений признаков (изображения) | Реальный корпус | Да |
| MAUVE | Близость распределений текста | Реальный корпус | Да |
| Self-BLEU / Distinct-n | Разнообразие сэмплов | Нет | Да |
Практический протокол оценки
Если вы сравниваете две декодерные модели и хотите, чтобы результату верили, минимальный честный набор шагов такой:
- Зафиксируйте тестовый сплит и подтвердите, что он не пересекается с обучающими данными (контаминация занижает perplexity и раздувает автометрики).
- Считайте perplexity или BPB на held-out — как индикатор предсказательной силы, но не как финальный вердикт.
- Для генерации сгенерируйте сэмплы при одинаковых параметрах декодинга для обеих моделей.
- Считайте пару метрик разного типа: одну про качество/близость к данным, одну про разнообразие. Одна цифра всегда лжёт.
- Для открытой генерации добавьте человеческую оценку или калиброванного LLM-судью на репрезентативной выборке — автометрики её не заменяют, а дополняют.
- Публикуйте доверительные интервалы: FID и MAUVE прыгают от размера выборки, число без разброса нечестно.
Где чаще всего мухлюют (иногда неумышленно)
- Сравнивают perplexity моделей с разными токенизаторами.
- Считают FID на 1000 сэмплов у себя и на 50 000 у бейзлайна.
- Подбирают температуру под свою модель и оставляют дефолтную у конкурента.
- Не проверяют контаминацию тестового набора обучающими данными.
* FID (Fréchet Inception Distance) — расстояние между двумя многомерными гауссовыми распределениями, аппроксимирующими признаки реальных и сгенерированных изображений в пространстве активаций предобученной сети Inception. Меньше — статистически ближе к реальным данным.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Pillutla et al., MAUVE: Measuring the Gap Between Neural Text and Human Text, Heusel et al., GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium (FID)
Частые вопросы
Можно ли сравнивать perplexity двух моделей напрямую?
Почему низкая perplexity не гарантирует хорошую генерацию?
Что использовать вместо BLEU для оценки открытой генерации?
Почему в статьях FID для одной модели отличается?
Что важнее логировать при публикации результатов?
Как понять, что тестовый набор не загрязнён обучающими данными?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.