机器学习—最大熵模型(MEM)小结

机器学习—最大熵模型(MEM)小结当我们想要得到一个随机事件的概率分布时,如果没有足够的信息来完全确定其概率分布,那么最为保险的方法就是选择使得熵最大的分布。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  当我们想要得到一个随机事件的概率分布时,如果没有足够的信息来完全确定其概率分布,那么最为保险的方法就是选择一个使得熵最大的分布。

1.信息论知识

  这里就照搬我写的一篇关于决策树的内容了。原文链接:决策树与随机森林(从入门到精通)

1.1信息熵的概念

   设离散型随机变量X的取值有 x 1 , x 2 , x 3 , . . . , x n x_{1},x_{2},x_{3},…,x_{n} x1,x2,x3,...,xn,其发生概率分别为 p 1 , p 2 , p 3 , . . . , p n p_{1},p_{2},p_{3},…,p_{n} p1,p2,p3,...,pn,那么就可以定义信息熵为:
在这里插入图片描述
一般对数的底数是2,当然也可以换成e,当对数底数为2时,信息熵的单位为比特,信息熵也称香农熵。当对数不为2而是其他大于2的整数r时,我们称信息熵为r-进制熵,记为 H r ( X ) H_{r}(X) Hr(X),它与信息熵转换公式为:
在这里插入图片描述
信息熵用以描述信源的不确定度, 概率越大,可能性越大,但是信息量越小,不确定性越小,熵越小。

1.2.条件熵

设随机变量(X,Y)具有联合概率分布:
在这里插入图片描述
  条件熵 H ( Y ∣ X ) H(Y|X) H(YX)表示 在已知随机变量X的条件下随机变量Y的不确定性。可以这样理解:(X,Y)发生所包含的熵,减去X单独发生的熵,就是在X发生的前提下,Y发生新带来的熵。
所以条件熵有如下公式成立:
在这里插入图片描述
推导如下:
在这里插入图片描述

1.3相对熵

  相对熵,又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度等。定义如下:
设p(x),q(x)是随机变量X中取值的两个概率分布,则p对q的相对熵为:
在这里插入图片描述
在信息理论中,相对熵等价于两个分布的信息熵(Shannon entropy)的差值。 即:
在这里插入图片描述

1.4互信息

  两个随机变量X和Y的互信息,定义为X,Y的联合分布和独立分布乘积的相对熵。即:
在这里插入图片描述
所以根据KL散度也就是相对熵的定义,可以推出互信息的表达式如下:
在这里插入图片描述
继续推导如下:
在这里插入图片描述
所以最后有:
在这里插入图片描述

1.5几个量之间的关系

结合上述条件熵的两个表达式,可以进一步推出:
在这里插入图片描述
当然我们也可以根据熵的定义来直接推出上面这个互信息的公式:
在这里插入图片描述
同时我们也可以得到两个不等式:
在这里插入图片描述
上面这个不等式告诉我们,对于一个与X相关的随机变量Y,只要我们得知了一点关于Y的信息,那么X的不确定度就会减小。
最后,借助强大的韦恩图来记住这些关系:
在这里插入图片描述

2.无约束条件

  假设有一随机变量X是离散的,我们只是知道它有K个可能的取值,其余什么信息都不知道,那么我们该如何估计才能使得熵最大呢?

X 1…K
p p1…pK
根据上面熵的定义,我们知道我们要做的其实就是:
在这里插入图片描述

概率相加为1这个条件肯定得是天然满足的,换成求最小值:
在这里插入图片描述
同样利用拉格朗日乘子法,我们令:
在这里插入图片描述
我们让L对 p i p_{i} pi求导得:
在这里插入图片描述
  可以看到,每一个 p i p_{i} pi都是一个相等的常数,又因为相加为1,所以每一个取值发生的概率都相等并且为1/K。因此,不知道任何已知条件的情况下,离散的随机变量均匀分布时,它的熵最大。

3.最大熵原理

  我们设数据集为 ( x 1 , x 2 , . . . , x N ) (x_{1},x_{2},…,x_{N}) (x1,x2,...,xN)
  最大熵原理认为:在所有可能的概率模型中,熵最大的模型为最好的概率模型。求最大熵模型的步骤大致为:

  1. 根据已知约束条件筛选出可能的概率模型
  2. 在所有可能的概率模型中选出一个熵最大的模型作为最终的模型。

3.1构造约束条件

  我们第一步要根据已知条件筛选出可能的概率模型,那么什么才是已知条件?这个需要我们自己构造,构造步骤如下:

  • 我们定义一个f(x),f(x)是任意一个关于随机变量x的函数,我们称它为特征函数。
  • 根据我们上面给出的训练数据集,我们可以得到f(x)的经验分布为 p ^ ( f ( x ) ) \hat{p}(f(x)) p^(f(x)),进而求得其经验分布的期望为: E p ^ [ f ( x ) ] E_{\hat{p}}[f(x)] Ep^[f(x)]=一个已知量。
  • 解释一下经验分布: p ^ ( f ( x 1 ) ) \hat{p}(f(x1)) p^(f(x1))= x 1 x_{1} x1在训练集中出现的次数/样本集的总数目。

   为什么我们要定义一个经验概率分布呢? 因为如果我们判断的随机变量x的概率分布是正确的,那么我们定义一个任意一个特征函数f(x),算出它的经验概率分布的期望,应该就等于f(x)真实的期望,这样我们就构造了一个约束条件。

3.2求解概率分布

那么我们最终要求解的就是:
在这里插入图片描述
其中 δ \delta δ已知。利用拉格朗日乘子法,我们令:
在这里插入图片描述
其中 λ 0 是 一 个 常 数 , λ 是 一 个 列 向 量 , \lambda_{0}是一个常数,\lambda是一个列向量, λ0λf(x)也是一个列向量,它们都是Q维。我们让L对 p ( x ) p(x) p(x)求导得:
在这里插入图片描述
于是我们就得到了 p ( x ) p(x) p(x)的具体值,也就是x的具体分布。剩余参数可以通过KKT条件来求,这里就不再叙述了,具体可以参考:强对偶性、弱对偶性以及KKT条件的证明(对偶问题的几何证明)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180267.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月19日 下午2:36
下一篇 2022年10月19日 下午2:36


相关推荐

  • javascript中的后退和刷新

    javascript中的后退和刷新后退+刷新在C#Web程序中,如为页面按钮写返回上一页代码this.RegisterClientScriptBlock("E","");其中,history

    2022年7月3日
    21
  • FFmpeg H264编码

    FFmpeg H264编码FFmpeg 进行 h264 的编码流程 1 通过编码器名 查找编码器 h264 编码器名字是 libx264 2 设置编码器的参数 比如码率 分辨率 帧率 时间基等 3 打开编码器 avcodec open2 4 对帧数据进行编码 avcodec send frame 将帧送到编码器 avcodec receive packet 从编码器获取编码后的数据包 编码完后写入文件 在实际使用中帧数据来源于解码后的元数据或来源于摄像头 本文示例的帧数据时人工添加了模拟数据 相关 AP

    2026年3月18日
    2
  • YUV422转换YUV420应用实例

    YUV422转换YUV420应用实例在上一篇文章中 JPEG 编码学习 JPEG 数据转 YUV 数据应用实例已经可以将 v4l2 采集到的 JPEG 数据转换为 YUV422 格式 但是我们有时候需要使用其他格式的数据 比如用 YUV420 作为 H264 的输入数据格式 做数据格式转换 首先需要明白各种数据类型的采样分布格式 如下图 我们在上一篇中通过 JPEG 解码转换过来的是 YUYV 数据格式 YUV422 他的数据分布是 现在我们需要把 YUYV

    2026年3月17日
    2
  • 伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布

    伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布https blog csdn net michael r chang article details 39188321http www cnblogs com wybang p 3206719 htmlhttps blog csdn net jteng article details 603346281 伯努利分布伯努利分布 Bernoullidis 又名两点

    2026年3月17日
    3
  • 进程间通信的五种方式

    进程间通信的五种方式进程间通信的意思就是在不同进程之间传递信息 它是一组编程接口 让程序员协调不同进程 使能够相互传递消息 IPC 目的 1 数据传输 一个进程需要将它的数据发送给另一个进程 发送的数据量在一个字节到几兆字节之间 2 共享数据 多个进程想要操作共享数据 一个进程对共享数据的修改 别的进程应该立刻看到 3 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程

    2026年3月17日
    2
  • Ubuntu 安装 Anaconda3 详细步骤

    Ubuntu 安装 Anaconda3 详细步骤主要介绍在Ubuntu14.04中安装Anaconda3的详细过程

    2022年5月12日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号