当前位置: 首页 > news >正文

深度学习剖根问底:交叉熵和KL散度的区别

信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。

根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性而这个代价大小就是信息熵,记住,信息熵衡量了系统的不确定性,而我们要消除这个不确定性,所要付出的【最小努力】(猜题次数、编码长度等)的大小就是信息熵

交叉熵,其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小

在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布。

我们如何去衡量不同策略之间的差异呢?这就需要用到相对熵,其用来衡量两个取值为正的函数或概率分布之间的差异。

以上参考:https://blog.csdn.net/u012740294/article/details/79642613

 

交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异。

相对熵(relative entropy)就是KL散度(Kullback–Leibler divergence),用于衡量两个概率分布之间的差异。

对于两个概率分布p(x)q(x) ,其相对熵的计算公式为:

\tt KL\it(p\parallel q)=-\int p(x)\ln q(x) dx -(-\int p(x)\ln p(x) dx)

注意:由于p(x) 和q(x) 在公式中的地位不是相等的,所以\tt KL \it(p\parallel q)\not\equiv \tt KL \it (q\parallel p)

相对熵的特点,是只有p(x)=q(x) 时,其值为0。若p(x) 和q(x) 略有差异,其值就会大于0。

相对熵公式的前半部分-\int p(x)\ln q(x)dx 就是交叉熵(cross entropy)。

p(x) 是数据的真实概率分布,q(x) 是由数据计算得到的概率分布。机器学习的目的就是希望q(x)尽可能地逼近甚至等于p(x) ,从而使得相对熵接近最小值0。由于真实的概率分布是固定的,相对熵公式的后半部分(-\int p(x)\ln p(x) dx) 就成了一个常数。相对熵的值大于等于0(https://zhuanlan.zhihu.com/p/28249050,这里给了证明),那么相对熵达到最小值的时候,也意味着交叉熵达到了最小值。对q(x) 的优化就等效于求交叉熵的最小值。另外,对交叉熵求最小值,也等效于求最大似然估计(maximum likelihood estimation)。

相关文章:

  • Ubuntu18.04 国内环境使用kubeadm安装kubernetes+docker(单机版)
  • python PIL image.show() 之后如何关闭
  • PyInstaller 打包 .py文件为windows下.exe执行文件遇到的种种
  • python threading中的thread开始和停止
  • 如何修改/固定matplotlib显示图片窗口在屏幕上的位置
  • 基于Pytorch理解attention decoder网络结构
  • Pytorch和Tensorflow在实现RNN上的区别
  • Keras使用心得记录
  • tensorflow BERT学习记录--使用自己的训练集--run_classifier.py
  • 如何给深度学习加速——模型压缩、推理加速
  • Challenge/Response挑战回应认证
  • 深度学习面试题常见问答
  • 万能指纹创建——DeepMasterPrints论文解读
  • 深度学习算法在不同任务中的使用到的相同feature/trick合集(持续更新)
  • GAN网络的发展(持续更新)
  • 2017届校招提前批面试回顾
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • iOS 系统授权开发
  • JavaScript实现分页效果
  • Linux下的乱码问题
  • Magento 1.x 中文订单打印乱码
  • Sublime text 3 3103 注册码
  • vue 个人积累(使用工具,组件)
  • VUE es6技巧写法(持续更新中~~~)
  • 闭包--闭包作用之保存(一)
  • 二维平面内的碰撞检测【一】
  • 观察者模式实现非直接耦合
  • 前端代码风格自动化系列(二)之Commitlint
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  •  一套莫尔斯电报听写、翻译系统
  • const的用法,特别是用在函数前面与后面的区别
  • elasticsearch-head插件安装
  • 阿里云移动端播放器高级功能介绍
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #pragma once
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (¥1011)-(一千零一拾一元整)输出
  • (ZT)出版业改革:该死的死,该生的生
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (五)网络优化与超参数选择--九五小庞
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转载)Google Chrome调试JS
  • .net core 6 集成和使用 mongodb
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .Net MVC + EF搭建学生管理系统
  • .NET 反射 Reflect
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况