Перейти к основному содержимому

Правдоподобие и перплексия

Для оценки качества работы авторегрессионной языковой модели, эту модель можно применять к реальным текстам и смотреть, насколько реальные слова текста оказываются вероятны согласно предсказанному распределению вероятностей слов.

Далее будем обозначать реальный текст как последовательность из TT слов:

w1w2...wTw_1w_2...w_T

Для получения несмещённой оценки этот текст должен быть новым для модели (она не должна была ранее на нём обучаться).

Средний логарифм правдоподобия

Качество языковой модели можно оценивать как средний логарифм вероятности пронаблюдать слова (согласно вероятностям, предсказанным моделью), встретившиеся в естественном тексте:

S(w1w2...wT)=1TlogP(w1w2...wT)=1TlogP(w1)p(w2w1)...P(wTw1w2...wT1)=1Tt=1TlogP(wtw1w2...wt1)\begin{aligned} S(w_1w_2...w_T) &= \frac{1}{T}\log P(w_1w_2...w_T) \\ &=\frac{1}{T}\log P(w_1)p(w_2|w_1)...P(w_T|w_1w_2...w_{T-1}) \\ &=\frac{1}{T}\sum_{t=1}^T \log P(w_t|w_1w_2...w_{t-1}) \\ \end{aligned}

Чем он выше, тем более высокую вероятность модель сопоставляет реальному тексту и тем лучше с ним согласуется.

Обычно языковая модель способна рассматривать лишь фиксированный контекст из KK последних токенов, поэтому вероятности по полному контексту аппроксимируются вероятностями по ограниченному контексту:

P(wtw1w2...wt1)P(wtwtKwtK+1...wt1)P(w_t|w_1w_2...w_{t-1})\approx P(w_t|w_{t-K}w_{t-K+1}...w_{t-1})

Поскольку языковые модели работают не на словах, а на токенах, для оценки вероятности каждого слова необходимо перемножить условные вероятности составляющих его токенов.

Перплексия

Более популярной мерой оценки качества языковых моделей является перплексия (perplexity [1]), показывающая степень неуверенности в предсказании следующего слова:

PPL=e1Tt=1Tlnp(wtwt1wt2...w1)\text{PPL}=e^{-\frac{1}{T}\sum_{t=1}^{T}\ln p\left(w_{t}|w_{t-1}w_{t-2}...w_{1}\right)}

Её можно представить в эквивалентном виде как величину, обратную к среднему геометрическому модельных вероятностей:

PPL=1(t=1Tp(wtwt1wt2...w1))1/T\text{PPL} = \frac{1}{ \left( \prod_{t=1}^T p(w_t|w_{t-1}w_{t-2}...w_1) \right)^{1/T} }

Из последнего представления видно, что перплексию можно интерпретировать как среднее число вариантов следующего слова, которые рассматривает модель при условии, что истинное слово попадает в эти варианты.

Перплексия принимает значения от единицы (идеальное угадывание следующего слова) до ++\infty (полное неугадывание). Чем выше значение перплексии, тем прогнозы языковой модели хуже.

Базовым уровнем перплексии является случай, когда модель случайно угадывает слова среди всех VV слов языка, назначая каждому вероятность 1/V1/V. В этом случае перплексия равна VV.

С примером кода, рассчитывающим перплексию, можно ознакомиться в [2].

Литература

  1. Zhang A. et al. Dive into deep learning. – Cambridge University Press, 2023: Perplexity.

  2. Hugging Face LLM course: Perplexity of fixed-length models.