KL散度=交叉熵-熵
分类:
机器学习优化
- 熵:可以表示一个事件A的自信息量,也就是A包含多少信息。
- KL散度:可以用来表示从事件A的角度来看,事件B有多大不同。
- 交叉熵:可以用来表示从事件A的角度来看,如何描述事件B。
一种信息论的解释是:
- 熵的意义是对A事件中的随机变量进行编码所需的最小字节数。
- KL散度的意义是“额外所需的编码长度”如果我们用B的编码来表示A。
- 交叉熵指的是当你用B作为密码本来表示A时所需要的“平均的编码长度”。
一、熵
1.定义
衡量一个事件所包含的信息量
二、交叉熵
1.定义
2.性质
- 不对称性
- cross主要是用于描述两个事件之间的相互关系,对自己求交叉熵等于熵。即,注意只是非负而不一定等于0.
三、KL散度
1.定义
又名“相对熵”,衡量两个事件/分布之间的不同
KL散度由A自己的熵与B在A上的期望共同决定。当使用KL散度来衡量两个事件(连续或离散),上面的公式意义就是求 A与B之间的对数差 在 A上的期望值。
2.性质
- 如果,即两个事件分布完全相同,那么KL散度等于0.
- KL散度是不对称的
- ,如果是一个常量,那么,也就是说KL散度和交叉熵在特定条件下等级。
3.KL散度 VS 交叉熵
训练数据的分布A是给定的。那么根据我们在第四部分说的,因为A固定不变,那么求 等价于求 ,也就是A与B的交叉熵。得证,交叉熵可以用于计算“学习模型的分布”与“训练数据分布”之间的不同。当交叉熵最低时(等于训练数据分布的熵),我们学到了“最好的模型”。
参考文献:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2018-10-17 梯度消失与梯度爆炸---如何选择随机初始权重
2018-10-17 正则化输入
2018-10-17 numpy中的广播(Broadcasting)
2018-10-17 神经网络--参数初始化
2018-10-17 训练/验证/测试集设置;偏差/方差;high bias/variance;正则化;为什么正则化可以减小过拟合