来源:AINLPer微信公众号
编辑: ShuYini
校稿: ShuYini
时间: 2019-9-1
引言
在使用pytorch深度学习框架,计算损失函数的时候经常回到这么一个个函数:nn.CrossEntropyLoss()
该损失函数结合了
和
两个函数。它在做分类(具体几类)训练的时候是非常有用的。在训练过程中,对于每个类分配权值,可选的参数权值应该是一个1D张量。当你有一个不平衡的训练集时,这是是非常有用的。那么针对这个函数,下面将做详细的介绍。
什么是交叉熵?
交叉熵主要是用来判定实际的输出与期望的输出的接近程度,为什么这么说呢,举个例子:在做分类的训练的时候,如果一个样本属于第K类,那么这个类别所对应的的输出节点的输出值应该为1,而其他节点的输出都为0,即[0,0,1,0,….0,0],这个数组也就是样本的Label,是神经网络最期望的输出结果。也就是说用它来衡量网络的输出与标签的差异,利用这种差异经过反向传播去更新网络参数。
交叉熵原理?
在说交叉熵之前,先说一下信息量与熵。
信息量:它是用来衡量一个事件的不确定性的;一个事件发生的概率越大,不确定性越小,则它所携带的信息量就越小。假设X是一个离散型随机变量,其取值集合为X,概率分布函数为
,我们定义事件
的信息量为: