【机器学习】最大熵算法 整理

2023-11-06

最大熵模型由最大熵原理推导实现

1.最大熵原理

  最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。

假设离散随机变量X的概率分布式P(X),则其熵是:

熵满足下列不等式: 式中,|X|是X的取值个数,当且仅当X的分布是均匀分布时右边的等号成立。

即当X服从均匀分布时,熵最大。

 

下面通过一个例子来介绍一下最大熵原理:

问题:假设随机变量X有5个取值{A,B,C,D,E},要估计取各个值的概率P(A),P(B),P(C),P(D),P(E)。 
解:这些概率值满足以下约束条件:P(A)+P(B)+P(C)+P(D)+P(E) = 1

满足这个约束条件的概率分布有无穷多个。如果没有任务其他信息,仍要对概率分布进行估计,一个办法就是认为这个分布中各个值是相等的:P(A) = P(B) = P(C) = P(D) = P(E) = 1/5

有时,能从一些先验知识中得到一些对概率值的约束条件,例如:P(A) + P(B) = 3/10

满足上面两个约束条件的概率分布仍然有无穷多个。在缺少其他信息的情况下,可认为A和B是等概率的,C,D与E是等概率的,于是:P(A) = P(B) = 3/20  及  P(C) = P(D) = P(E) = 7/30

 

2.最大熵模型的定义

  最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。

  (1)给定一个训练数据集

  学习的目标是用最大熵原理选择最好的分类模型

  (2)给定训练数据集,可以确定联合分布P(X,Y)的经验分布和边缘分布P(X)的经验分布

  其中,v(X=x,Y=y)表示训练数据中样本(x,y)出现的频次,v(X=x)表示训练数据中输入x出现的频数,N表示训练样本容量。 
   
  (3)用特征函数f(x,y)描述输入x和输出y之间的某一个事实。其定义是

  特征函数f(x,y)关于经验分布的期望值:

  特征函数f(x,y)关于模型P(Y|X)与经验分布的期望值:

  如果有n个特征函数,那么就有n个约束条件。

 定义最大熵模型

  假设满足所有约束条件的模型集合为:

  定义在条件概率分布P(Y|X)上的条件熵为:

  则模型集合C中条件熵H(P)最大的模型称为最大熵模型。式中的对数为自然对数。

 

3.最大熵模型的学习

最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。

对于给定的训练数据集以及特征函数

最大熵模型的学习等价于约束最优化问题:

按照最优化问题的习惯,将求最大值问题改写成等价的求最小值问题:

将约束最优化的原始问题转换为无约束最优化的对偶问题,通过求解对偶问题求解原始问题

  (1)首先,引进拉格朗日乘子,定义拉格朗日函数L(P,w):

最优化的原始问题是:

对偶问题是:

由于拉格朗日函数L(P,w)是P的凸函数,原始问题的解与对偶问题的解释等价的。

(2)然后求解对偶问题内部的极小化问题L(P,w)。L(P,w)是w的函数,

将其记作 同时,将其解记作:

求偏导数:

偏导数等于0,在>0的情况下,解得:

由于  ,  得  

其中,

(3)求解对偶问题外部的极大化问题 

得到其解

此时,就可以利用梯度下降、拟牛顿等最优化方法进行学习了,类似于逻辑斯蒂回归求解参数w。

 

4.极大似然估计

  证明对偶函数的极大化等价于最大熵模型的极大似然估计

  (1)已知训练数据的经验概率分布,条件概率分布P(Y|X)的对数似然函数表示为:

  当条件概率分布P(y|x)是最大熵模型时,对数似然函数为

  (2)对偶函数

  最后一步用到   

  (3)最终可得

 

5.模型学习的最优化算法

  最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。从最优化的观点看,这时的目标函数具有很好的性质。它是光滑的凸函数,因此多种优化方法都适用,保证能找到全局最优解。

  下面以拟牛顿法为例,对于最大熵模型而言

                      

  目标函数:

  梯度:

  其中  

  相应的拟牛顿法BFGS算法如下

参考文献 :《统计学习方法》

附:我经历过的关于 一道面试题:

有8个硬币,如果知道有一个异常硬币(比正常硬币重或轻),给你一个称,称几次可以得出异常硬币?

答案:3次。

第一次、两边分别称4个硬币,取出 重或轻的 四个硬币。

第二次、两边分别称2个硬币,取出 重或轻的 两个硬币。

第三次、两边分贝称1个硬币,得出 重或轻的 一个硬币。

那如果不知道异常硬币的特征呢?答案也是称 3 次。

第一次、两边分别放两个,如果相等,则异常硬币再另四个中;如果不相等,则异常硬币再这个四个中。

第二次、从正常硬币中取两个,再从异常硬币中取出两个。如果相等,则另外两个中有一个是异常硬币;如果不相等,则这个两个硬币中,存在异常硬币。

第三次、从正常硬币中取一个,再从异常硬币中取一个。如果相等,则另一个是异常硬币;如果不相等,则这个是异常硬币。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习】最大熵算法 整理 的相关文章

  • sharding-jdbc 分库分表配置方案

    Java配置 Yaml配置 Spring Boot配置 Spring命名空间配置 http shardingsphere io document current cn manual sharding jdbc configuration c
  • 【送书活动】AI时代,程序员需要焦虑吗?

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • C++的std::is_same与std::decay

    一 背景 有一个模板函数 函数在处理int型和double型时需要进行特殊的处理 那么怎么在编译期知道传入的参数的数据类型是int型还是double型呢 include

随机推荐

  • 第五课 for循环(1)--循环次数控制

    第五课 for循环 1 循环次数控制 循环引入 例题5 1 画下面形状的5级梯形 分析 研究问题的方法之一是 从简单到复杂 步骤 说明 图形 步骤1 先分析简单的1级梯形基本问题 步骤2 代码为 pen fd 30 pen rt 90 pe
  • 为什么手机短信长度限制70个中文、160个英文???

    手机短信的长度是由编码决定的 根据国际标准 每条短信最多发送1120位 合 1120 8 140 一个字节占8位 140字节的内容 如果发送纯英文字符 由于英文ASCII采用 7位编码 所以1120位的限额可以传送1120 7 160个字符
  • VUE调用高德地图之热力图

    上次用VUE实现了高德地图的轨迹回放 现在来实现热力图功能 照例 第一步 加载JS AP 在public index html中加入 将官方demo转换为vue代码 放置地图 初始化map对象 生成热力图map 完整代码如下
  • latex表格中的字上下垂直居中

    单元格内容纵向靠上对齐 而是表线距单元格内容太近 调整表线和单元格内容之间的距离 可以通过重定义 arraystretch 来解决 renewcommand arrarstretch
  • Cannot apply to AuthenticationConfiguration already built object

    前言 Spring Security 在Spring Boot 2 7 0中升级已弃用的WebSecurityConfigrerAdapter 并且根据 EnableWebSecurity推荐自定义配置类后 还是错误的问题 失败的案例 首先
  • 多元线性回归模型的F检验

    F检验 对于多元线性回归模型 在对每个回归系数进行显著性检验之前 应该对回归模型的整体做显著性检验 这就是 F检验 当检验被解释变量 yt与一组解释变量 x 1 x 2 xk 1是否存在回归关系时 给出的零假设与备择假设分别是 H0 b1
  • vc++2010安装教程

    vc 2010是微软公司开发的一个专门用来编写C语言或C 的一个简化般的IDE 本章我们就来安装一下这个IDE 链接 https pan baidu com s 18TEvNMeUSFtSrysWNZ 4nw提取码 cnmk这个百度网盘里面
  • pipe和fork浅析

    pipe和fork浅析 fork pipe fork fork 是linux上创建子进程的系统调用 fork 函数一次调用两次返回 在父进程返回值是子进程的进程id 在子进程的返回值是0 fork 创建出来的子进程会从fork 函数后面开始
  • sqlserver 对表列的添加、修改、删除

    修改列 alter table 表名 alter column 列名 类型 alter table g contractLog alter column optContent nvarchar 50 添加列 alter table 表名 a
  • SPPNet详解(白话讲解——附图文)

    SPPNet是何凯明大神提出的 为了解决R CNN中速度慢问题 在神经网络中输入图片的尺寸必须是固定的 这是因为在设计的时候FC层中神经元的个数都是固定的 导致输入图片尺寸必须是固定的 CNN是可以适应不同尺寸的输入图片 说明在CNN后面加
  • C#使用FFMpeg.Autogen进行rtsp视频倍速播放

    1 在你的C 项目中 使用NuGet包管理器安装FFMpeg Autogen 可以在Visual Studio中打开NuGet包管理器控制台 并运行以下命令来安装它 Install Package FFMpeg Autogen 2 在代码引
  • 环形链表II

    环形链表II 给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos
  • S-DES

    S DES即simplifed DES S DES算法的输入是一个8位的明文或者密文组和一个10位的密钥 输出是一个8位的密文或者明文组 以下是S DES所需的几个置换表 P10 3 5 2 7 4 10 1 9 8 6 P8 6 3 7
  • 去掉 Powered by Discuz! 6.0.0 © 2001-2007 Comsenz Inc.

    去掉 Powered by Discuz 6 0 0 2001 2007 Comsenz Inc templates default footer htm 倒数第15行 16行删除 即下面的代码 Powered by Discuz vers
  • 图形学数学基础之重要性采样(Importance Sampling)

    作者 i dovelemon 日期 2017 08 06 来源 CSDN 主题 Importance Sampling PDF Monte Carlo 引言 前面的文章 图形学数学基础之基本蒙特卡罗尔积分 Monte Carlo Integ
  • 数组访问越界问题

    1 什么是数组访问越界 我们通过数组的下标来得到数组内指定索引的元素 这称作对数组的访问 如果一个数组定义为有n个元素 那么 对这n个元素 下标为0 到 n 1的元素 的访问都合法 如果对这n个元素之外的访问 就是非法的 称为 越界 数组占
  • Customplot画多条折线图,同时可以控制每条曲线的隐藏和显示

    Customplot多条曲线的控制 前言 开始使用Qcharts画图 大数据性能极差 于是转用Customplot画图 主要进行数据的实时更新和大量数据的加载 一 模拟数据 采用子线程创建模拟数据 采用队列存储 pragma once in
  • PostgreSQL简单使用介绍

    之前没怎么接触各类数据库 现在对新上手的数据库都来学习一番 项目组经常用到的数据库和新使用的数据库都会做个笔记 本篇讲讲postgresql 1 安装配置postgresql 参考网址 https blog csdn net DaSo CS
  • LINUX驱动开发学习笔记---GCC编译器

    一 GCC编译器基础使用 Q 为什么需要GCC编译器 A 在Windows下我们 可以 使用各种各样的 IDE进行编程 比如强大的 Visual Studio 它既可以编辑也可以编译 但是linux下vi或vim编辑器只能用于编辑 不能编译
  • 【机器学习】最大熵算法 整理

    最大熵模型由最大熵原理推导实现 1 最大熵原理 最大熵原理认为 学习概率模型时 在所有可能的概率模型 分布 中 熵最大的模型是最好的模型 通常用约束条件来确定概率模型的集合 所以 最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的