从交叉熵理解困惑度
我们通常使用困惑度(perplexity)来评价语言模型的好坏。通过理解困惑度,也可以让我们更加深入的理解交叉熵(CrossEntropy)的意义,也可以轻易量化模型的性能。
回顾交叉熵以及多分类问题的损失函数。假设现有 N N N 个数据样本,其中样本的标签为 Y i ( i = 1 , 2 , ⋯ , N ) Y_i(i=1,2,\cdots,N) Yi(i=1,2,⋯,N),而模型对样本的预测值记为 Y i ^ ( i = 1 , 2 , ⋯ , N ) \widehat{Y_i}(i=1,2,\cdots,N) Yi
(i=1,2,⋯,N),则我们可以计算交叉熵损失:
C r o s s E n t r o p y ( Y , Y ^ ) = − ∑ i = 1 N Y i l o g ( Y ^ i ) CrossEntropy(Y,\widehat{Y})=-\sum_{i=1}^NY_{i}log(\widehat{Y}_i) CrossEntropy(Y,Y
)=−i=1∑NYilog(Y
i)
这个公式并不那么直观,我们再从一个更加具体的例子来体会一下交叉熵损失的计算过程。
在多分类问题中, Y i Y_i Yi 表示的是一个独热编码(0-1类别)的向量,比如对于三分类的某一个样本标签为: Y = [ 0 ( y 1 ) 0 ( y 2 )