Perplexity
Узнай, что такое перплексия, как она измеряет производительность языковой модели, как ее рассчитать и каковы лучшие практики интерпретации результатов.
Перплексия — это метрика оценки, которая измеряет, насколько хорошо вероятностная модель предсказывает последовательность токенов. Она чаще всего используется в моделировании языка, где меньшее значение означает, что модель находит оцениваемый текст менее удивительным. Интуитивно перплексия, равная 10, предполагает, что на каждом шаге предсказания модель примерно так же не уверена, как если бы она выбирала среди 10 равновероятных альтернатив. Эта интерпретация является приблизительной, но она делает метрику более понятной.
Как работает перплексия#
Языковая модель присваивает вероятностное значение каждому возможному следующему токену на основе предыдущего контекста. Как объясняется во введении в языковые модели от Google, авторегрессионная модель многократно предсказывает следующий токен и добавляет его в контекст.
Перплексия суммирует вероятности, присвоенные правильным токенам по всей последовательности оценки. Она выводится из среднего отрицательного логарифмического правдоподобия, обычно выражаемого как кросс-энтропия:
- Если кросс-энтропия использует натуральные логарифмы, перплексия представляет собой e в степени кросс-энтропии.
- Если кросс-энтропия использует логарифмы по основанию 2, перплексия представляет собой 2 в степени кросс-энтропии.
Глоссарий машинному обучению Google предлагает связанную интерпретацию: перплексия приближает количество догадок, которые потребовались бы модели для включения правильного предсказания. Библиотеки также могут вычислять ее напрямую, как показано в API перплексии языковой модели NLTK.
Этот минимальный пример на Python вычисляет перплексию из вероятностей, присвоенных четырем правильным токенам:
import math
# Probability assigned to the correct token at each position
token_probabilities = [0.50, 0.25, 0.80, 0.40]
negative_log_probs = [-math.log(probability) for probability in token_probabilities]
cross_entropy = sum(negative_log_probs) / len(negative_log_probs)
perplexity = math.exp(cross_entropy)
print(f"Cross-entropy: {cross_entropy:.3f}")
print(f"Perplexity: {perplexity:.3f}")The calculation uses Python's documented math.exp exponential function. In model training code, frameworks such as PyTorch's cross-entropy loss usually calculate the average loss before it is exponentiated.
Как интерпретировать перплексию#
Более низкая перплексия обычно указывает на то, что модель присваивает более высокие вероятности наблюдаемым токенам. Однако это число имеет значение только в рамках контролируемого сравнения.
Предположим, у Модели A перплексия равна 20, а у Модели B — 30 на одних и тех же данных валидации. Модель A предсказывает этот набор данных более эффективно. Это необязательно означает, что она выдает более фактические, полезные, безопасные или читаемые ответы.
Перплексия также отличается от нескольких связанных концепций:
- Функция потерь: Кросс-энтропия представляет собой базовую потерю при обучении или оценке, в то время как перплексия — это ее экспоненциальное, более интуитивное представление.
- Точность: Точность проверяет, является ли выбранное предсказание правильным. Перплексия оценивает все предсказанное распределение вероятностей, включая то, какую вероятность модель присваивает альтернативам.
- Уверенность: Уверенность обычно описывает степень определенности для одного предсказания. Перплексия агрегирует предсказательную неопределенность по многим позициям последовательности.
- Качество генерации: Модель с низкой перплексией может производить беглый, но повторяющийся, неверный или бесполезный текст. Перплексия напрямую не измеряет фактичность или способность к рассуждениям.
Практические применения#
-
Предиктивный ввод текста и генерация последовательностей: Разработчики могут сравнивать языковые модели для подсказок на клавиатуре, расшифровки или автозаполнения, используя отложенный текст из целевого домена. Например, модель с более низкой перплексией на медицинской терминологии может обеспечить лучшие предсказания следующих токенов при клинической диктовке. Эта метрика может помочь выбрать модель до того, как задержка и принятие пользователем будут оцениваться отдельно.
-
Создание подписей к изображениям с визуальным вниманием: Система создания подписей к изображениям часто использует визуальный кодировщик, за которым следует языковой декодер. Перплексия может измерять, насколько хорошо декодер предсказывает токены эталонной подписи при наличии признаков изображения. Это имеет отношение к моделям «зрение-язык», хотя сама по себе низкая перплексия не может определить, правильно ли подпись идентифицирует каждый объект или избегает галлюцинирующих деталей.
Оценка на основе вероятностей также может поддерживать специализированную диагностику. Руководство по оценке логарифма вероятности от NVIDIA объясняет, как вероятности токенов могут быть агрегированы в метрики вроде перплексии без необходимости свободной генерации.
Ограничения и лучшие практики#
Значения перплексии не следует сравнивать, когда модели используют разные схемы токенизации. Модель на уровне слов, модель на уровне символов и большая языковая модель на базе подслов делят одно и то же предложение по-разному, изменяя количество и сложность шагов предсказания.
Наборы данных для оценки также должны соответствовать целевому домену. Модель может достичь низкой перплексии на новостных статьях, но показывать плохие результаты на исходном коде или разговорах технической поддержки. Следуйте установленным рекомендациям по качеству машинного обучения, используя репрезентативные, отдельные данные для оценки и последовательную предварительную обработку.
В мультимодальных системах и системах компьютерного зрения сопоставляйте перплексию с мерами, специфичными для конкретной задачи. Руководство Ultralytics по оценке моделей и тонкой настройке охватывает такие метрики, как точность, полнота и средняя точность для визуальных предсказаний. Вместе языковые и визуальные метрики обеспечивают более полную оценку, чем одна лишь перплексия.






