文章目录

  • 交叉熵公式的几个问题
  • 对上述问题的几点结论
  • 对于结论的一些解答

交叉熵公式的几个问题

本小白在学习过程中在很多地方都遇到过交叉熵公式,一般我们遇到的是这样的:
C1=−1n∑x[yln⁡a+(1−y)ln⁡(1−a)]C1 = -\frac{1}{n}\sum_{x}[y\ln a+(1-y)\ln (1-a)] C1=−n1​x∑​[ylna+(1−y)ln(1−a)]

然而在学习cs231线性分类(softmax)那一节的时候也遇到了交叉熵,包括一些博客和资料中,它们形式是这样的:
C2=−∑xp(x)log⁡q(x)C2 = -\sum_xp(x)\log q(x)C2=−x∑​p(x)logq(x)

作为小白的我瞬间懵逼了,之前看了Michael Nielsen的《神经网络与深度学习》,其中讲softmax那一层的时候,用的是对数似然(log-likelihood)代价函数。用x表示训练输出,y表示对应目标输出,则对数似然代价函数为:
C3=−ln⁡ayLC3 = -\ln a^L_y C3=−lnayL​

ayLa^L_yayL​ 为第L层第y个输出值。我们暂且为上述三个代价函数命名为C1、C2和C3,便于后边讨论。懵不懵!C1和C2交叉熵什么关系,C2和C3又有点异曲同工之妙。

对上述问题的几点结论

这里先给出结论。查阅了一些资料和blog,得出了几点结论
注意二分类的交叉熵和多分类问题的交叉熵形式不一样。

  • 二分类交叉熵形式如下:
    C1=−1n∑x[yln⁡a+(1−y)ln⁡(1−a)]C1 = -\frac{1}{n}\sum_{x}[y\ln a+(1-y)\ln (1-a)] C1=−n1​x∑​[ylna+(1−y)ln(1−a)]

  • 多分类交叉熵形式如下:
    C2=−∑xp(x)log⁡q(x)C2 = -\sum_xp(x)\log q(x) C2=−x∑​p(x)logq(x)

  • 归纳问题中公式出现的场景,当交叉熵前接的是 sigmoid 层的时候,交叉熵形式用 C1,当前面接的是 softmax 层的时候,交叉熵形式用 C2。因为 sigmoid 是二分类的分类器,softmax 是归一化多分类的分类器,这也侧面印证了上面的两个结论。

  • C3 的log似然函数也接在 softmax 层后边,那它和 C2 背景是一样的。对于多分类问题,每个样本只有一个标签,因而 C2 的累加项中只有一项不为0,其余p(x)均为0,因而 C2 经过化简即可得到 C3,注意深度学习中 log 和 ln 代表一个意思,很多教程都是混合是使用,都作为 ln 来看。

对于结论的一些解答

首先我们需要区分 二分类、多分类、多标签和多输出问题的基本概念:
二分类问题:表示分类任务中有两个类别,输出用0或1表示,二分类的每个样本都有一个标签0或者1;
多分类问题:分类任务有多个类别,其每个样本也只有一个标签,输出一般用概率表示;
多标签分类:一个样本可以有多个标签,比如水果盘里有苹果和梨子,那么标签中代表苹果梨子都有;
多输出分类:多个多分类或多标签的组合分类。如一个网络同时预测服饰款式类型和颜色类型。
这里我们讨论二分类问题和多分类问题,这一默认对于一个样本只有一个标签,即是苹果就是苹果,大枣就是大枣,梨子就是梨子,不带水果拼盘这样玩的。
我们再很多地方都看到由相对熵(KL散度)推导出交叉熵的,对于两个概率分布p(x)p(x)p(x)和q(x)q(x)q(x),其相对熵为:
KL(p∣∣q)=−∫p(x)ln⁡q(x)dx−(−∫p(x)ln⁡p(x)dx)KL(p||q)=- \int p(x)\ln q(x)dx -(- \int p(x)\ln p(x)dx) KL(p∣∣q)=−∫p(x)lnq(x)dx−(−∫p(x)lnp(x)dx)

p(x)为真实分布,即我们所讲的标签y的分布,为已知,所以−∫p(x)ln⁡p(x)dx-\int p(x)\ln p(x)dx−∫p(x)lnp(x)dx为已知,而−∫p(x)ln⁡q(x)dx- \int p(x)\ln q(x)dx−∫p(x)lnq(x)dx未知,就是我们需要关心的交叉熵。交叉熵公式已经知道啦,即:
−∫p(x)ln⁡q(x)dx-\int p(x)\ln q(x)dx −∫p(x)lnq(x)dx

现在我们进行二分类的讨论,二分类下p(x)p(x)p(x)为二项分布,因而分类器输出第 i 个神经元交叉熵为:
∫p(x)ln⁡q(x)dx=−p1(x)ln⁡q1(x)−p2(x)ln⁡q2(x)=−p1(x)ln⁡(q1(x))−(1−p1(x))ln⁡(1−q1(x))\int p(x)\ln q(x)dx = -p_1(x)\ln q_1(x)-p_2(x)\ln q_2(x)=-p1(x)\ln (q1(x))-(1-p1(x))\ln(1-q1(x)) ∫p(x)lnq(x)dx=−p1​(x)lnq1​(x)−p2​(x)lnq2​(x)=−p1(x)ln(q1(x))−(1−p1(x))ln(1−q1(x))

即上述C1的公式。再来看看多分类情况。这里 p(x) 是标签值(one-hot),比如三个分类,某个样本属于第一个分类,标签值为1 0 0。代入上述的交叉熵公式,即得:
−piln⁡(yi)-p_i\ln (y_i) −pi​ln(yi​)

其中,p_i是输出正确分类的标签值,其为1。因而又可以写为:
−ln⁡(yi)-\ln (y_i) −ln(yi​)

该式和C3对数似然代价函数一致。这也就解释了C1和C2在搭配softmax时,即多分类情况下公式是一样的。
另外,前文已述二分类和多分类情况下交叉熵推导结果不一,因此也有人建议采用 Kears 中的命名方法,对于二分类的交叉熵损失函数称之为 “二分类交叉熵损失函数”,对于多分类的交叉熵损失函数称之为"多类别交叉熵损失函数"。至于我们平时使用,清楚怎么回事就行啦
以上
参考:
[1]: https://juejin.im/post/5b38971be51d4558b10aad26
[2]: https://www.zhihu.com/question/41252833

不同背景下不同交叉熵公式的异和同相关推荐

  1. 信息熵、相对熵、交叉熵公式及tensorflow代码

    最近在学习卷积神经网络,其中遇到了信息熵和交叉熵,对此理解的一知半解,现记录一下信息熵.相对熵.交叉熵公式及tensorflow代码,供以后参考. 假设概率分布中,真实分布:  假设分布: 信息量公式 ...

  2. Softmax函数下的交叉熵损失含义与求导

    交叉熵损失函数(CrossEntropy Function)是分类任务中十分常用的损失函数,但若仅仅看它的形式,我们不容易直接靠直觉来感受它的正确性,因此我查阅资料写下本文,以求彻底搞懂. 1.Sof ...

  3. 信息熵、交叉熵公式的理解

    一 信息熵的意义: 代表**信息量(不确定度)**的大小.变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大. ###二 信息熵的公式定义: H(X)=E[log2P(X)−1]=∑iP ...

  4. 熵、KL散度、交叉熵公式及通俗理解

    熵 根据香农信息论中对于熵的定义,给定一个字符集,假设这个字符集是X,对x∈X,其出现概率为P(x),那么其最优编码(哈夫曼编码)平均需要的比特数等于这个字符集的熵. 如果字符集中字符概率越趋于平均, ...

  5. 机器学习 | 交叉熵公式

    交叉熵:设p(x).q(x)是X中取值的两个概率分布,则p对q的相对熵是: 在一定程度上,相对熵可以度量两个随机变量的"距离",且有D(p||q) ≠D(q||p).另外,值得一提 ...

  6. 【深度学习的数学】交叉熵公式如何推导?

    使用最小二乘法的二次代价函数作为损失函数由于存在计算收敛时间长的情况,人们引入了交叉熵函数,利用交叉熵和sigmoid函数,可以消除sigmoid函数的冗长性,提高梯度下降法的计算速度,那么,交叉熵函 ...

  7. 【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )

    文章目录 I . 向后传播误差 简介 II . 输出层误差计算公式 III . 隐藏层层误差计算公式 IV . 使用误差更新 连接权值 V . 使用误差更新 单元偏置 VI . 反向传播 过程 VII ...

  8. 交叉熵的公式是怎么来的

    交叉熵损失函数是机器学习中一个常见的损失函数,用来衡量目标与预测值之间的差距,看着公式能感觉到确实有种在衡量差距的感觉,但是又说不出为什么有这种作用.下面从信息量-信息熵-交叉熵的步骤来看交叉熵公式的 ...

  9. 交叉熵损失函数公式_交叉熵损失函数对其参数求导

    1.Sigmoid 二分类交叉熵 交叉熵公式: 其中y是laebl:0 或1. hθ(xi)是经过sigmoid得到的预测概率.θ为网络的参数, m为样本数. hθ()函数如下所示, J(θ) 对参数 ...

最新文章

  1. Camera Calibration 相机标定
  2. java发送苹果消息慢_Spring-boot JMS 发送消息慢的解决方法
  3. python【蓝桥杯vip练习题库】ALGO-82 输出米字形
  4. 使用ramdisk 优化nagios IO性能
  5. 自学Java和Java培训班的学习效果
  6. ext springmvc mysql_基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)...
  7. springboot ---- sts如何启动两个实例
  8. 分页的limit_分页场景(limit,offset)为什么会慢
  9. python第三方库全部_自动更新Python所有第三方库
  10. 二维码提升对比度文献调研(4)--Attention Guided Low-light Image Enhancement
  11. 涨知识了!阿里、百度、腾讯的名字竟然是这样来的
  12. DataGridView
  13. 类特征注意机制融合Deeplabv3+语义分割
  14. 64位centos 5.1(kenel版本:2.6.18-53)上安装VMware Server遇到的问题及解决方法
  15. 关于网络知识(网络运作方式)的常识
  16. 【原创】2021-2000上市公司重污染企业数据、上市公司重污染行业数据(常用变量均包括,可直接用)
  17. html中电脑自动输入,电脑一直自动打字怎么办
  18. 做外贸用哪个企业邮箱比较好?大容量外贸企业邮箱哪家好?
  19. Sybil_attack (女巫攻击)
  20. 利用FME自动生成CAD图框

热门文章

  1. 第十六章 ConvNeXt网络详解
  2. wp load.php下载,wordpress网站打开首页出现下载页面解决方法
  3. 职业对口升学计算机英语2016,2016河南对口升学(英语).docx
  4. ChatGPT报错:Too many requests in 1 hour. Try again later.
  5. C语言中自定义函数返回数组类型
  6. C语言关键字const详细讲解
  7. Invalid prop `component` of type `object` supplied to `Route`, expected `function`
  8. cocos creator 实现双指缩放的两种方式
  9. HP-UX 日志文件及清理
  10. jquery换一换效果