【ML学习笔记】7:查漏补缺1(期望风险,经验风险,过学习,结构风险)

2023-12-09 14:58

本文主要是介绍【ML学习笔记】7:查漏补缺1(期望风险,经验风险,过学习,结构风险),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目前把花书和清华大学出版社的《机器学习和视觉感知》一起看,这本书里用数学的方式讲了一些具体的机器学习模型。

定义与地位

机器学习是研究人工智能算法的科学,旨在如何在经验学习中改善具体算法的性能,即通过经验提高其自动性。
这里写图片描述

按应用领域分类

这本书简述了对机器学习区分类别的几种方式,目前只有这种方式比较能看懂。机器学习目前大部分的应用集中在这两个部分:

①分类任务:根据已知的分类知识对输入的未知模式确定其类别。
②问题求解任务:寻找从当前状态转换到给定的目标状态的较好的动作序列,以获取能提高问题效率的知识。

ML中问题的表示

在一个自然系统S中给定输入x应得输入y(如给定一张图片判断它包不包含大熊猫),机器学习就是构造一个学习机LM得到输入x的预测输出,使得它和y尽可能接近。在有监督学习SL中,这个学习机显然可以把训练集中的(输入x,输出y)投入给学习机作为依据。
这里写图片描述

概率分布和概率密度

回顾一下概率论的知识,对于随机变量X,也就是说X的可能取值x∈(-∞,+∞),那么它的分布函数是:
这里写图片描述
也就是随机变量X不大于x的概率随着x变化而变化的函数,对于离散型随机变量X,也就是说X的取值是离散的,那么X只有当取这些离散的值时概率才不为0,所以只在这些点处F(x)有跳变:
这里写图片描述
而跳变的高度也就是X取这个值的概率p(X=xi),对于除了这些可能取值之外的值,从图中可以看到跳变的高度就是0,也就是表明了取这些值的概率就是0。

而对于取值是连续的连续型随机变量,并不能确定X取一个具体值的概率是多少,因为有无穷多个值,但是它的分布函数仍然可以求,显然分布函数是一个单调非减的:
这里写图片描述
而可以知道X落在一个区间(x1,x2)的概率,就是这个函数在这个区间内的增量F(x2)-F(x1):
这里写图片描述
所以对于连续型随机变量,可以定义概率密度函数 f(x):
这里写图片描述
可以理解成,因为总和为1的概率会出现在这样的连续区间里,相当于把总的概率1,按照X落在每个取值附近的可能性大小(理解为”密度”)分配出去,概率密度函数表征了该点附近取值的概率的大小(注意,只是表征,而不是真的是其函数值),也就是反映了概率分布函数在这点处变化的快慢。对于上面的式子,在图中可以这样去理解:
这里写图片描述
也就是从-∞到x处,函数曲线和x轴之间的面积,也就是从-∞到x这个区间上对概率密度函数的广义积分。那么X落在区间(x1,x2)内的概率也可以用概率密度函数在这个区间上的定积分来表示:
这里写图片描述
所以连续型随机变量X取任意值的概率为0,因为x1和x2都取这个值上式为0。但是在离散型中,因为在特殊的点处概率分布函数有跳变,所以在那些点有非零概率。从概率密度的角度去理解,离散型中也就是把总的概率1分配给了有限个点,所以不存在所谓的概率密度了。从连续型随机变量取任意值的概率为0也可以看出,概率为0的事件不一定是不可能事件,因为显然值虽然连续但也是可以取到的。

期望风险:评估预测函数

预测函数这个词还有很多同义词,预测函数<=>学习函数<=>学习机器

回到刚才那张图上,对于n个输入x和输入y,也就是n个独立同分布的观测样本:
这里写图片描述
学习机LM对每个输入x的取值的预测可以看成一个预测函数,待选的预测函数构成了预测函数集,我们要找到最优的一个:
这里写图片描述
这里的ω是函数的广义参数,如可以是特征的线性组合的权重们。判定这个预测函数是最优的依据是,用这个最优函数去做预测,期望风险(损失函数值的期望)最小,即要:
这里写图片描述
右边dF(x,y)就是在该处概率分布函数的跳变,也就是实际应出现”输入为x输出为y”这种情况的概率,将这个概率值乘以针对实际应得值y的关于x在给定广义参数ω下的预测函数f(x,ω)的损失函数值L(y,f(x,ω)),再全部加起来,也就是”损失函数值的期望”即期望风险。
这个值能从整体反映选取这个预测函数做预测,结果出现偏差的程度。不同类型的机器学习问题有不同形式的损失函数

①有监督模式识别问题

在这个情况下,预测函数<=>指示函数<=>判别函数

这里写图片描述
如果采用这样的损失函数,则期望风险可称平均错误率,并且用这个损失函数,找到使期望风险最小的预测函数,去做模式识别的方法称为贝叶斯决策

②函数拟合问题

因为拟合出的值可能高于真实值也可能低于真实值,当然最好就是真实函数值,这时损失函数可以定义为:
这里写图片描述
平方后的值始终是非负的,如果给定一个阈值,将这个平方后的值二值化,该问题也就是刚刚的有监督模式识别问题。

③概率密度估计问题

根据训练样本确定x的概率分布,损失函数可以这样定义:
这里写图片描述
其中p(x,ω)是估计出的概率密度函数。还不理解,先记录在这。

经验风险:替代期望风险

要想计算期望风险,必须知道输入为x的概率P1(x)以及在输入为x的情况下输出是y的概率P2(y|x),才能知道联合概率F(x,y)。但是给出的样本往往不能反映真实的分布情况,期望风险不能直接计算,也就没法做期望风险最小化。
用经验风险去替代期望风险,即对损失函数的算数平均:
这里写图片描述
而要做的是这个经验风险最小化,以去找一个在该条件下最优的预测函数。

按照书中所述,用经验风险最小化替代期望风险最小化是无奈之举,而且并没有可靠的理论依据。

不能保证在样本数有限的情况下经验风险最小化得到的预测函数能得到好的结果。

一对矛盾:复杂性和推广能力

如果一味的追求经验风险最小,即一味追求在有限训练集下的训练误差小,不见得预测结果就会更好。对训练集外的实战样本,把机器学习对未来输出进行预测的能力称作推广性。那么在训练集中训练误差过小(学习的复杂性即精度太高)反而导致推广能力下降的过学习问题是普遍存在的。过学习现象的原因:

①样本不充分
②学习机器设计不合理

书上举了一个非常好的例证,如给定一组训练样本(x,y),x是在实数集内,y取值在[-1,1],那么不论样本是什么函数模型产生的,总是可以找到合适的ω用预测函数:
这里写图片描述
去完美的拟合这些样本点,使得在这个训练集中和这个预测函数的误差是0,即经验风险是0:
这里写图片描述
如图中这些绿色的样本点可以用红色的曲线完美拟合,误差为0。但是实际的曲线是蓝色的,用这个红色的曲线完全不具有推广能力。

又如一个有噪声的二次模型,从中得到的样本点如果有很多都是噪声点,但是实际上它们出现的概率并不高,而我们却不知道这件事,用经验风险替代期望风险,对于这个训练集,很可能一个一次函数能使得误差更小。但是一旦推广之后,那些噪声点的出现概率并不高,多数的点还是在二次模型应在的位置上,这个一次函数的预测结果会非常差:
这里写图片描述
为保证推广能力,要对学习机器做复杂性控制。

采用复杂的学习机器容易使学习误差更小,但却往往丧失推广性。学习机器的复杂性不但与所研究的系统有关,还必须要和有限的训练集相适应。

结构风险最小化

结构风险=有序风险

经验风险最小化(ERM)会导致过学习,所以可以设定一个加上表示模型复杂度的正则化项,把经验风险加上这个定义在假设空间上的泛函,即为结构风险最小化(SRM)。
这里写图片描述

这篇关于【ML学习笔记】7:查漏补缺1(期望风险,经验风险,过学习,结构风险)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho