Языковые модели, вероятности предложений и энтропия

В общем, недоумение — это мера того, насколько хорошо вероятностная модель предсказывает выборку. В контексте обработки естественного языка недоумение — это один из способов оценки языковых моделей.

Языковая модель — это распределение вероятностей по предложениям: она способна генерировать правдоподобные предложения, написанные человеком (если это хорошая языковая модель), и оценивать качество уже написанных предложений. При представлении хорошо написанного документа хорошая языковая модель должна быть в состоянии дать ему более высокую вероятность, чем плохо написанный документ, то есть она не должна озадачивать при представлении хорошо написанного документа.

Таким образом, метрика недоумения в НЛП — это способ зафиксировать степень «неопределенности», которую модель имеет при прогнозировании (т. е. назначении вероятностей) текста.

Теперь давайте попробуем вычислить вероятности, присвоенные языковыми моделями некоторым примерным предложениям, и вывести интуитивное объяснение того, что такое замешательство.

Вычисление недоумения по вероятностям предложений

Предположим, мы обучили небольшую языковую модель на английском корпусе. Модель способна предсказать вероятность следующего слова в предложении только из небольшого подмножества из шести слов: "a","the"," красный», «лиса»,«собака»,и «.».

Давайте вычислим вероятность предложения W,которое есть «рыжая лиса».

Вероятность общего предложения W, состоящего из слов w1, w2, вплоть до wn, может быть выражается следующим образом:

P(W) = P(w1, w2, …, wn)

Используя наше конкретное предложение W, вероятность можно расширить следующим образом:

P («рыжая лиса») =

Р("а") * Р("рыжий" | "а") * Р("лиса" | "рыжий") * Р("." | "рыжий лис")

Предположим, что это вероятности, присвоенные нашей языковой моделью общему первому слову в предложении:

Как видно из диаграммы, вероятность появления «a» в качестве первого слова предложения составляет:

P(“a”) = 0.4

Далее предположим, что это вероятности, данные нашей языковой моделью общему второму слову, следующему за «a»:

Вероятность того, что «red» будет вторым словом в предложении после «a», составляет:

Р («красный» | «а») = 0,27

Точно так же это вероятности следующих слов:

Наконец, вероятность, присвоенная нашей языковой моделью всему предложению «рыжая лиса», равна:

P («рыжая лиса») =

Р("а") * Р("рыжий" | "а") * Р("лиса" | "рыжий") * Р("." | "рыжий лис")

= 0.4 * 0.27 * 0.55 * 0.79

= 0.0469

Было бы неплохо сравнить вероятности, присвоенные разным предложениям, чтобы увидеть, какие предложения лучше предсказываются языковой моделью. Однако, поскольку вероятность предложения получается из произведения вероятностей, чем длиннее предложение, тем ниже будет его вероятность (поскольку это произведение факторов со значениями меньше единицы). Мы должны найти способ измерения этих вероятностей предложений без влияния длины предложения.

Это можно сделать, нормализовав вероятность предложения по количеству слов в предложении. Поскольку вероятность предложения получается путем умножения многих факторов, мы можем их усреднить, используя среднее геометрическое.

Назовем Pnorm(W)нормализованной вероятностью предложения W. Пусть n будет количеством слов в W. Затем, применяя среднее геометрическое:

Pнорма(W) = P(W) ^ (1/n)

Используя наше конкретное предложение «красная лиса»:

Pnorm("рыжая лиса") = P("рыжая лиса") ^ (1/4) = 0,465

Большой! Теперь это число можно использовать для сравнения вероятностей предложений разной длины. Чем выше это число в хорошо написанном предложении, тем лучше языковая модель.

Итак, какое это имеет отношение к недоумению? Что ж, недоумение — это просто обратная величина этого числа.

Назовем PP(W) замешательством, вычисленным по предложению W. Затем:

ПП(Вт) = 1 / Pнорма(Вт)

= 1 / (P(W) ^ (1 / n))

= (1 / P(W)) ^ (1 / n)

Это формула недоумения. Поскольку недоумение — это обратная величина нормализованной вероятности, чем меньше недоумение по поводу хорошо написанного предложения, тем лучше языковая модель.

Давайте попробуем вычислить недоумение с помощью модели второго языка, которая присваивает каждому слову равную вероятность при каждом предсказании. Поскольку языковые модели могут предсказать только шесть слов, вероятность каждого слова будет равна 1/6.

P («рыжая лиса») = (1/6) ^ 4 = 0,00077

Pnorm («рыжая лиса») = P («рыжая лиса») ^ (1/4) = 1/6

PP("рыжая лиса") = 1 / Pnorm("рыжая лиса") = 6

…что, как и ожидалось, вызывает большее недоумение, чем то, которое вызывает хорошо обученная языковая модель.

Растерянность и энтропия

Недоумение можно вычислить и исходя из понятия энтропия Шеннона. Назовем H(W) энтропией языковой модели при прогнозировании предложения W. Затем оказывается, что:

PP(W) = 2 ^ (H(W))

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

  • Мы максимизируем нормализованные вероятности предложений, заданные языковой моделью, по хорошо написанным предложениям.
  • Мы сводим к минимуму недоумение языковой модели по поводу хорошо написанных предложений.
  • Мы минимизируем энтропию языковой модели над хорошо написанными предложениями.

Спасибо за чтение! Если вы хотите узнать больше о НЛП, не забудьте подписаться на NLPlanet в Medium, LinkedIn и Twitter!

Сообщения, связанные с NLPlanet