交叉熵与softmax的初步了解

前言:

在调试tensorflow官方教程代码时,我发现了交叉熵(Cross Entropy)损失和其之前所用的softmax函数。我还没在《神经网络与机器学习第3版》中看到交叉熵,就大概先了解一下,并且记录下我目前了解到的信息。

正文:

先说交叉熵的公式:

 

如果是在训练神经网络的情况下,p(i)代表标签中当前样本属于i类的概率。在mnist的标签中此项非10,而且只有某一类对应的概率是1,其他都是0。例如当标签为L=[0,0,1,0,0,0,0,0,0,0]时,只有p(2)=1,即p(i)=L[i]q(i)代表预测结果中当前样本属于i类的概率。

但是预测结果却不能被直接当作各类对应的概率,例如预测结果R=[22.5, 2.44, -2.1, 2.444, 5.6, 62.3, 4.444, -5.565, 6.454, -5.414]。这时就要用softmax函数,其公式如下:

 

其中i=R[i]。此公式把R转换成了R’R’如下:

 

其总合应为1,第6项为1应该是其小数位太多的原因。

之后根据交叉熵的公式算出RL的损失loss=64.4

结语:

为什么要用softmax而不是计算简单的线性方法呢?例如线性转换方法:

其中Q(i)R[i]QminQ中最小的值,nQ的个数,O(i)为转换后的结果。

相比于这种线性转换的方法,softmax函数的转换结果中各类的概率之间的差别要大很多,基本达到类似标签的“一类独大”的效果,这也有利于后续计算等(参考:https://www.zhihu.com/question/40403377?sort=created)。

关于交叉熵的意义,参考:https://www.zhihu.com/question/41252833

猜你喜欢

转载自blog.csdn.net/fish_like_apple/article/details/79666107