KL散度=交叉熵-熵

  • 熵:可以表示一个事件A的自信息量,也就是A包含多少信息。
  • KL散度:可以用来表示从事件A的角度来看,事件B有多大不同。
  • 交叉熵:可以用来表示从事件A的角度来看,如何描述事件B。

一种信息论的解释是:

  • 熵的意义是对A事件中的随机变量进行编码所需的最小字节数
  • KL散度的意义是“额外所需的编码长度”如果我们用B的编码来表示A
  • 交叉熵指的是当你用B作为密码本来表示A时所需要的“平均的编码长度”

一、熵

1.定义

衡量一个事件所包含的信息量

S(A)=iPA(xi)logPA(xi)

 

二、交叉熵

1.定义

H(A,B)=iPA(xi)log(PB(xi))

2.性质

  • 不对称性
  • cross主要是用于描述两个事件之间的相互关系,对自己求交叉熵等于熵。即H(A,A)=S(A),注意只是非负而不一定等于0.

 

三、KL散度

1.定义

又名“相对熵”,衡量两个事件/分布之间的不同

  KL散度由A自己的熵与B在A上的期望共同决定。当使用KL散度来衡量两个事件(连续或离散),上面的公式意义就是求 A与B之间的对数差 在 A上的期望值。

2.性质

  • 如果PA=PB,即两个事件分布完全相同,那么KL散度等于0.
  • KL散度是不对称的
  • DKL(A||B)=S(A)+H(A,B),如果S(A)是一个常量,那么DKL(A||B)=H(A,B),也就是说KL散度和交叉熵在特定条件下等级。

3.KL散度 VS 交叉熵

训练数据的分布A是给定的。那么根据我们在第四部分说的,因为A固定不变,那么求DKL(A||B)  等价于求H(A,B) ,也就是A与B的交叉熵。得证,交叉熵可以用于计算“学习模型的分布”与“训练数据分布”之间的不同。当交叉熵最低时(等于训练数据分布的熵),我们学到了“最好的模型”。

 

 

参考文献:

【1】KL散度 - 搜索结果 - 知乎

 

posted @   nxf_rabbit75  阅读(481)  评论(0编辑  收藏  举报
编辑推荐:
· 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;正则化;为什么正则化可以减小过拟合
一、熵1.定义二、交叉熵1.定义2.性质三、KL散度1.定义2.性质3.KL散度 VS 交叉熵
点击右上角即可分享
微信分享提示