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

【机器学习】近似分布的熵到底是p(x)lnq(x)还是q(x)lnq(x)?

【1】通信的定义

信息量(Information Content)是信息论中的一个核心概念,用于定量描述一个事件发生时所提供的“信息”的多少。它通常用随机变量 𝑥的概率分布来定义。事件 𝑥发生所携带的信息量由公式给出:
I ( x ) = − log ⁡ p ( x ) I(x)=-\log p(x) I(x)=logp(x)
其中, p ( x ) p(x) p(x)表示事件 𝑥发生的概率。

∙ 概率越小,事件越不常见,发生时提供的信息量越大。 ∙ 概率为  1  的事件是确定的,不提供任何信息量( I ( x ) = 0 )。 ∙ 概率接近  0  的事件非常罕见,信息量趋近无穷大。 \begin{aligned}&\bullet\quad\text{概率越小,事件越不常见,发生时提供的信息量越大。}\\&\bullet\quad\text{概率为 }1\text{ 的事件是确定的,不提供任何信息量(}I(x)=0\text{)。}\\&\bullet\quad\text{概率接近 }0\text{ 的事件非常罕见,信息量趋近无穷大。}\end{aligned} 概率越小,事件越不常见,发生时提供的信息量越大。概率为 1 的事件是确定的,不提供任何信息量(I(x)=0)概率接近 0 的事件非常罕见,信息量趋近无穷大。

信息量描述单个事件的信息贡献,而熵(Entropy)是信息量的期望值,用于衡量整个概率分布的不确定性:

对于离散随机变量的熵的定义为:
H [ x ] = − ∑ x p ( x ) log ⁡ 2 p ( x ) \mathrm{H}[x]=-\sum_xp(x)\log_2p(x) H[x]=xp(x)log2p(x)

对于连续随机变量的熵的定义为:

H [ x ] = E [ − ln ⁡ p ( x ) ] = − ∫ p ( x ) ln ⁡ p ( x ) d x \mathrm H[x]=\mathbb E[-\ln p(x)]=-\int p(x)\ln p(x) dx H[x]=E[lnp(x)]=p(x)lnp(x)dx

从通信角度来说,熵的值相当于对随机变量 x x x 的每个可能状态进行编码时,理论上的最短平均编码长度。

熵越大,系统的不确定性越大;熵越小,系统越接近确定性。

【2】机器学习应用

在机器学习中,一般需要构造一个概率分布 q ( x ) q(x) q(x) 来逼近一个未知的目标分布 p ( x ) p(x) p(x)

对于一个给定的连续分布 p ( x ) p(x) p(x),其随机变量 x x x 取特定值所能提供的信息量为 − l n p ( x ) − ln p(x) lnp(x),并且该随机变量 x x x 的平均信息量为 − ∫ p ( x ) l n p ( x ) d x − ∫p(x) ln p(x) dx p(x)lnp(x)dx

当用近似分布 q ( x ) q(x) q(x) 来替代目标分布 p ( x ) p(x) p(x) 时,随机变量 x 取特定值的估计信息量变
− l n q ( x ) − ln q(x) lnq(x),而相应的熵变为 − ∫ p ( x ) l n q ( x ) d x −∫p(x) ln q(x) dx p(x)lnq(x)dx

疑问

问题:这里为什么变成 p ( x ) l n q ( x ) p(x)lnq(x) p(x)lnq(x),而不是 q ( x ) l n q ( x ) q(x)lnq(x) q(x)lnq(x)?

在机器学习中,当使用一个近似分布 ( q ( x ) q(x) q(x) ) 来替代目标分布 ( p ( x ) p(x) p(x) ) 时,出现 ( p ( x ) ln ⁡ q ( x ) p(x) \ln q(x) p(x)lnq(x)) 而不是 ( q ( x ) ln ⁡ q ( x ) q(x) \ln q(x) q(x)lnq(x) ) 的原因主要源于我们关心的是目标分布 ( p ( x ) p(x) p(x) ) 的特性,而不是 ( q ( x ) q(x) q(x) ) 本身。这可以从以下几个方面理解:


1. 核心目标:逼近目标分布 ( p(x) )

  • 我们的目标是构造一个 ( q ( x ) q(x) q(x) ) 来逼近 ( p ( x ) p(x) p(x) )。因此,我们需要使用 ( p ( x ) p(x) p(x) ) 来评估 ( q ( x ) q(x) q(x) ) 的好坏。
  • 如果直接使用 ( q ( x ) ln ⁡ q ( x ) q(x) \ln q(x) q(x)lnq(x) ),我们只是在描述 ( q ( x ) q(x) q(x) ) 本身的性质,而没有体现它与 ( p ( x ) p(x) p(x) ) 的关系。

2. 期望的计算权重由 ( p(x) ) 决定

  • 在概率分布中,期望的计算权重应该反映目标分布 ( p ( x ) p(x) p(x) ) 的实际情况。
  • 通过积分 − ∫ p ( x ) ln ⁡ q ( x ) d x - \int p(x) \ln q(x) dx p(x)lnq(x)dx我们是用目标分布 ( p ( x ) p(x) p(x) ) 的概率来加权评估 ( q ( x ) q(x) q(x) ) 的表现。
    这意味着我们关注的是目标分布下的“真实情况”,而不是 ( q ( x ) q(x) q(x) ) 自己的特性。

3. 解释:信息论中的编码思想

信息论中,我们希望用 ( q ( x ) q(x) q(x) ) 来编码目标分布 ( p ( x ) p(x) p(x) ) 中的数据。如果 ( p ( x ) p(x) p(x) ) 是真实分布, ( q ( x ) q(x) q(x) ) 是我们的近似分布:

  • ( − ln ⁡ p ( x ) -\ln p(x) lnp(x) ):真实分布下的理想编码长度。
  • ( − ln ⁡ q ( x ) -\ln q(x) lnq(x) ):用近似分布编码时的实际长度。

用 ( q ( x ) q(x) q(x) ) 来编码 ( p ( x ) p(x) p(x) ) 时,随机变量 ( x x x ) 的取值是依据 ( p ( x ) p(x) p(x) ) 来产生的,因此应该以 ( p ( x ) p(x) p(x) ) 为权重来衡量编码的平均长度,即 ( − ∫ p ( x ) ln ⁡ q ( x ) d x -\int p(x) \ln q(x) dx p(x)lnq(x)dx)。


4. 直观理解:错误代价的衡量

如果我们直接使用 ( q ( x ) ln ⁡ q ( x ) q(x) \ln q(x) q(x)lnq(x) ),那相当于仅关注 ( q ( x ) q(x) q(x) ) 自己的内部一致性,但我们真正关心的是 ( q ( x ) q(x) q(x) ) 与 ( p ( x ) p(x) p(x) ) 的差异。这种差异需要通过目标分布 ( p ( x ) p(x) p(x) ) 来衡量:

  • ( p ( x ) ln ⁡ q ( x ) p(x) \ln q(x) p(x)lnq(x) ):用 ( q ( x ) q(x) q(x) ) 来描述 ( p ( x ) p(x) p(x) ) 时的估计误差。
  • 它是对真实分布 ( p ( x ) p(x) p(x) ) 的状态进行编码的平均代价,而非对 ( q ( x ) q(x) q(x) ) 自身的特性描述。

5. 与 KL 散度的关系

KL 散度(Kullback-Leibler divergence)用于衡量两个分布的差异,其定义为:
D K L ( p ∣ ∣ q ) = ∫ p ( x ) ln ⁡ p ( x ) q ( x ) d x = − ∫ p ( x ) ln ⁡ q ( x ) d x + ∫ p ( x ) ln ⁡ p ( x ) d x D_{KL}(p || q) = \int p(x) \ln \frac{p(x)}{q(x)} dx = - \int p(x) \ln q(x) dx + \int p(x) \ln p(x) dx DKL(p∣∣q)=p(x)lnq(x)p(x)dx=p(x)lnq(x)dx+p(x)lnp(x)dx
可以看出, ( − ∫ p ( x ) ln ⁡ q ( x ) d x -\int p(x) \ln q(x) dx p(x)lnq(x)dx) 是 KL 散度的一部分,用来描述 ( q ( x ) q(x) q(x) ) 对 ( p ( x ) p(x) p(x) ) 的拟合质量。


总结

变成 ( − ∫ p ( x ) ln ⁡ q ( x ) d x -\int p(x) \ln q(x) dx p(x)lnq(x)dx) 是因为我们关心的是 ( q ( x ) q(x) q(x) ) 对目标分布 ( p ( x ) p(x) p(x) ) 的拟合情况,而不是 ( q ( x ) q(x) q(x) ) 自己的特性。通过以 ( p ( x ) p(x) p(x) ) 作为权重来计算期望,我们能够更准确地反映目标分布下的编码代价和近似质量。

后记

2024年11月21日21点00分于上海。基于GPT4o大模型生成。


http://www.kler.cn/a/408848.html

相关文章:

  • C++中定义类型名的方法
  • mybatis学习(三)
  • 如何使用AWS Lambda构建一个云端工具(超详细)
  • 实验十三 生态安全评价
  • 【Git】:Git基本操作
  • git使用(二)
  • 【Mysql】视图--介绍和作用 视图的创建
  • golang学习-切片
  • Linux 下的 AWK 命令详细指南与示例
  • Scala之Array数组
  • ShuffleNet:一种为移动设备设计的极致高效的卷积神经网络
  • RabbitMQ 单机与集群部署教程
  • 开源在线聊天系统Fiora本地Docker快速搭建并实现与好友远程聊天
  • Qt中QPushButton中文字居左显示
  • AI驱动社交平台变革:Facebook的智能化前景
  • Golang的语言特性与鸭子类型
  • 实时质检系统—静音检测功能设置流程
  • bash笔记
  • 详解Qt之QProcess 任务类
  • Spring Boot3远程调用工具RestClient
  • SPA 首屏加载慢的原因及解决方案:结合实际项目的详细讲解
  • CVE-2022-4230
  • AWS云安全
  • 机器翻译基础与模型 之四:模型训练
  • 高新技术行业中的知识管理:关键性、挑战、策略及工具应用
  • Bug:gomonkey系列问题(undefined: buildJmpDirective)