PRML-系列一之1.6

信息论

  在本章中,我们讨论概率论和决策论的许多概念,他们是本书随后讨论的基础。我们通过引入一些信息论领域额外的概念来结束本章,这些概念也在模式识别和机器学习技术的发展中也是很有用的。再次,我们只关注关键的概念,并建议读者参考其他地方更详细的讨论(Viterbi和Omura,1979;Couver和Thomas,1991;MacKay,2003年)。

  我们首先考虑一个离散型随机变量x并问当我们观察到此变量的特定值时接收到多少信息。信息量可以看作是学习x值的“惊喜度”(degree of surprise)。如果我们被告知非常不可能事件刚刚发生了,相对被告知一些非常有可能的事件刚刚发生会提供更多的信息量,如果我们知道该事件是一定会发生,我们将没有收到任何信息。因此,信息内容的量度将取决于p(x)上的概率分布,因此我们寻找h(x),它是概率p(x)的单调函数和表达信息内容。注意如果我们有两个事件x和y是不相关的,那么观察两者得到的信息应该是分别从两者获得信息的和,从而h(x,y)= h(x)+ h(y)。两个不相关的事件在统计上是独立,所以p(x,y)= p(x)p(y)。根据两者的关系,很容易表明h(x)必须用p(x)的对数形式给出,因此我们有

其中负号确保信息是正数或零。注意,小概率事件x对应于高信息内容。对数基准的选择是任意的,但我们采取信息论中比较流行的以对数2作为基底的公约,这种情况下,h(x)的单位是比特(“二进制数字”)。

  现在,假设发送者希望发送一个随机变量的值给接收者。他们在这个过程中传输的平均信息量通过取(1.92)相对于p(x)的期望获得,由下式给出

这个重要的量被称为随机变量x的熵。注意所以只要我们遇到一个x值使得p(x)=0,我们就取p(x)lnp(x)=0。

  到目前为止,我们给出了信息定义(1.92)和相应熵(1.93)的启发式动机。现在我我们表明,这些定义的确具有有用性。考虑有8个可能状态的随机变量x,其中每一个是等可能的。为了将x的值通信到一个接收器,我们需要发送长度为3比特的信息。注意,这个变量的熵由下式给出:

现在考虑有8个可能状态值{a,b,c,d,e,f,g,h}的例子(Cover和Thomas,1991年)其各自的概率为。在此情况下,熵由下式给出:

我们看到,不均匀分布比均匀分布有较少的熵,当我们讨论混乱形式的熵时会对它有更深入的理解。就目前而言,我们考虑如何传递变量的状态到接收器。我们可以用一个3位数来做到这一点。但是,我们可以利用不均匀分布这个性质,对大概率事件使用长编码,对小概率事件使用短的编码从而使平均代码长度更短。通过表示状态{a,b,c,d,e,f,g,h}来完成,例如,下面的一组代码串:0,10,110,1110,111100,111101,111110,111111。要发送编码的平均长度则是

熵和最短编码长度之间的关系通常是唯一的。无噪声编码论(Shannon,1948)表明熵是一个传输随机变量状态所需位数的较小下界。

  从现在开始,我们在定义熵时使用自然对数。在这种情况下,计算熵的单元就不是位,不同的这是一个因子ln2。

  我们用指定随意变量状态的平均信息量这种形式介绍了熵的概念。实际上,熵的概念更早的起源是物理中的平衡热力学,后来通过统计学的发展,给出的进一步解释是混乱的一种度量。为了更好的理解,考虑一组N个相同的对象被分进一组箱子,这样的话在个箱子中有个对象。考虑分配对象到箱子的方式数量,有N种方式来选择第一个对象,(N - 1)种方式来选择第二个对象,以此类推,导致总共有N!种方式来分配所有N个对象到箱子中(N!发音为“N阶乘’)表示为N×(N-1)×···×2×1)。然而,我们不希望区分每个箱子中对对象的重新排列。在第i个箱子中有n!中重排序对象的方式,所以分配N个对象到箱子的方式数由下式给出:

这叫做多重性,然后熵被定义为多重性的对数(并用一个合适的常数进进行缩放)

我们考虑N →∞,分数ni/N趋向一个定值,应用斯特灵近似:

得到

其中,我们使用了。这里是目标分配给第i个箱子的概率。在物理学中的术语,箱子中对象的具体安排称为微观态,占有数的整体分布(通过比率ni/ N表示)被称为宏观态。多重W也被称为宏观态的权重。

我们可以解释箱子为一个离散型随机变量X的状态xi,其中p(X = xi)=pi。随机变量X的熵

分布p(xi)是被几个值包围的峰值,那么它有一个相对低的熵,而那些分布更均匀地具有较高的熵,如图1.30。因为,所以熵是非负的,当有一个pi=1而所有其他的时它将等于最小值0。最大熵配置可以通过最大化H(用拉格朗日乘子强制执行概率上的规范化约束)找到。因此,我们最大化

从中我们发现所有的p(xi)都是相等的,由p(xi)=1/ M给出其中M是状态xi的总数。熵的值随后是H = lnM。这个结果也可以根据詹森不等式(稍后讨论)得到。为了验证驻点的确是最大的,我们可以评价熵的二阶导数

其中Iij是单位矩阵的元素。

  我们可以扩展熵的定义来包括连续变量x上的分布p(x)。首先将x分成宽为Δ的箱子。然后,假设p(x)是连续的,中值定理(Weisstein,1999)告诉我们每个这样的箱子,一定存在一个值xi使得:

现在,我们通过指派任何值x到xi来量化连续变量x。观察值xi的概率则是p(xi)Δ。这给出了一个离散分布,熵的形式为:

其中我们有。我们现在忽略(1.102)右手边的第二项-lnΔ,再考虑极限Δ→0。(1.102)右手边的第一项将接近p(x)lnp(x)的积分,使的

其中,右手侧的量称为微分熵。我们看到熵的离散和连续形式相差一个lnΔ,在极限Δ→0时发散。这反映了为了非常精确地指定连续变量,需要大量的比特。对定义在多个连续变量上的密度(矢量x表示),微分熵由下式给出:

在离散分布的情况下,我们看到最大熵配置对应于一个相等的穿过变量可能状态的概率分布。现在让我们考虑连续变量的最大熵配置。为了最大限度地得到好的定义,约束ρ(x)的第一和第二项而且保留规范化约束是很有必要的。因此,我们最大化带有三个约束的微分熵:

受约束的最大化可以用拉格朗日乘子来执行,这样我们、最大化相对于p(x)的函数:

采用变分法,我们设置这个函数的导数为零:

通过代回这个结果到三个约束方程可以找到拉格朗日乘子,最终产生结果:

因此,最大化微分熵的分布是高斯分布。注意,当在最大化熵时我们没有约束分布为非负的。然而,因为所得分布确实是非负的,我们事后看到,这种约束是没有必要的。

如果我们评估的高斯的微分熵,我们得到:

因此,我们再次看到随着分布变得更为平坦(即σ2增加)熵函数也随之增加。此结果也表明,微分熵跟离散熵不一样,它可以是负的,因为(1.110)中σ2<1 /(2πe)时H(x)<0。

  假设我们有一个联合分布p(x,y),从中我们得出x和y的一对值。如果x值是已知的,则需要指定y对应值的附加信息由-ln p(y |x)给出。因此,需要指定y的平均附加信息可以写成

这被称为给定x后y的条件熵。很容易看到,使用乘积规则条件熵满足关系

其中H[x,y]为p(x,y)的微分熵,H[x]是边缘分布p(x)的微分熵。从而描述x和y的信息由单独描述x的信息加上给定x指定y的条件信息给出。

时间: 2024-10-24 04:19:20

PRML-系列一之1.6的相关文章

【Windows10&nbsp;IoT开发系列】配置篇

原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry Pi.MinnowBoard和Galileo平台上的核心版.本文重点针对Raspberry Pi平台的Windwos10 IoT配置做介绍. Windows 10 IoT Editions ​一:设置你的电脑. 注:​开发Windows10 IoT的电脑需要Visual Studio 2015.

【Windows10&nbsp;IoT开发系列】PowerShell的相关配置

原文:[Windows10 IoT开发系列]PowerShell的相关配置 可使用 Windows PowerShell 远程配置和管理任何 Windows 10 IoT 核心版设备.PowerShell 是基于任务的命令行 Shell 和脚本语言,专为进行系统管理而设计. 1.​启动 PowerShell (PS) 会话 注:若要使用装有Windows10 IoT Core设备启动PS会话,首先需要在主机电脑与设备之间创建信任关系. ​启动 Windows IoT 核心版设备后,与该设备相连的

【Windows10&nbsp;IoT开发系列】API&nbsp;移植工具

原文:[Windows10 IoT开发系列]API 移植工具 Windows 10 IoT Core 中是否提供你的当前 Win32 应用程序或库所依赖的 API? 如果不提供,是否存在可使用的等效 API? 此工具可以为你回答这些问题,并协助你将你的当前 Win32 应用程序和库迁移到 Windows IoT Core. Windows 10 IoT 核心版 API 移植工具可在 ms-iot/iot-utilities github 存储库中找到.下载存储库 zip 并将 IoTAPIPor

【Windows10&nbsp;IoT开发系列】“Hello,World!”指导

原文:[Windows10 IoT开发系列]"Hello,World!"指导 本文主要是介绍使用C#来开发一个可以运行在Raspberry Pi2上的一个基本项目. ​1.在启动Visual Studio 2015后,选择"文件"→"新建项目". ​在打开的"新建项目"对话框中,选择"通用". ​选择第一个项目"空白应用(通用Windows)" 新建项目 ​注:如果这是你创建的第一个项

【Windows10&nbsp;IoT开发系列】开发人员模式设置

原文:[Windows10 IoT开发系列]开发人员模式设置  声明:本文转自微软Windows 开发人员中心(https://msdn.microsoft.com/library/windows/apps/xaml/dn706236.aspx),在此基础上进行删减和修改. ​对于要用于开发.安装或测试应用的设备,不再需要开发人员许可证.你只需从设备的设置中为这些任务启用设备一次.(仅限于运行Windows 10系统的设备) 使用开发人员功能 ​使用 Microsoft Visual Stud

【Windows10&nbsp;IoT开发系列】Powershell命令行实用程序

原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Administrator [new password]​ (其中 [new password] 表示你选择的强密码). 创建本地用户帐户: 如果你想要授予其他人访问你的 Windows IoT Core 设备的权限,你可以通过在 net user [username] [password] /add​ 中键

时序图与状态图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

[Nhibernate]Nhibernate系列之体系结构

引言 在项目中也有用到过nhibernate但对nhibernate的认识,也存留在会用的阶段,从没深入的学习过,决定对nhibernate做一个系统的学习. ORM 对象-关系映射(OBJECT/RELATION MAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯