Допустим, у нас есть модель RNN, которая выводит вероятность слова с учетом контекста (или без контекста), обученного на корпусе. Мы можем связать вероятность каждого слова в последовательности, чтобы получить общую вероятность самого предложения. Но поскольку мы цепляемся, вероятность (или правдоподобие) предложения снижается по мере увеличения его длины. Это тот же случай, даже если мы используем логарифмические вероятности.
Можем ли мы как-то нормализовать эти вероятности? Это интересная подзадача, с которой я столкнулся при построении языковой модели. У меня есть корпус из 9 миллионов предложений, длина которых варьируется от 2 до 30. Но все предложения действительны, и я использую их в качестве корпуса для обучения LM.
Теперь я беру подмножество данных и вношу в него изменения, например перетасовываю или разрезаю предложение пополам, добавляю или добавляю случайное слово и так далее. Это делается для создания «фальшивого предложения», которое не обязательно должно быть действительным. Что я хотел бы сделать, так это получить какой-то порог для вероятности всех действительных предложений, а затем, когда я использую RNN для вычисления вероятности поддельного предложения, он должен быть значительно меньше или отличаться от вычисленного порога.
тлдр; такие предложения, как
"the cat sat on the red mat"
"the cat sat on a mat"
"a cat sat on the red mat with brown coffee stains"
все должны иметь сопоставимую вероятность/оценку/метрику, в то время как такие предложения, как
"cat cat mat on the brown red sat is"
"not mat in door on cat"
имеют более низкий балл.