Comments 3
Вот у нас есть тестовый корпус большого объёма, представленный в виде строки токенов S. И есть модель, представленная в виде функции gen_token(), которая, получив на вход произвольную строку токенов, предсказывает следующий токен в цепочке. О структуре модели мы ничего не знаем, это просто чёрный ящик.
Как теперь замерить перплексию модели, если это вообще возможно в данном случае?
Поддержу комментатора выше. Большинство имеющихся статей на тему перплексии только запутывают. Эта формула - не применима напрямую.
На практике в тех местах где я видел - перплексию считают через экспоненту от CrossEntropy.
CrossEntropy - нормальная метрика качества, можно подать ей на вход реальные значения и предсказанные моделью и получить на выходе оценку.
То есть проходят по очереди по всем словам в тексте. Дают языковой модели на вход предыдущий текст (ну или несколько предыдущих слов) и говорят "предскажи мне следующее слово". Смотрят что предсказала модель (кладуд в y_pred) и какое реальное слово (в y_real).
Затем считают crossentropy на его основе. И затем через экспоненту от этого perplexity.
P. S. Тру дата-сайнтисты, поправьте меня пожалуйста если что-то напутал.
КДПВ доставляет
Перплексия в языковых моделях