以色列理工暑期学习-MLE、MAP参数估计方法

2023-10-24 22:50

本文主要是介绍以色列理工暑期学习-MLE、MAP参数估计方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小编有幸参加到以色列理工的暑期交流项目中,并选择了《机器学习导论》这门经典课程,进行再次学习并回顾知识点查缺补漏;

既然是作为导论,国外的课程和国内的课程的区别在哪里?我觉得很重要的两点是:逻辑性和学习性。

很多在国外交流过的同学,或者看过国外大学视频的同学应该都有一些体会,逻辑性在于课程如何引入很重要;主要是通过一两句简单的概述,让学生明白这门课最基础的内容和最实用的应用,然后逐步递推,从example到general,再到general解决不了的special case,然后再次improved general,最后在apply;由逻辑性结合学习性在于,上课的不同环节上,会有lecture、tuitional material、homework和project,这中间穿插的TA环节很重要,会涉及到上课时间来不及讲解到的基础;比如老师上课讲到的贝叶斯分类器,TA会在后面的答疑课中讲到概率论的基础知识,甚至逐步推导公式。所以课程听起来还是很受用的。

老师讲述的逻辑是这样的:

每一个机器学习算法都应该有这样的过程:


基本的常用算法都会涉及到从贝叶斯、KNN、SVM以及一些聚类降维算法。

按照课程顺利来讲的话,这个逻辑对于我个人来讲略微有点逻辑问题,教授先讲解的是贝叶斯方法,然后直接引入MAP,最大后验估计,而在参数估计中引入MLE;对于我们中国学生来讲,应该最大似然的参数估计更为熟悉:

最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。

首先,假设为独立同分布的采样,θ为模型参数,f为我们所使用的模型,遵循我们上述的独立同分布假设。参数为θ的模型f产生上述采样可表示为

而根据似然函数的定义:在已有数据的基础上,并假定数据满足一定分布,去估计在参数θ下,使得模型产生出观测数据的概率最大;


对于连乘形式的函数我们取对数,并求导,使导数为0,求得最大的θ即可;

但我们都知道,采样数据只是反映了分布在一定范围内的特性。例如,我们在抛硬币的时候,如果根据一百次的数据采样得到的分布一定不会是0.5;但我们都知道抛一枚硬币得到正反面的概率是0.5,所以假设θ的先验分布为g,根据贝叶斯公式,可知:



即我们的MAP,最大后验概率估计。

MAP与MLE最大区别是MAP中加入了模型参数本身的概率分布,或者说。MLE中认为模型参数本身的概率的是均匀的,即该概率为一个固定值。

说到这里可以多了解一些关于参数估计的知识和数学历史:

从某一个角度来讲,机器学习的学习和“训练”就是把大量的数据归纳到少数的参数中,“训练”正是估计这些参数的过程。然而对于参数估计,一直存在两个学派的不同解决方案。一是频率学派解决方案:通过某些优化准则(比如似然函数)来选择特定参数值;二是贝叶斯学派解决方案:假定参数服从一个先验分布,通过观测到的数据,使用贝叶斯理论计算对应的后验分布。先验和后验的选择满足共轭,这些分布都是指数簇分布的例子。

所以在贝叶斯学派眼里,所有的参数都是分布形式,会从MAP继续扩展为贝叶斯估计:和MAP一样,也认为参数不是固定的,都假设参数服从一个先验分布。但是MAP是直接估计出参数的值,而贝叶斯估计是估计出参数的分布,这就是贝叶斯与MLE与MAP最大的不同。定义如下

所以我们需要求的就不再是后验概率,而是,观察到evidence(数据采样D)的概率。当新的数据被观察到时,后验概率可以自动随之调整。但是通常这个全概率的求法是贝叶斯估计比较有技巧性的地方。求得一个新的值出现的概率:

其中先验分布的参数我们称为超参数(hyperparameter);上面的公式也就是贝叶斯估计的核心了,它把类条件概率密度p(xˆ|θ)与未知参数的后验概率密度p(θ|D)联系起来了 。注意,此积分不再等于1,这也是贝叶斯估计与最大后验估计最大的区别了。再说简单点,就是贝叶斯估计使用贝叶斯定理去估计参数的后验概率密度:



上图为在硬币实验中,MLE、MAP与贝叶斯估计的参数值,可以看出越来越精确接近0.5。

继而是经验贝叶斯,主要是计算出超参数分布:


全贝叶斯是将所有参数都是服从一定的分布:


所以总结一下贝叶斯和经典估计方法的不同之处:

(a)关于参数的解释不同

经典估计方法认为待估参数具有确定值,它的估计量才是随机的,如果估计量是无偏的,该估计量的期望等于那个确定的参数;而贝叶斯方法认为待估参数是一个服从某种分布的随机变量。

(b)所利用的信息不同

经典方法只利用样本信息;贝叶斯方法要求事先提供一个参数的先验分布,即人们对有关参数的主观认识,被称为先验信息,是非样本信息,在参数估计过程中,这些非样本信息与样本信息一起被利用。

(c)对随机误差项的要求不同

经典方法,除了最大似然法,在参数估计过程中并不要求知道随机误差项的具体分布形式,但是在假设检验与区间估计时是需要的;贝叶斯方法需要知道随机误差项的具体分布形式。

(d)选择参数估计量的准则不同

经典估计方法或者以残差平方和最小,或者以似然函数值最大为准则,构造极值条件,求解参数估计量;贝叶斯方法则需要构造一个损失函数,并以损失函数最小化为准则求得参数估计量。

对于一般概率模型的应用范围在于:如果只有观察变量那么我们可以用最大似然法(或者贝叶斯)估计未知参数,但是如果还含有隐变量就不能如此简单解决了。这时候就需要EM算法。(参见之前的EM算法)

这里再提出一点参数估计方法的一个限制:是我们人为的假定了参数分布服从了某种指定形式的分布函数,这可能在某些特定情况下是不合适的。有一种可选的解决方案是:非参数密度估计,他只依赖于观测数据量的大小,这种方法其实也需要参数,但是这些参数只是控制了模型的复杂性而不是分布的函数形式。通常会有三种无参密度估计方法:直方图,最近邻,核函数。所以还有很多估计方法有待发现和学习,读者们也可以通过参考文献了解更多,里面会有更口语化知乎回答,便于大家理解;也有对于硬币实验的公式推导详情,便于深度研究!

参考文献:

【1】知乎回答:https://www.zhihu.com/question/19894595

【2】http://blog.csdn.net/lin360580306/article/details/51289543

【3】http://lijiwei19850620.blog.163.com/blog/static/978415382013655540438/

【4】http://blog.csdn.net/yangliuy/article/details/8296481

【5】http://www.cnblogs.com/GuoJiaSheng/p/3966812.html

【6】http://www.ramlinbird.com/%E5%8F%82%E6%95%B0%E4%BC%B0%E8%AE%A1%EF%BC%9Amle%E3%80%81em%E5%92%8Cmap/

这篇关于以色列理工暑期学习-MLE、MAP参数估计方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278290

相关文章

Nginx中location实现多条件匹配的方法详解

《Nginx中location实现多条件匹配的方法详解》在Nginx中,location指令用于匹配请求的URI,虽然location本身是基于单一匹配规则的,但可以通过多种方式实现多个条件的匹配逻辑... 目录1. 概述2. 实现多条件匹配的方式2.1 使用多个 location 块2.2 使用正则表达式

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

Golang中map缩容的实现

《Golang中map缩容的实现》本文主要介绍了Go语言中map的扩缩容机制,包括grow和hashGrow方法的处理,具有一定的参考价值,感兴趣的可以了解一下... 目录基本分析带来的隐患为什么不支持缩容基本分析在 Go 底层源码 src/runtime/map.go 中,扩缩容的处理方法是 grow

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot