Как стать автором
Обновить

Комментарии 3

Таких вот набитых формулами статей полон Интернет, но ни одна из них не даёт понимания, как же на практике считать эту перплексию. Это как раз тот случай, когда десять строчек кода могли бы дать больше понимания, чем десять томов формул.
Вот у нас есть тестовый корпус большого объёма, представленный в виде строки токенов S. И есть модель, представленная в виде функции gen_token(), которая, получив на вход произвольную строку токенов, предсказывает следующий токен в цепочке. О структуре модели мы ничего не знаем, это просто чёрный ящик.
Как теперь замерить перплексию модели, если это вообще возможно в данном случае?

Поддержу комментатора выше. Большинство имеющихся статей на тему перплексии только запутывают. Эта формула - не применима напрямую.

На практике в тех местах где я видел - перплексию считают через экспоненту от CrossEntropy.

CrossEntropy - нормальная метрика качества, можно подать ей на вход реальные значения и предсказанные моделью и получить на выходе оценку.

То есть проходят по очереди по всем словам в тексте. Дают языковой модели на вход предыдущий текст (ну или несколько предыдущих слов) и говорят "предскажи мне следующее слово". Смотрят что предсказала модель (кладуд в y_pred) и какое реальное слово (в y_real).

Затем считают crossentropy на его основе. И затем через экспоненту от этого perplexity.

P. S. Тру дата-сайнтисты, поправьте меня пожалуйста если что-то напутал.

КДПВ доставляет

Зарегистрируйтесь на Хабре, чтобы оставить комментарий