交叉熵损失函数原理

链接:https://blog.csdn.net/b1055077005/article/details/100152102
原博主讲的很清楚,此处我只修改了几个公式(应该是笔误造成的)

交叉熵损失函数原理详解

交叉熵损失函数(CrossEntropy Loss)是分类问题中经常使用的一种损失函数,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid(或softmax)函数一起出现。

交叉熵简介

交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性,要理解交叉熵,需要先了解下面几个概念。

信息量

信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。

“太阳从东边升起”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起的,这是一句废话,信息量为0。

“小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分”,小明及格的可能性很低(十次考试只有一次及格),因此如果某次考试及格了,必然会引入较大的信息量。而对于小王而言,考试及格是大概率事件,在事件B发生前,大家普遍认为事件B的发生几乎是确定的,因此当某次考试小王及格这个事件发生时并不会引入太多的信息量。

根据上述可总结如下:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。

设某一事件发生的概率为P(x),其信息量表示为:
在这里插入图片描述
其中I(x)表示信息量,这里log表示以e为底的自然对数。

信息熵

信息熵也被称为熵,用来表示所有信息量的期望。

期望是试验中每次可能结果的概率乘以其结果的总和。

所以信息量的熵可表示为:(这里的X是一个离散型随机变量)
在这里插入图片描述
小例子:使用明天的天气概率来计算其信息熵:

序号事件概率P信息量
1明天是晴天0.5-log(0.5)
2明天是雨天0,2-log(0.2)
3明天是多云0.3-log(0.3)

在这里插入图片描述
对于0-1分布的问题,由于其结果只用两种情况,是或不是,设某一件事情发生的概率为P(x),则另一件事情发生的概率为1−P(x),所以对于0-1分布的问题,计算熵的公式可以简化如下:
在这里插入图片描述

相对熵(KL散度)

如果对于同一个随机变量X有两个单独的概率分布P(x) Q(x) ,则我们可以使用KL散度来衡量这两个概率分布之间的差异。

下面直接列出公式,再举例子加以说明。
在这里插入图片描述
在机器学习中,常常使用P(x) 来表示样本的真实分布,Q(x) 来表示模型所预测的分布,比如在一个三分类任务中(例如,猫狗马分类器),x1,x2,x3 分别代表猫,狗,马,例如一张猫的图片真实分布P(X)=[1,0,0], 预测分布Q(X)=[0.7,0.2,0.1] 计算KL散度:
在这里插入图片描述
KL散度越小,表示P(x)与Q(x)的分布更加接近,可以通过反复训练Q(x) 来使Q(x) 的分布逼近P(x)。

交叉熵

首先将KL散度公式拆开:
在这里插入图片描述
前者H(p(x)) 表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵

交叉熵公式表示为:
在这里插入图片描述
在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布P(x) 也就确定下来了,所以信息熵在这里就是一个常量。由于KL散度的值表示真实概率分布P(x) 与预测概率分布Q(x) 之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。

交叉熵在单分类问题中的应用

在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,而在分类问题中常常使用交叉熵作为loss函数。

下面通过一个例子来说明如何计算交叉熵损失值。

假设我们输入一张狗的图片,标签与预测值如下:

*
Label010
Prediction0.20.70.1

那么loss
在这里插入图片描述
一个batch的loss为
在这里插入图片描述
其中m表示样本个数,n为标签类别的个数。

总结:

交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。

交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值