交叉熵为什么能作为损失函数,交叉熵怎么调优,交叉熵与KL散度

先说结论:在学习交叉熵的过程中,我发现当真实值与预测值相等时,交叉熵并不会更趋近于0。实际上会等于0的应该是KL散度(相对熵)。之所以我们常说损失函数用的是交叉熵,是因为我们实际上在进行模型优化时需要用到的是预测值(以函数表示)中的权重,也就是对预测值进行求偏导。在求偏导时,交叉熵与KL散度是等价的。以下是具体说明:

信息量(风险度)

首先引入信息量的概念。

在一个事件中,事件的信息量I(x)与该事件发生的概率p(x)成反比(一个事件发生的概率越小,信息量越大)。

所以信息量定义为概率的倒数:1/p(x),用log表示后I(x)=log(1/p(x))=-log(p(x))。如图:

熵(香农熵Shanon Entropy)

然后介绍一下熵的定义

熵H(p)

针对的不是一个事件,而是概率分布,表述的是一个概率分布的平均信息量

对于概率分布来说,概率密度更均匀(每个事件发生的概率相近),产生的随机变量的不确定性就更高,熵就更大。

熵计算公式:

如图:

举个例子:

可以发现,当俩种事件发生的概率相差越大,熵就越小。相反,概率相差越小,事件发生的不确定性越强,熵就越大。

交叉熵(Cross Entropy)

从估计概率分布的角度对真是概率分布的平均信息量的一个估计值(涉及到了真实值和预测值)

交叉熵计算公式:

真实值是p,此时的信息量用的是预测值q的信息量

举个例子:

此时,我发现,在第一种情况,预测值和真实值一致时,交叉熵并没有如想象一样为0(在我们的印象里,损失函数用的是交叉熵,损失函数越小证明预测值与真实值越接近)。

KL散度(相对熵)

然后我发现损失函数真正用的应该是相KL散度

KL散度计算公式:

举例说明:

可以发现,当真实值与预测值离得越近时,KL散度越小。

那为什么我们常说损失函数用的是交叉熵呢

从目的来说:损失函数是用来评估模型性能(损失函数越小,证明预测值和真实值越接近,模型越好),而评估性能的目的是——优化模型,也就是使预测值更接近真实值。

预测值是以函数的形式来呈现,也就是q=f(x)

在这个函数中x是样本,q是预测出来值。

但此时,样本x和预测值q均为已知条件。优化模型就是找最合适的参数

如:q=ax+b。我们实际要找的是参数a和b

如:q=ax^2+bx+c。我们实际要找的是参数a、b、c

求参

一个函数里有很多参数,现在统一用θ来表示。θ={θ1,θ2,θ3,...θn}(补充:在深度学习中,这个θ指的就是权重,常用ω来表示)

预测函数q=f(x),是没有可供求参的条件

但是对于KL散度来说,我们要使KL散度最小(极值点),那就是对KL散度求偏导,使得偏导数为0。

求偏导的时候,我们会发现,对于一个确定的预测任务来说,我们的熵H(p)是一个常量

所以对KL散度求偏导就等价于对交叉熵H(p,q)求偏导。

参考链接:【10分钟】了解香农熵,交叉熵和KL散度_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值