导语

在统计学中,损失函数是一种衡量系统错误程度的函数。而在有监督学习模型里,损失函数则是衡量模型对样本预测值与样本真实标签之间差异程度的方法。最近用到了交叉熵,觉得有必要弄明白交叉熵到底是什么原理及优势,因此查了查资料,并结合个人理解在这里做一下讲解,如有疏漏谬误之处还请各位看官多多指教。在这之前,先讲讲交叉熵是什么。

交叉熵,我们不妨先拆开来看:交叉与熵。字面意思可以这么理解:两种以熵来计量的东西之间的关系。熵在信息论里面衡量的是数据的混乱程度,本质是香农信息量( plog21p,0<p≤1 plog_{2}\frac{1}{p}, 0

)的期望。信息量是可以衡量的,不然我们也不会觉得有的话虽然多,却没什么信息量,而有的话则能一语中的。那么,如何直观理解这个交叉熵呢?

我们的世界杯

如果直接用纯数学语言来解释,一定晦涩难懂,因此我想到了一个比较有趣的实例给大家理解一下。

熟悉足球的童鞋们应该都记得,在2002年,中国足球队首次也是唯一一次杀入了世界杯,全国球迷无不为之热血沸腾。但当时中国队所在的C组号称死亡之组,组内其它三支球队分别是巴西(最后的冠军)、土耳其(最后的季军)和哥斯达黎加。现在命运之神分配给这四支球队夺得小组第一的概率分别为巴西50%,土耳其25%, 哥斯达黎加25%, 中国0%。我们假定这是真实概率,那么这一组概率的信息量是多大呢?按照香农信息量的计算公式,我们可以得出:

50%×log2150%+25%×log2125%+25%×log2125%

50\% \times log_{2}\frac{1}{50\%} + 25\% \times log_{2}\frac{1}{25\%} + 25\% \times log_{2}\frac{1}{25\%}

=0.5×1+0.25×2+0.25×2=1.5

= 0.5 \times 1 + 0.25 \times 2 + 0.25 \times 2 = 1.5
因此,这一组概率的信息量就是1.5。香农认为,信息量的度量等于不确定性的多少,可以用 “比特”(bit)这个概念来度量。比如土耳其夺得小组第一的概率是 14 \frac{1}{4},我们就需要用一个2位的bit来表示,又因为其只占了4份中的1份,因此它的信息量就是 0.25×2=0.5 0.25 \times 2 = 0.5。然后我们在赛前预测各个队夺得小组第一的概率,恰好也给出“巴西50%,土耳其25%, 哥斯达黎加25%, 中国0%”这样的预测。根据前文可知,这组预测的信息量当然也是1.5。

接着交叉熵可以来了,这组预测结果的交叉熵为 1.5−1.5=0 1.5 - 1.5 = 0,表示预测结果与真实结果之间的差异程度为0,即我们的预测百分之百正确。这时02国家队的球迷不干了:凭什么不给咱国家队一丝期待?那好,不妨修改一下我们的赛前预测:巴西50%,土耳其25%, 哥斯达黎加12.5%, 中国12.5%。国家队有八分之一的概率拿小组第一,这期待够带劲吧。再算一下这组预测结果的熵:

50%×log2150%+25%×log2125%+12.5%×log2112.5%+12.5%×log2112.5%

50\% \times log_{2}\frac{1}{50\%} + 25\% \times log_{2}\frac{1}{25\%} + 12.5\% \times log_{2}\frac{1}{12.5\%} + 12.5\% \times log_{2}\frac{1}{12.5\%}

=0.5×1+0.25×2+0.125×3+0.125×3=1.75

= 0.5 \times 1 + 0.25 \times 2 + 0.125 \times 3 + 0.125 \times 3 = 1.75
交叉熵为 1.75=1.5=0.25 1.75 = 1.5 = 0.25,大于0,表示预测结果与真实结果之间存在差异,这里的差异便是中国队和哥斯达黎加队的预测结果。不难看出,交叉熵的值越大,这种差异程度也就越大。

在二分类模型中,由于目标的可能性有两种,因此需要分别计算预测为正例和负例概率下的交叉熵,公式为:

[ylog21y′−ylog211]+[(1−y)log21(1−y′)−(1−y)log21(1−0)]

[ylog_{2}\frac{1}{y^{'}}-ylog_{2}\frac{1}{1}] + [(1-y)log_{2}\frac{1}{(1-y^{'})} - (1-y)log_{2}\frac{1}{(1-0)}]

=−[ylog2y′+(1−y)log2(1−y′)]

= -[ylog_{2}{y^{'}} + (1 - y)log_{2}{(1-y^{'})}]
这就是大名鼎鼎的交叉熵公式,其中 −ylog2y′ -ylog_{2}{y^{'}}是正例的交叉熵, −(1−y)log2(1−y′)] -(1 - y)log_{2}{(1-y^{'})}]则是负例的交叉熵,它们之和便构成了分类模型的损失函数。

接下来讲讲交叉熵的优势。在回归模型中有时候会使用均方差作为损失函数,但是当激活函数为sigmoid时,由于其在上边界和下边界的斜率下降十分之快。事实上,一般sigmoid函数的斜率最大值也只有0.25。因此,当训练结果接近真实值时会因为梯度算子极小,使得模型的收敛速度变得非常慢。而由于交叉熵损失函数为对数函数,在接近上边界的时候,其仍然可以保持在高梯度状态,因此模型的收敛速度不会受到影响。目前在分类模型中我只发现了这一种优势,如果各位有其它观点还请不吝赐教,在此谢过。

结语

至此,我们便较为直观地理解交叉熵以及它的优势了。在此感谢各位看官的耐心阅读。后续内容将会不定期奉上,欢迎大家关注小斗公众号 对半独白


如何直观理解交叉熵及其优势?相关推荐

  1. 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

    关于交叉熵在loss函数中使用的理解 交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起 ...

  2. 由损失函数设计原理,重理解交叉熵推导

    主要讨论最小二乘,极大似然估计,交叉熵 思路来源:"损失函数"是如何设计出来的?直观理解"最小二乘法"和"极大似然估计法"_哔哩哔哩_bil ...

  3. 深刻理解交叉熵损失函数

    说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式: 我们已经对这个交叉熵函数非常熟悉,大多数情况下都是直接拿来使用就好.但是它是怎么来的?为什么它能表征真实样本标签 ...

  4. 交叉熵损失函数优缺点_如何简单通俗的理解交叉熵损失函数?

    前面小编给大家简单介绍过损失函数,今天给大家继续分享交叉熵损失函数,直接来看干货吧. 一.交叉熵损失函数概念 交叉熵损失函数CrossEntropy Loss,是分类问题中经常使用的一种损失函数.公式 ...

  5. 信息熵和交叉熵的细节理解

    先陈述我这里说了半天的信息熵是个什么东西? 这里说的信息熵是什么东西? 信息熵主要是应用在集成学习作为评价指标,判定我们某次的分类是不是效果足够好. 这里说的交叉熵是什么东西? 虽然之前还有其他应用, ...

  6. 交叉熵损失函数和focal loss_理解熵、交叉熵和交叉熵损失

    交叉熵损失是深度学习中应用最广泛的损失函数之一,这个强大的损失函数是建立在交叉熵概念上的.当我开始使用这个损失函数时,我很难理解它背后的直觉.在google了不同材料后,我能够得到一个令人满意的理解, ...

  7. [机器学习]理解熵,交叉熵和交叉熵的应用

    一 信息量 信息论当中的熵指的是信息量的混乱程度,也可以理解成信息量的大小. 举个简单的例子,以下两个句子,哪一个句子的信息量更大呢? 我今天没中彩票 我今天中彩票了 从文本上来看,这两句话的字数一致 ...

  8. 从交叉熵角度理解困惑度(perplexity)

    从交叉熵理解困惑度 我们通常使用困惑度(perplexity)来评价语言模型的好坏.通过理解困惑度,也可以让我们更加深入的理解交叉熵(CrossEntropy)的意义,也可以轻易量化模型的性能. 回顾 ...

  9. 深入理解Pytorch负对数似然函数(torch.nn.NLLLoss)和交叉熵损失函数(torch.nn.CrossEntropyLoss)

    在看Pytorch的交叉熵损失函数torch.nn.CrossEntropyLoss官方文档介绍中,给出的表达式如下.不免有点疑惑为何交叉熵损失的表达式是这个样子的 loss ⁡ ( y , clas ...

最新文章

  1. Linux上部署web服务器并发布web项目
  2. idea提交git差件_多人合作使用git,推送代码、和并分支
  3. 二级缓存使用步骤_Mybatis的一级缓存和二级缓存的理解以及用法
  4. php 复杂数组排序,如何利用php array_multisort函数 对数据库结果进行复杂排序
  5. 侠众道武功最佳练级方案_千年练级经验总结
  6. 把台式计算机硬盘拆下,台式电脑的硬盘可以拆下来吗
  7. 批量替换Excel超级链接
  8. 盘点 Java 线程池配置的常见误区
  9. 分析计算机网络的功能,分析计算机网络管理系统的功能及实现
  10. iOS 微信支付开发流程
  11. 【个人学习笔记】泛函分析-度量空间(一)——定义与例子
  12. Qt win7中读取Excel会出现闪退的问题
  13. 基于C#实现的学生考试系统
  14. 什么是C132跳空高开或低开选股指标?
  15. BUAA 编译作业 练习3
  16. Python软件编程等级考试三级——20201206
  17. 53、Flutter之通知 Notification
  18. 深思考人工智能再获行业嘉奖 人工智能垂直行业最具投资价值企业
  19. nginx反向代理(请求转发-URL匹配规则)
  20. 华科计算机博士2201,2018年华中科技大学2201高等工程数学考博大纲

热门文章

  1. 【论文学习】Towards Accurate Oriented Object Detection in Aerial Images with Adaptive Multi-level Feature
  2. Matlab 函数atan 函数atan2 的区别
  3. 图书采购管理系统分析
  4. STM32最彻底的死机是什么?看门狗也挂了?
  5. linux远程登录maridb,linux – 无法使用phpMyAdmin登录到远程MariaDB服务器,但在shell中工作...
  6. CentOS7系统安装
  7. C++中的内存管理、内存泄漏和内存回收
  8. 【JAVA内存回收】Java 内存回收机制
  9. GaussianNetwork高斯网络
  10. 会话/序列推荐:Caser、SASRec、BERT4Rec [Session based / Sequential Recommendation]