困惑度 perplexity

在自然语言处理中,困惑度是用来衡量语言模型优劣的一个方法。它的值是对交叉熵损失函数做指数运算后得到的结果。

交叉熵损失函数

单个训练样本的损失:

l o s s = 1 n i = 1 n y i l o g y i ^ = l o g y j ^ loss=-\frac{1}{n}\sum_{i=1}^{n}y_{i}log\hat{y_{i}}=-log\hat{y_{j}}

n n 是标签数量,在语言模型中指的是字符总数。 y i ^ \hat{y_{i}} 是预测概率, y i y_{i} 是预测正确概率。假如标签数为3,每个样本只有一个标签,正确预测结果为类别1,则 y 1 = 1 y_{1}=1 y 2 = 0 y_{2}=0 y 3 = 0 y_{3}=0 ,代入公式得到 l o s s = l o g y 1 ^ loss=-log\hat{y_{1}} 。可以看到交叉熵损失函数只关心预测正确的概率。

困惑度

p e r p l e x i t y = e l o s s = 1 y i ^ perplexity=e^{loss}=\frac{1}{\hat{y_{i}}}

  • 最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
  • 最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
  • 基线情况下,模型总是预测所有类别的概率都相同。 y i ^ = 1 n \hat{y_{i}}=\frac{1}{n} p e r p l e x i t y = n perplexity=n 。此时困惑度为类别个数。
    显然,任何一个有效模型的困惑度必须小于类别个数。在语言模型中,困惑度必须小于词典大小vocab_size
发布了13 篇原创文章 · 获赞 0 · 访问量 309

猜你喜欢

转载自blog.csdn.net/qsmx666/article/details/104514206
今日推荐