以色列理工暑期学习-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

相关文章

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法