MaxEnt: 最大熵模型(Maximum Entropy Models)(一)

python3实现maxent 最大熵模型 使用python实现最大熵模型,在原来作者的基础上重写了predict, 增加了predict_proba()方法 原作者:https://blog.csdn.net/slx_share/article/details/80097020 最大熵原理: 在学习概率模型时,在所有可能的概率模型分布中,熵最大的模型就是最好的模型。所以用最大熵原理作为约束条件选取的模型就是最大熵模型。最大熵原理通过熵的最大化来表示等可能性。 整体代码如下: 本代码的github地址:https://github.com/yin 阅读详情

转http://www.zhizhihu.com/html/y2011/3489.html

刚看完HMM,因为有个ME-HMM方法,所以再看看最大熵模型,最后再把CRF模型看看,这一系列理论大体消化一下,补充一下自己的大脑,方便面试什么的能够应付一些问题。

多读书,多思考,肚子里才有东西。

==========

https://i-blog.csdnimg.cn/blog_migrate/4989c9390d4114541cf53cf62ff0c6d2.jpeg

什么是熵?咱们这里只看信息以及自然界的熵吧。《Big Bang Theory》中Sheldon也经常把这个熵挂在嘴边。在咱们的生活中,你打碎了一块玻璃,或者洒落了一盒火柴,很自然的事情就是玻璃碎的一塌糊涂,根本没有规律可言。火柴也是,很乱,你难道从中找到规律么?规律是什么东西?规律的反面是什么?其实很有意思的事情就是自然界的东西尽可能的互补以及平衡,火柴很乱,那就规律性很小。

乱+序=1.

既然=1,那么这个乱也能描述啦?这就是熵的概念,熵是描述事物无序性的参数,熵越大则无序性越强。

我们更关注的是信息熵,怎么用熵来描述信息,不确定性等等。怎么用数学式子进行形式化描述呢?前人已经做了很多工作了:

设随机变量 ξ ,他有 A1 、 A2 .... An 共 n 个不同的结果,每个结果出现的概率为 p1 , p2 .... pn ,那么 ξ 的不确定度,即信息熵为:

H(ξ)=∑i=1npilog1pi=−∑i=1npilogpi

熵越大,越不确定。熵为0,事件是确定的。例如抛硬币,每次事件发生的概率都是1/2的话,那么熵=1:H(X)=-(0.5log0.5+0.5log0.5)=1。

那么这个式子是怎么来的呢?为什么会用log表示?我也不知道啊,查查文献。不过【参考5】中举了几个简单的例子来说明一下过程,这里引用下。

==========

例子:称硬币的问题,说有5个硬币,其中有一个是假的,这个假硬币的重量很轻,所以打算用一个天平称称,问需要最少称几次就能够保证把这个假硬币给找出来?这个问题其实是一个很经典的问题,也有另外一个类似的问题是毒水和白鼠的问题,5瓶水其中一瓶有毒,用最少几只白鼠能够保证把毒水找出来?

其实这个问题有个统一的解法就是对半分呗,二叉树,二进制等。

拿硬币的例子,可以取四个放在天平两端,如果相等那么剩下的那个就是假的。如果不相等,把轻的一端的两个硬币再称一次就知道假的了。因为这样称两次就能够保证把假硬币找出来了。这里称的事件是有三个结果的:左边重、相等、右边重。

拿小白鼠的例子,小白鼠只有活着和中毒两种状态,咱们这里人性一点儿,有解药可以解毒的,只要实验达到目的就行。那么把水分成两组,一组两瓶,一组三瓶,让一只小白鼠和一组,如果中毒,假设是三瓶的那一组,那么再递归的讲这三瓶分组,最坏情况下是用3只小白鼠。这里小白鼠的事件只有两个结果:中毒、健康。

我们假设x是那瓶毒水的序号, x∈X={1,2,3,4,5} ,y是第i只小白鼠的症状, y∈Y={1,2} ,,1表示健康,2表示中毒。

用二进制的思想的话就是设计编码 y1y2...yn 使他能够把x全部表示出来。因为一个y只有两个状态,所以要有三个y并列起来才能表示 2×2×2=23=|Y|3=8>5 。所以是用三只小白鼠。上面称硬币的问题由于一个y可以表示三个状态,所以需要两个 3∗3=9>5 就可以表示完所有的x了。

思想是这样的,从上面的分析可以看出,我们只用到的是 x , y 的状态,而没有用 x , y 的内容以及意义。也就是说只用了 X 的“总不确定度”以及 Y 的“描述能力”。

拿小白鼠和毒水的例子, X 的"总不确定度": H(X)=log|X|=log5 。 Y 的“描述能力”为: H(Y)=log|Y|=log2 。

所以至少要用多少个Y才能够完全准确的把X表示出来呢?

H(X)H(Y)=log5log2=2.31

所以得用三只小白鼠。称硬币那个问题由于 Y 的表示能力强啊, log3 的表示能力,所以表示 X 的时候仅仅需要1.46的y就行了,所以就是称2次。【这样子思考貌似有问题。。。】

那么为什么用 log 来表示“不确定度”和“描述能力”呢?前面已经讲过了,假设一个 Y 的表达能力是 H(Y) 。显然, H(Y) 与 Y 的具体内容无关,只与 |Y| 有关。所以像是 log|Y|n 这种形式,把n就可以拿出来了,因为关系不大所以扔掉n就剩下 log|Y| 了。

“不确定度”和“描述能力”都表达了一个变量所能变化的程度。在这个变量是用来表示别的变量的时候,这个程度是表达能力。在这个变量是被表示变量的时候,这个程度是不确定度。而这个可变化程度,就是一个变量的熵(Entropy)。显然:熵与变量本身含义无关,仅与变量的可能取值范围有关。

==========

下面看称硬币以及小白鼠毒水问题的一个变种:

(1)已知第一个硬币是假硬币的概率是三分之一;第二个硬币是假硬币的概率也是三分之一,其他硬币是假硬币的概率都是九分之一。(2)毒水也是,第一瓶是毒水的概率是1/3。。。以此类推。

最后求称次数或者小白鼠数量n的期望。因为第一个、第二个硬币是假硬币的概率是三分之一,比其他硬币的概率大,我们首先“怀疑”这两个。第一次可以把这两个做比较。成功的概率是三分之二。失败的概率是三分之一。如果失败了,第二次称剩下的三个。所以,期望值是:

13×log3log3+13×log3log3+19×log9log3+19×log9log3+19×log9log3=43

小白鼠的也可以同理求出来。为什么分子会有 log3 、 log9 呢?其实分子的 log3 、 log9 表示的都是“不确定度”。事件发生的确定性为1/3,那么不确定度可以理解为 log3=log11/3 ,再除以y的“表达能力”,就是每一次猜测的输出结果了,再根据期望公式 ∑ixipi 就可以求一下期望。不知道理解的对不对?

==========

更广泛的,如果一个随机变量x的可能取值为 X={x1,x2,...,xk} ,要用n位 y:y1y2...yn 表示出X来,那么n的期望是:

∑i=1kp(x=xi)log1p(x=xi)log|Y|=∑i=1kp(x=xi)log1p(x=xi)log|Y|

其实分子式不确定度,分母就是表达能力。那么 X 的信息量为:

H(X)=∑i=1kp(x=xi)log1p(x=xi)

这就是熵的定义了是吧?我们就算凑出来了。X的具体内容跟信息量无关,我们只关心概率分布,于是H(X)可以写成:

H(X)=∑i=1kp(x)log1p(x)

==========

有时候我们知道x,y变量不是相互独立的,y的作用会影响x的发生,举个例子就是监督学习了,有了标记y之后肯定会对x的分布有影响,生成x的概率就会发生变化,x的信息量也会变化。那么此时X的不确定度怎么表示呢?

H(X|Y)=∑(x,y)∈X×Yp(x,y)log1p(x|y)

这个其实就是条件熵Conditional Entropy。很显然,Y加入进来进行了标记之后,就引入了知识了,所以会减小X的不确定性,也就是减小了熵。所以知识能够减小熵。

那么有了部分标记,我们就有了知识,就可以预测一部分模型,这个模型对未知的知识还是保留着熵,只是这个熵被减少了。但是我们知道熵越大,数据分布越均匀,越趋向于自然。

所以我们就想,能够弄出个模型,在符合已知知识的前提下,对未知事物不做任何假设,没有任何偏见。也就是让未知数据尽可能的自然。这就是最大熵模型(Maximum Entropy Models)了。

==========

【【未完待续:MaxEnt: 最大熵模型(Maximum Entropy Models)(二)】】

==========

参考:

1、A maximum entropy approach to natural language processing (Adam Berger)

2、A Brief MaxEnt Tutorial (Adam Berger)

3、Learning to parse natural language with maximum entropy models (Adwait Ratnaparkhi)

4、中科院刘群教授《计算语言学-词法分析(四)》

5、《最大熵模型与自然语言处理》:laputa,NLP Group, AI Lab, Tsinghua Univ.

python实现利用maxent模型预测多个物种的适生区分布 上述代码仅作为示例,实际使用MaxEnt模型预测物种适生区分布时,还需要对数据进行预处理、特征选择和模型参数调优等操作,以提高预测准确率和可靠性。收集环境因子数据:收集用于预测物种适生区分布的环境因子数据,这些数据包括每个物种的生境喜好和限制条件,例如生长温度、土壤类型、水分等。收集物种分布数据:首先,需要收集多个物种的分布数据,包括它们已知的适生区分布范围和环境因子(如温度、降水量等)。数据清理和处理:对收集的数据进行清理和处理,例如去除缺失值和异常值,标准化数据等。 阅读详情

相关推荐

Maxent 模型代码

maxent代码code是张博士所编写的,有python和c++接口。

Python实现最大熵模型

最大熵模型 这里先贴上书上的算法 算法 我们的f(x,y)f(x,y)如下所示,根据其定义可知f#(x,y)f#(x,y)必然为常数,因此采用公式6.34更新迭代即可 f(x,y)={10(x,y)∈train setelse f(x,y)={1(x,y)∈train set0else 还要注意一下,公式6.34中的M值可以理解成学习速率,最好直接设置成一个...

fsfsfsdfsdfdr的博客 2306

maxent3.4.1.zip

maxent3.4.1.zip

python实现随机森林模型物种分布预测

对于物种分布模型(SDM),用的最多的无疑是最大熵模型(MaxEnt),它是基于最大化信息熵的原则,通过考虑已知的约束条件和最少的先验假设来推测物种在不同环境中的分布概率分布,本质上是一种先验概率假设方法。后来学者发现类似随机森林(RF)这种黑箱模型在物种分布预测过程中具有较好的效果。下面为python代码的实现过程。

qq_49526578的博客 3156

MaxEnt文本分类

根据李航的统计学习方法,实现了最大熵模型新闻文本分类,里面包含的数据集,数据预处理,MaxEnt模型实现代码,用于教学目的。

手把手教你用周立功USBCANFD-200U和ZCANPRO软件,从驱动安装到UDS诊断一条龙搞定

本文详细介绍了如何使用周立功USBCANFD-200U硬件和ZCANPRO软件,从驱动安装到UDS诊断的全流程操作指南。涵盖硬件连接、软件配置、CAN通信测试及UDS诊断实战,帮助汽车电子爱好者和工程师快速掌握CAN总线通信技术,实现专业的车辆诊断功能。

weixin_30752699的博客 579

MaxEnt: 最大熵模型(Maximum Entropy Models)(二)

上面《MaxEnt: 最大熵模型(Maximum Entropy Models)(一)》其实就是讲了下熵,下面我们继续最大熵模型(Maximum Entropy Models)。 最大熵原理指出,当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们

MemRay 3815

stm32教程之三重ADC交错采样

ps:本文基于stm32F407ZGT6单片机 stm32F4单片机单通道采集的最大采样率为2.4M,所以有时会难以满足较高频率的采样,于是查阅芯片手册,发现stm32F4支持多重ADC采集,利用每个通道的转换时间,错位采样,从而提高采样率,最大把采样率开到2.4*3=7.2M. (去年初学ADC时研究的,基于cube和HAL库的三重ADC交错采样参考资料不多,我也是研究了一段时间,写下这篇博客希望可以帮助到更多人。) 示意图如下: 以下是官方例子的说明, In this ex...

weixin_52178036的博客 8873

MaxEnt: 最大熵模型(Maximum Entropy Models)

转自:http://www.zhizhihu.com/html/y2011/3489.html 刚看完HMM,因为有个ME-HMM方法,所以再看看最大熵模型,最后再把CRF模型看看,这一系列理论大体消化一下,补充一下自己的大脑,方便面试什么的能够应付一些问题。 多读书,多思考,肚子里才有东西。 ========== 什么是熵?咱们这里只看信息以及自然界的熵吧。《Bi

bestluyf的专栏 1619

事件相机数据处理实战:从原始事件流到视觉表征的三种核心方法

本文深入探讨了事件相机数据处理的核心环节,即如何将异步、稀疏的原始事件流转换为深度学习模型可处理的视觉表征。文章重点解析了三种核心方法:逐通道累积、体素网格双线性插值和对称累积事件表示,详细阐述了其原理、代码实现、可视化效果及各自的适用场景,为事件相机在目标识别、光流估计等视觉任务中的高效应用提供了实战指南。

read5的博客 438

STM32驱动AD7779:双极性电源下8通道同步ADC的SPI配置与数据采集实战

本文详细介绍了在双极性电源供电下,使用STM32通过SPI接口驱动AD7779同步ADC芯片实现8通道高精度数据采集的实战经验。重点解析了电源设计、抗干扰处理、寄存器配置、SPI通信技巧及数据校准方法,帮助工程师解决工业测量中的同步采样与噪声控制难题。

e3f4g5的博客 369

机器学习值得一看的优质论文(部分)

Hidden Markov Models  Rabiner, L. A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition. (Proceedings of the IEEE 1989)  Freitag and McCallum, 2000, Information Ext

RYP_S 的专栏 1429

我用两种方式玩转 MCP:CherryStudio vs VS Code 实测手记

MCP,全称,你可以理解为——给大模型装上“手脚”和“工具箱”。传统大模型像一位博学但手不能动的学者:“我知道怎么算圆周率,但没法打开计算器。而支持 MCP 的模型,能通过标准协议自动调用外部工具(比如fetch网络请求、readFile读文件、shell执行命令),真正做到“知行合一”。输入后**,保存,**之后就显示出来了MCP 不是“魔法”,而是把 AI 从“问答机”升级为“智能代理”的关键一步。工具本身不难,难的是“知道它能解决什么问题”。

zyq569的博客 1020

机器学习 之 最大熵模型

最大熵模型 最大熵模型(Maximum Entropy Model,以下简称MaxEnt),最大熵模型是什么意思呢? 熵,最初是一个热力学的概念。表示的是混乱的程度,熵越高,表示越混乱;熵越低,表示越整齐,越有规律。宇宙中的事物都有自发变得更混乱的倾向,也就是说熵会不断增加,这就是 熵增原理 。例如一根线会折叠穿插越来越乱,一股烟最终会弥漫到整个瓶子,或者说熵不断增大。 在历史的发展中,熵的概念进入了很多学科的视野。上世纪40年代,香农首先在信息论中引入了信息熵的概念。这里信息熵用来表示随机变量不确定度的度

HeroIsUseless的博客 935

告别IIS折腾!用.NET8+Kestrel在Windows上5分钟搞定Web API部署

本文介绍了如何使用.NET8和Kestrel在Windows上快速部署Web API,告别繁琐的IIS配置。通过5分钟实战教程,开发者可以轻松实现高性能、跨平台的API服务部署,显著提升开发效率和系统性能。

weixin_42528780的博客 243

G.6 PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】

百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]_汀、的博客-优快云博客PaddleHub--飞桨预训练模型应用工具{风格迁移模型、词法分析情感分析、Fine-tune API微调}【一】_汀、的博客-优快云博客 PaddleHub--{超参优化AutoDL Finetuner}【二】_汀、的博客-优快云博客PaddleHub实战篇{词法分析模型LAC、情感分类ERNIE Tiny}训练、部署【三】_汀、的博客-优快云博客通过前面几篇文章大家都有一定了解,下面

丨汀、的博客 6185

MaxEnt: 提高文本分类效率的利器

MaxEnt: 提高文本分类效率的利器 MaxEnt 是一个基于 Python 的文本分类工具,它利用最大熵模型(Maximum Entropy Model)为文本分类提供了一个快速、准确的方法。 项目简介 MaxEnt 由张立强开发并开源,它的主要目标是提高文本分类的效率。通过使用最大熵模型,MaxEnt 可以在训练集上学习到一个分类器,并将其应用于新的文本数据中。 功能特性 MaxEnt 具有...

gitblog_00001的博客 606

Happycapy深度解析:AI智能体的“iPhone时刻“来了?

从理论到实践深度解析了融合OpenClaw和ClaudeCode优点的超强智能体工具Happycapy

program哲学 457

【机器学习】最大熵模型(Maximum Entropy Model)

最大熵模型(Maximum Entropy Model,以下简称MaxEnt),MaxEnt 是概率模型学习中一个准则,其思想为:在学习概率模型时,所有可能的模型中熵最大的模型是最好的模型;若概率模型需要满足一些约束,则最大熵原理就是在满足已知约束的条件集合中选择熵最大模型。最大熵原理指出,对一个随机事件的概率分布进行预测时,预测应当满足全部已知的约束,而对未知的情况不要做任何主观假设。在这种情...

qq_32742009的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python 机器学习最常打交道的 27 款工具包

????????关注后回复“进群”,拉你进程序员交流群????????为了大家能够对人工智能常用的 Python 库有一个初步的了解,以选择能够满足自己需求的库进行学习,对目前较为常见的人工智能库进行简要全面的介绍。1、NumpyNumPy(Numerical Python)是 Python的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,Numpy底层使用C语言编写,数组中直接...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 1249

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 自然图像抠图/视频抠像技术发展情况梳理(image matting, alpha matting, video matting)--计算机视觉专题1
下一篇: MaxEnt: 最大熵模型(Maximum Entropy Models)(二)
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值