https://wanghuaishi.wordpress.com/2017/02/21/%E5%9B%BE%E8%A7%A3%E6%9C%80%E5%A4%A7%E7%86%B5%E5%8E%9F%E7%90%86%EF%BC%88the-maximum-entropy-principle%EF%BC%89/

这个“熵“并不是指热力学上熵的概念,而是由信息论男神克劳德·艾尔伍德·香农(Claude Elwood Shannon )在1948年提出的“信息熵“,用来描述信息的不确定程度。

信息熵公式

这个听起来很神奇的概念,其实蕴含着最朴素最简洁的思想,看下去你就能体会这一点了。

先来问个问题,如果给你一颗骰子,你觉得分别掷到1,2,…,6的概率是多少?

我觉得你肯定会立刻就回到我,答案是1/6。

很好,如果你知道答案是1/6,就说明其实你已经掌握了最大熵原理。

对于这个骰子问题,我们并不知道它到底是均匀的还是不均匀的,我们唯一知道的条件是1-6出现的总概率总是等于1的。

我们把这个已知的条件称为“约束条件“。除了约束条件,我们对这个骰子一无所知,所以最符合现实的假设就是这个骰子是个均匀的骰子,每一点出现的概率是一个等概率事件。

所谓的最大熵原理其实就是指包含已知信息,不做任何未知假设,把未知事件当成等概率事件处理。

好,再来看个例子,假设你去参加抽奖活动,有5个盒子ABCDE,奖品就放在这5个盒子中的一个,请问奖品在ABCDE盒子里的概率分别是多少?

其实和骰子问题一样,我们除了知道奖品一定在其中一个盒子里(约束条件),但是对奖品到底在哪个盒子里一点额外的信息都没有,所以只能假设奖品在每个盒子里的概率都是1/5(等概率)。

这时有个围观抽奖多时的吃瓜群众根据他的观察事实决定给你点提示,他说,奖品在A和B盒子里的概率总共是3/10。

也就是说此时你知道了额外信息:P(A)+P(B)=3/10,你得到了新的约束条件。

那么这个时候我再问你,奖品分别在各个盒子里的概率是多少呢?

根据最大熵原理,我们加入新的约束条件,然后继续把剩下的做等概率处理。

虽然P(A)+P(B)=3/10,但是我们并不知道A和B各自的贡献是多少,所以也只能假设它们两个贡献依然是平均的,所以各自就是3/20。

因为P(A)+P(B)=3/10,所以P(C)+P(D)+P(E)=7/10,但是我们依然不知道这三者的贡献,所以还是假设它们等概率,因此每一项就是7/30。

这就是通过最大熵原理处理概率问题了。

怎么样?是不是很简单?现在你估计要问这种简单的道理为什么还要搞出什么最大熵原理?

因为只有引入“信息熵“的概率,我们才可以把上述这些个看起来很简单的例子“量化“,然后用它来解决更加复杂的问题。

现在我们来看看信息熵到底是怎么定义的,(其实就是上面那张香农的图)。一个系统的信息熵其实就是系统中每一个事件的概率乘以log概率,然后把所有事件相加后取负数。

因为概率总是在0-1之间,所以log后会小于0,取了负号以后熵就是正数了。

log如果以2为底数的话,信息熵的单位就是比特(bit),以e为底数的话,信息熵的单位就是奈特(nat),以10为底数的话,单位就是哈脱特(hat)。

我们来看一枚硬币的例子,对于一枚均匀硬币,抛一次,正面朝上和背面朝上的概率各为0.5。

那么它总共的信息熵就是log2,如果以2为底计算话就是1bit的信息熵。

根据我们之前讲过的例子,0.5这个概率应该是满足最大熵原理的(等概率)。

既然我们已经明确给出了信息熵的定义那么根据这个公式计算的话能不能得到0.5这个概率使系统的熵最大呢?

换言之,等概率让系统的熵最大到底是不是真的?

为了验证这一点,我们假设抛硬币出现正面的概率是p,那么出现背面的概率就是1-p(注意,1-p其实就是包含了约束条件,因为两者的总和总是1)。

接下来我们要找到一个p,让H(P)最大,也就是熵最大。

求最大也就是求这个函数的极值,学过高数的小伙伴们都知道对于这个问题,求导等于0。也就是说H(P)’=0的解,函数在这点的值不是最大就是最小。

我们解方程H(P)’=0,得到当p=0.5的时候,函数H(P)达到极值(此时是极大值,你可以代入其它p值,会发现结果比p=0.5的时候小。)。

所以也就是说p=0.5的时候(等概率),系统的熵最大。

硬币是一个二元系统(一正一反两个概率),我们也可以把这个结论推广到一般情况:对于一个有n个事件的系统,每一个事件发生的概率为pi,唯一已知的约束条件是事件发生的总和等于1。

为了求出满足最大熵的事件概率pi,我们首先构造Lagrange函数:就是把需要满足的约束条件加到H(P)后(见第二项)

然后老规矩,求这个函数的极值,还是求导等于0。

求解得到的pi具有未知参数λ(来自约束项),于是我们可以利用约束条件进一步求解。

最终我们会发现,对于一个含有n个事件的系统,熵最大时,事件的概率必然满足等概率。

所以对于一个符合最大熵原理的掷骰子模型,每一点出现的概率就是1/6,对于一个从5个盒子中抽奖的事件,奖品在每个盒子中的概率就是1/5。

至此,我们可以发现信息熵的定义的确能够描述并且量化那些生活中看起来很简单但是却总觉得有点说不清楚的问题。

由于下面要继续用到Lagrange乘子法,所以我们给大家简单解释下这个到底是什么东西。

对于一般的求极值问题我们都知道,求导等于0就可以了。但是如果我们不但要求极值,还要求一个满足一定约束条件的极值,那么此时就可以构造Lagrange函数,其实就是把约束项添加到原函数上,然后对构造的新函数求导。

看张图就很容易理解了。

对于一个要求极值的函数f(x,y),图上的蓝圈就是这个函数的等高图,就是说f(x,y)=C1,C2,…Cn分别代表不同的数值(每个值代表一圈,等高图),我要找到一组(x,y),使它的Ci值越大越好,但是这点必须满足约束条件g(x,y)(在黄线上)。

也就是说f(x,y)和g(x,y)相切,或者说它们的梯度▽f和▽g平行,因此它们的梯度(偏导)成倍数关系(假设为λ倍)。

因此把约束条件加到原函数后再对它求导,其实就等于满足了下图上的式子。

大致理解了Lagrange乘子法的意义后,我们来用数学化的信息熵定义解决之前提过的多了一个约束条件的盒子抽奖问题。

为了方便描述,我们用数字12345代替字母ABCDE,因此这个系统中一共有5个概率,分别是p1,p2,p3,p4,p5。

并且包含两个约束条件:1. 总概率和=1; 2. p1+p2=3/10。

根据之前的解释,为了求解包含约束条件的函数极值,我们构造Lagrange函数:

由于系统中包含两个约束条件,所以添加两项,两个参数λ0,λ1(当有n个约束条件时,就是添加n项,λ0,λ1,…,λn)。

对概率pi求偏导等于0(首先固定λ0,λ1,假设它们是已知参数):

根据上式,我们可以解得:

之后代入之前构造的Lagrange函数,并对λ求偏导,目的在于寻找使L最大的λ:

最后,我们可以解出:

结果与我们之前的直观计算结果是相同的,再一次证明,最大熵原理就是对于未知信息的等概率处理。

好了,至此我觉得你应该已经了解了什么是最大熵原理,并且如何根据最大熵原理处理系统中的概率问题。

再次强调一下最大熵原理的本质:系统中事件发生的概率满足一切已知约束条件,不对任何未知信息做假设,也就是对于未知的,当作等概率处理。

当使用数学方法计算时,寻找满足系统的熵最大时的事件概率。

我们之前提过信息熵表示不确定程度,所以熵最大,也就是系统的不确定程度最大,系统中没有任何个人的主观假设。

以硬币为例,你当然也可以硬币正面出现的概率是0.6,背面是0.4,但是这种假设中就包含了你的个人假设,并不是完全客观的,当然你可以通过后续实验验证你的观点,但是在一开始,在你没有得到任何信息的前提下,假设正面和背面出现的概率各是0.5才是最客观的。

这里我们只是通过简单的例子让大家理解最大熵原理,在语音处理等领域,很多时候是无法直接通过代入约束条件得到满足极值的解的,也就是说往往当你得到了pi(λ)后(用λ表示的pi)后,便无法继续通过对λ求偏导得到最终pi。

所以则需要通过迭代算法等数值解法继续求解pi,这里我们就不展开了,有兴趣的小伙伴们可以查阅诸如改进的迭代尺度法和牛顿法等(参考资料)。

参考资料:

1.《统计学习方法》李航

2.《数学之美》 吴军

3.《最大熵学习笔记》http://blog.csdn.net/itplus/article/details/26549871

最大熵原理(The Maximum Entropy Principle)的更多相关文章

  1. 最大熵模型The Maximum Entropy

    http://blog.csdn.net/pipisorry/article/details/52789149 最大熵模型相关的基础知识 [概率论:基本概念CDF.PDF] [信息论:熵与互信息] [ ...

  2. 最大熵模型 Maximum Entropy Model

    熵的概念在统计学习与机器学习中真是很重要,熵的介绍在这里:信息熵 Information Theory .今天的主题是最大熵模型(Maximum Entropy Model,以下简称MaxEnt),M ...

  3. 最大熵模型(Maximum Etropy)—— 熵,条件熵,联合熵,相对熵,互信息及其关系,最大熵模型。。

    引入1:随机变量函数的分布 给定X的概率密度函数为fX(x), 若Y = aX, a是某正实数,求Y得概率密度函数fY(y). 解:令X的累积概率为FX(x), Y的累积概率为FY(y). 则 FY( ...

  4. Maximum Entropy Model(最大熵模型)初理解

    0,熵的描述 熵(entropy)指的是体系的混沌的程度(可也理解为一个随机变量的不确定性),它在控制论.概率论.数论.天体物理.生命科学等领域都有重要应用,在不同的学科中也有引申出的更为具体的定义, ...

  5. Maximum Entropy Population-Based Training for Zero-Shot Human-AI Coordination

    原文:https://www.cnblogs.com/Twobox/p/16791412.html 熵 熵:表述一个概率分布的不确定性.例如一个不倒翁和一个魔方抛到地上,看他们平稳后状态.很明显,魔方 ...

  6. 确界原理 supremum and infimum principle 戴德金定理 Dedekind theorem

    确界原理  supremum and infimum principle  戴德金定理  Dedekind theorem http://www.math.ubc.ca/~cass/courses/m ...

  7. Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor

    Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor 20 ...

  8. 逻辑斯特回归(logistic regression)与最大熵模型(maximum entropy model)

  9. 最大熵模型(Maximum Entropy Models)具体分析

    因为本篇文章公式较多,csdn博客不同意复制公式,假设将公式一一保存为图片在上传太繁琐了,就用word排好版后整页转为图片传上来了.如有错误之处.欢迎指正.

随机推荐

  1. 容器编排工具之Docker-compose

    前文我们聊了下docker私有仓库harbor的搭建,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13061984.html:在上一篇博客的末尾,我们简单聊了 ...

  2. 使用LaTeX输入矩阵

    当前各种文本编辑器支持的LaTeX数学公式库大多基于KaTeX,或者在Web中用MathJax的比较多,下面给出一种在Web中输入矩阵的例子 $$\left[ \begin{array}{cccc}a ...

  3. 面试问Redis集群,被虐的不行了......

    哨兵主要针对单节点故障无法自动恢复的解决方案,集群主要针对单节点容量.并发问题.线性可扩展性的解决方案.本文使用官方提供的redis cluster.文末有你们想要的设置ssh背景哦! 本文主要围绕如 ...

  4. 【asp.net core 系列】13 Identity 身份验证入门

    0. 前言 通过前两篇我们实现了如何在Service层如何访问数据,以及如何运用简单的加密算法对数据加密.这一篇我们将探索如何实现asp.net core的身份验证. 1. 身份验证 asp.net ...

  5. Java深拷贝和浅拷贝的区别

    浅拷贝 被复制的对象的所有的变量都与原对象有相同的值,而所有的引用对象仍然指向原来的对象.换言之,浅拷贝 不复制引用对象. 1 class Experience { 2 private String ...

  6. easymock笔记2

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest. EasyMock 可以mock interface和抽象java 类,但是不可以mock拥有被final ...

  7. python的常用魔法方法详细总结

    构造和初始化 __init__我们很熟悉了,它在对象初始化的时候调用,我们一般将它理解为"构造函数". 实际上, 当我们调用x = SomeClass()的时候调用,__init_ ...

  8. keras训练实例-python实现

    用keras训练模型并实时显示loss/acc曲线,(重要的事情说三遍:实时!实时!实时!)实时导出loss/acc数值(导出的方法就是实时把loss/acc等写到一个文本文件中,其他模块如前端调用时 ...

  9. Egret游戏大厅制作思路

    Egret游戏大厅制作思路 Egret中,写好的代码最终都被打包到main.js里面,只有库文件会单独生成出来,按需加载. 游戏中有需求,要将一些游戏(或者模块)进行外包,然后从主游戏大厅中进入,那么 ...

  10. 《UNIX环境高级编程》(APUE) 笔记第九章 - 进程关系

    9 - 进程关系 GitHub 地址 1. 进程组 每个进程除了有一个 进程 ID 外,还属于一个 进程组 .进程组是一个或多个进程的 集合 ,通常,它们是在同一作业中结合起来的,同一进程组中的各进程 ...