叉熵损失函数(Cross Entropy)

叉熵损失函数(Cross Entropy)

  我们在逻辑回归算法中引入了交叉熵函数,但是上一次,我并没有对交叉熵损失函数做一个详细的解释。这里就补上。损失函数又叫做误差函数,用来衡量算法的运行情况.在分类中,都是和分类错误的数量正相关的,分类错误越多,损失也就越大。
  我们在逻辑回归中引出,交叉熵,当时说的是如果分错一个类别,就会产生损失。 J ( θ ) = y ^ l n y + ( 1 y ^ ) l n ( 1 y ) J(θ)=\hat ylny+(1-\hat y)ln(1-y) ,可以看到这个公式,如果你把类别为1的预测为分类为1的,则不会产生损失,同理,把类别为0的预测为类别为0的也不会产生损失,此外,分错之后,损失函数计算结果是1,就会产生损失。
  但是我们预测出来的结果 y ^ \hat y 实际上是一个概率值,不可能严格的等于0或者1,一般情况下还是会产生损失,但是这个函数保证了,当真实类别y=1时,预测真实类别概率接近1,产生的误差就小,反之y=0,则预测为类别1的概率越小,误差越小。这个具体的分析把y=0的情况和y=1的情况带入到损失后很容易就分析出来。
  此外,作为损失函数一般都有一个特点,如果需要使用梯度下降(包括反向传播)系列算法的时候,一般都还有一个要求就是函数是凸(凹)函数,这是凸优化的基础,也就意味着需要损失后函数的二阶导数恒负(恒正)。
  我们对每一个训练样本能够算出一个损失,如果我们把所有的样本损失求和就得到了整个数据集的损失。我们的目的就是让整个损失最小,我们的模型预测的也就越精确。但是事实上,很多损失函数都满足这个特性,但是为什么逻辑回归中对交叉熵损失情有独钟呢?这个问题可以直接看推导。
  因为逻辑回归使用的是sigmoid做了概率的归一化,这样我们对输出概率做损失,然后反传损失到参数上,相当于做了一个函数的复合。
在这里插入图片描述
  这个推导说明尽管我们使用了交叉熵损失和sigmoid对预测值做了概率归一化,这两个函数都是比较复杂的,但是将两个函数组合起来之后,我们需要更新参数θ的时候,对θ求出来的导数却是非常简单,这样在梯度下降的时候,可以省去很多复杂的计算。这也解释了,为什么sigmoid和交叉熵损失是如此的搭配。

发布了39 篇原创文章 · 获赞 6 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/m0_38065572/article/details/105045925