交叉熵损失在分类问题上非常常见,公式如下:
1. 为什么在分类任务中经常使用交叉熵损失?
参考:https://zhuanlan.zhihu.com/p/104130889
交叉熵损失可以“避免部分激活函数在接近0或1时梯度接近0时”学习较慢的问题。如:使用Sigmoid激活函数时,假设给定输入为x,label为y,其中y的取值为0或者1,是一个分类问题。我们要训练一个最简单的Logistic Regression来学习一个函数f(x)使得它能较好的拟合label,如下图所示:
其中z(x) = wx + b, a(x) = sigmoid(z(x)) = sigmoid(wx+b)。目标是时a(x)与label(y)逼近,以交叉熵loss(cee)和方差loss(mse)为例,进行求导可得:
均方差求导:
交叉熵求导:
当输出a接近0或者1时,Sigmoid函数的梯度时候是非常小的,接近0故导致在使用最小均方差Loss时,模型参数w会学习的非常慢。而使用交叉熵Loss则没有这个问题。为了更快的学习速度,分类问题一般采用交叉熵损失函数。
交叉熵的数学背景?
一种信息熵的解释;还有一种是极大似然估计的解释。可查看如下链接,了解详情:
【你真的理解交叉熵损失函数了吗?】 https://www.bilibili.com/video/BV1mZ4y1R76t/?share_source=copy_web&vd_source=d4dbbfda7d55ea74864c9d6cb3d38a76
2. 基于极大似然估计的原理分析
假设有一个黑盒,里面有白球和黄球,抽取10次,每次抽完后放回,请估计箱内白球占比?
根据图中右侧公式,求导后可得p=0.8.
再回到神经网络上,神经网络可以看作是一个黑盒,每个类别的输出是一个概率,每个样本的输出可以看作是一次独立抽样,每个label可以看出是一次观测值。在所有的样本上,让我们的模型输出和label值一样的概率越大就是我们的优化目标。
如上图,盒子就是我们的神经网络,每次输出一组数,代表是“鹿、羊、猴”的概率,那么计算一次抽样模型预测正确的概率就是:
=
然后有n次独立实验,所以最终的目标就是n概率乘积最大:
因为有连乘,通过log化成连加,然后前面添加一个负号,就将优化目标变为了求最小,也就推导除了“交叉熵损失函数”
3. 基于信息熵的原理分析:
假设发生一件事的概率是P, 则该事件的信息I = -log2P,而其的信息熵H=I*P。如下图:
交叉熵损失就是利用信息熵的最短编码特性来评估一个样本在不同类别上的真实概率分布和预测概率分布之间的差值。
交叉熵损失和信息熵的不同就是交叉熵是对预测值y_hat取对数,而信息熵是对真实概率取对数。所以,当与预测值y_hat的概率和真实概率一致,则满足信息熵的最短特性,从而损失最小。
完结,撒花 !!!