前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习 | 交叉熵损失函数

深度学习 | 交叉熵损失函数

作者头像
Justlovesmile
发布2021-12-14 09:43:47
1.8K0
发布2021-12-14 09:43:47
举报
文章被收录于专栏:云+分享

Cross Entropy Error Function

交叉熵损失函数

一,信息量

信息量:

任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是它们承载的信息量会有所不同。如昨天下雨这个已知事件,因为已经发生,是既定事实,那么它的信息量就为0。如明天会下雨这个事件,因为未有发生,那么这个事件的信息量就大。

从上面例子可以看出信息量是一个与事件发生概率相关的概念,而且可以得出,事件发生的概率越小,其信息量越大。

假设x是一个离散型随机变量,其取值集合为X,概率分布函数为p(x),则定义事件x=x_0的信息量为:I(x_0)=-\log(p(x_0))

二,熵

熵是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。熵值越大,表明这个系统的不确定性就越大。公式如下:

H(X)=-\sum_{i=1}^n p(x_i)\log(p(x_i))

对于0-1分布问题,熵的计算方法可以简化为:

H(x)=-\sum_{i=1}^np(x_i)log(p(x_i))\ =-p(x)\log(p(x))-(1-p(x))\log(1-p(x))

三,相对熵(KL散度)

相对熵又称KL散度,用于衡量对于同一个随机变量x的两个分布p(x)和q(x)之间的差异。在机器学习中,p(x)常用于描述样本的真实分布,例如[1,0,0,0]表示样本属于第一类,而q(x)则常常用于表示预测的分布,例如[0.7,0.1,0.1,0.1]。显然使用q(x)来描述样本不如p(x)准确,q(x)需要不断地学习来拟合准确的分布p(x)。

KL散度的公式如下:

D_{KL}(p||q)=\sum_{i=1}^np(x_i)\log(\frac{p(x_i)}{q(x_i)})

KL散度的值越小,表示两个分布越接近。在机器学习中,p往往用来表示样本的真实分布,q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是Loss损失值。

四,交叉熵

将KL散度的公式进行变形,得到:

D_{KL}(p||q)=\sum_{i=1}^np(x_i)\log(\frac{p(x_i)}{q(x_i)})\ =\sum_{i=1}^np(x_i)\log(p(x_i))-\sum_{i=1}^np(x_i)\log(q(x_i))

根据熵的定义,前半部分是p(x)的熵H(x)=-\sum_{i=1}^np(x_i)\log(p(x_i)),而后半部分则是交叉熵,定义为:

H(p,q)=-\sum_{i=1}^np(x_i)\log(q(x_i))

因此D_{KL}(p||q)=H(p,q)-H(p) ,在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即 D_{KL}(p|| \widetilde {q}) ,由于KL散度中的前一部分−H(p)不变,故在优化过程中,只需要关注交叉熵就可以了。

五,交叉熵损失函数

在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,而在分类问题中常常使用交叉熵作为loss函数,特别是在神经网络作分类问题时,并且由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid或者softmax函数一起出现。

(1)二分类

在二分的情况下,对于每个类别我们的预测的到的概率为p和1-p。此时表达式为:

L=\frac{1}{N}\sum_iL_i=\frac{1}{N}\sum_i(-[y_i\log(p_i)+(1-y_i)\log(1-p_i)])

其中:

  • y_i表示样本i的label,正类为1,负类为0
  • p_i表示样本i预测为正的概率

(2)多分类

多分类问题实际上就是对二分类问题的扩展:

L=\frac{1}{N}\sum_iL_i=\frac{1}{N}\sum_i(-\sum_{j=1}^My_{ij}\log(p_{ij}))

其中:

  • M 表示类别的数量
  • y_{ij}表示该类别和样本i类别是否相同,相同为1,不同为0
  • p_{ij}表示对于观测样本i属于类别j的预测概率

例如:

id

predict

label

isCorrect

1

0.3 0.3 0.4

0 0 1

1

2

0.3 0.4 0.3

0 1 0

1

3

0.1 0.2 0.7

1 0 0

0

那么求其Loss:

L_1=-(0\times \log 0.3+0\times \log 0.3+1\times \log 0.4)
L_2=-(0\times \log 0.3+1\times \log 0.4+0\times \log 0.3)
L_3=-(1\times \log 0.1+0\times \log 0.2+0\times \log 0.7)

对所有样本的Loss求平均

Loss=\frac{L_1+L_2+L_3}{3}

参考

https://zhuanlan.zhihu.com/p/74075915

https://zhuanlan.zhihu.com/p/61944055

https://zhuanlan.zhihu.com/p/35709485

https://blog.csdn.net/b1055077005/article/details/100152102

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cross Entropy Error Function
    • 一,信息量
      • 二,熵
        • 三,相对熵(KL散度)
          • 四,交叉熵
            • 五,交叉熵损失函数
              • 参考
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档