我们通常用困惑度(perplexity)来评估语言模型的好坏。可以探索一下交叉熵损失函数的定义。困惑度是对交叉熵损失函数做指数运算后得到的值。特别地:
- 最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
- 最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
- 基线情况下,模型总是把预测所有类别的概率都相同,此时困惑度为类别个数。
显然,任何一个有效模型的困惑度必须小于类别个数。
假定交叉熵损失函数为:
H
(
y
(
i
)
,
y
^
(
i
)
)
=
−
∑
j
=
1
q
y
j
(
i
)
l
o
g
y
^
j
(
i
)
H(y^{(i)},\hat{y}^{(i)})=-\sum_{j=1}^qy_j^{(i)}log\hat{y}_j^{(i)}
H(y(i),y^(i))=−j=1∑qyj(i)logy^j(i)困惑度计算公式为
p
e
r
=
e
H
(
y
(
i
)
,
y
^
(
i
)
)
per = e^{H(y^{(i)},\hat{y}^{(i)})}
per=eH(y(i),y^(i))在最佳情况下,
H
(
y
(
i
)
,
y
^
(
i
)
)
=
0
H(y^{(i)},\hat{y}^{(i)})=0
H(y(i),y^(i))=0,可以知道
e
0
=
1
e^0=1
e0=1;
在最坏情况下,
H
(
y
(
i
)
,
y
^
(
i
)
)
=
无
穷
大
H(y^{(i)},\hat{y}^{(i)})=无穷大
H(y(i),y^(i))=无穷大,因此困惑度为无穷大;
在基线情况下,
H
(
y
(
i
)
,
y
^
(
i
)
)
=
−
1
n
H(y^{(i)},\hat{y}^{(i)})=-\frac{1}{n}
H(y(i),y^(i))=−n1,因此困惑度为n,也就是类别个数。