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

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

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

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

w1w2...wTw_1w_2...w_T

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

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

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

S(w1w2...wT)=1Tlog⁡P(w1w2...wT)=1Tlog⁡P(w1)p(w2∣w1)...P(wT∣w1w2...wT−1)=1T∑t=1Tlog⁡P(wt∣w1w2...wt−1)\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(wt∣w1w2...wt−1)≈P(wt∣wt−Kwt−K+1...wt−1)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=e−1T∑t=1Tln⁡p(wt∣wt−1wt−2...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(wt∣wt−1wt−2...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.