Сразу разведём два значения слова, потому что поиск их смешивает. Perplexity — это поисковый сервис с ИИ, о нём отдельный разбор Persona и Perplexity. Перплексия — метрика языковых моделей, ей и посвящена эта справка. Дальше речь только о метрике.
#Определение и формула
Перплексия показывает, насколько модель «удивлена» текстом, который ей показали. Формально это экспонента от средней отрицательной логарифмической вероятности токенов:
PPL = exp( -(1/N) * Σ log p(t_i | t_1 … t_i-1) )
Интуиция полезнее формулы: перплексия — эффективное число равновероятных вариантов, между которыми модель колеблется на каждом шаге. PPL = 1 означает, что модель предсказывает текст безошибочно. PPL = 20 — что она в среднем мечется между двумя десятками кандидатов. Чем ниже, тем лучше модель предсказывает именно этот текст.
#Где эта метрика реально работает
Основное практическое применение — не сравнение моделей, а контроль потерь при квантизации. Берётся одна модель, один и тот же кусок текста, и перплексия замеряется на разных уровнях сжатия. Модель, токенизатор и текст при этом не меняются, поэтому числа сравнимы, а рост перплексии прямо показывает, сколько качества съел очередной шаг вниз. Именно так строятся таблицы, по которым Q4_K_M оказался практическим компромиссом; подробности — в разборе квантизации LLM.
| Сравнение | Метрика осмысленна | Почему |
|---|---|---|
| Q8 против Q4 одной модели | ✓ | всё, кроме сжатия, совпадает |
| Одна модель до и после дообучения | ✓ | токенизатор тот же |
| Модель A против модели B | ✗ | разные словари, разная нормировка на токен |
| Качество ответов на вопросы | ✗ | измеряет предсказание, а не пользу |
#Где путают
Заблуждение первое: у модели есть «её перплексия». Перплексии без текста не существует. Одна и та же модель на техническом тексте, на художественном и на коде даст разные числа. Указывая PPL, всегда указывают датасет.
Заблуждение второе: модель с меньшей перплексией лучше отвечает. Не следует. Перплексия измеряет способность угадывать следующий токен в готовом тексте, а не способность решать задачу, следовать инструкции и не выдумывать. Модель можно натренировать до низкой перплексии на корпусе и получить худшего собеседника. Для оценки полезности нужны другие метрики — они разобраны в тексте про MMLU, GSM8K и HumanEval.
Заблуждение третье: перплексии двух моделей можно сравнить напрямую. Нельзя, если у них разные токенизаторы. Вероятность нормируется на токен, а один и тот же текст у разных моделей состоит из разного числа токенов — сравниваются величины с разным знаменателем.
#Частые вопросы
#Какая перплексия считается хорошей?
Абсолютного порога нет, потому что число зависит от текста и от токенизатора. Смотреть надо на разницу: если после квантизации перплексия выросла на доли процента — потери незначительны; если заметно — вы вышли за границу разумного сжатия для этой модели.
#Можно ли посчитать перплексию самому?
Да, для локальной модели это штатная операция в llama.cpp: отдельная утилита прогоняет заданный текстовый файл и выдаёт число. Полезнее считать её не на общем корпусе, а на своих типичных текстах — тогда результат говорит о вашей задаче.
#Заменяет ли перплексия бенчмарки?
Не заменяет. Это дешёвая техническая проверка «не сломалось ли», а не оценка качества. Почему опубликованные бенчмарки тоже надо читать с оговорками — в разборе того, как читать бенчмарки LLM.
#Почему в описаниях моделей перплексию почти не публикуют?
Потому что её легко занизить, подобрав текст, и потому что она не сравнима между моделями. Для маркетинга она бесполезна, для инженерной проверки — наоборот.
Остальные метрики и термины собраны в глоссарии терминов ИИ.