【AI基础】bias和variance的奇妙关系

简介: 【举栗子】一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:

一、误差Error分析

image.png

1.估测变量x的偏差和方差

【举栗子】

一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:

一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环,这里的差值1就是bias,表示模型期望和真实目标的差距;

二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环,这里的差值2就是variance,表示模型的稳定性,即训练得到的模型之间的变动水平。

Error = Bias + VarianceError反映的是整个模型的准确度。

image.png

具体的公式推导如下:

image.png

2.不同模型情况

1)不同模型的方差

一次模型的方差就比较小的,也就是是比较集中,离散程度较小。而5次模型的方差就比较大,同理散布比较广,离散程度较大。

所以用比较简单的模型,方差是比较小的(就像射击的时候每次的时候,每次射击的设置都集中在一个比较小的区域内)。如果用了复杂的模型,方差就很大,散布比较开。

这也是因为简单的模型受到不同训练集的影响是比较小的。

2)不同模型的偏差

image.png

这里没办法知道真正的 f ^ \hat{f}

f

^

,所以假设图中的那条黑色曲线为真正的 f ^ \hat{f}

f

^

结果可视化,一次平均的 f ˉ \bar{f}

f

ˉ

 没有5次的好,虽然5次的整体结果离散程度很高。

一次模型的偏差比较大,而复杂的5次模型,偏差就比较小。

直观的解释:简单的模型函数集的space比较小,所以可能space里面就没有包含靶心,肯定射不中。而复杂的模型函数集的space比较大,可能就包含的靶心,只是没有办法找到确切的靶心在哪,但足够多,就可能得到真正的 f ¯ f¯f¯。

image.png

每一个model就是一个function set,可以用上图的左下方的圈圈表示这个function set,即范围。一个简单的model的set是比较小的(可能就根本没有包含target),而上图左边的五次方方程曲线,这时的function set比较大。 虽然分布的比较散,没有办法找出target(数据少),但是比较分散在中心周围,平均起来能接近f ¯ f¯f¯。

3)方差VS偏差

image.png

将系列02中的误差拆分为偏差和方差。

U n d e r f i t t i n g UnderfittingUnderfitting 欠拟合:简单模型(左边)是偏差(b i a s biasbias)比较大造成的误差

O v e r f i t t i n g OverfittingOverfitting 过拟合:复杂模型(右边)是方差(v a r i a n c e variancevariance)过大造成的误差(过拟合,即在训练集表现良好,但是在测试集上很糟糕)

image.png

欠拟合(b i a s biasbias偏大)

添加其他特征项:如组合、泛化、相关性、上下文特征、平台特征等;

添加多项式特征:如线性模型添加二次型模型使得泛化能力更强;

减少正则化参数:正则化是用来防止过拟合的,但现在模型欠拟合,则需要减少正则化参数。

注意:如果此时强行再收集更多的data去训练,这是没有什么帮助的,因为设计的函数集本身就不好,再找更多的训练集也不会更好。

过拟合(v a r i a n c e variancevariance偏大)

重新清洗数据

增加训练的数据量(如下图),可学习的特征太少,如sparrow项目的电影数据集过少,过拟合,deepFM模型参数难以收敛。

使用正则化方法,使得参数越小越好(找到的曲线更平滑),也可以对r e g u l a r i z a t i o n regularizationregularization一项加上w e i g h t weightweight。但是正则化可能影响b i a s biasbias(曲线都平滑时可能就没包含目标的function)。

使用dropout方法,在深度学习中常用(imageNet提出的)

image.png

但是很多时候不一定能做到收集更多的data。也很多种收集(调整)数据的方法,针对对问题的理解对数据集做调整。比如识别手写数字的时候,偏转角度的数据集不够,那就将正常的数据集左转15度,右转15度,类似这样的处理。

3.模型的选择

现在在偏差和方差之间就需要一个权衡

想选择的模型,可以平衡偏差和方差产生的错误,使得总错误最小

但是下面这件事最好不要做:

image.png

用训练集训练不同的模型,然后在测试集上比较错误,模型3的错误比较小,就认为模型3好。但实际上这只是你手上的测试集,真正完整的测试集并没有。比如在已有的测试集上错误是 0.5,但有条件收集到更多的测试集后通常得到的错误都是大于 0.5 的。

1)交叉验证

image.png

图中public的测试集是已有的,private是没有的,不知道的。

交叉验证:将训练集再分为两部分,一部分作为训练集,一部分作为验证集。用训练集训练模型,然后在验证集上比较,确定出最好的模型之后(比如模型3),再用全部的训练集训练模型3,然后再用public的测试集进行测试,此时一般得到的错误都是大一些的。

不过此时会比较想再回去调一下参数,调整模型,让在public的测试集上更好,但不太推荐这样。

上述方法可能会担心将训练集拆分的时候分的效果比较差怎么办,可以用下面的方法。

2)N-折交叉验证

将训练集分成N份,比如分成3份。

image.png

比如在三份中训练结果Average错误是模型1最好,再用全部训练集训练模型1。

二、Bagging与Boosting策略

Bagging通过分而治之的策略,通过对训练样本多次采用,综合决策多个训练出来的模型,来减少集成分类器的方差。

Boosting通过逐步聚集基分类器分错的样本,减少集成分类器的偏差。

2.1 Bagging策略

Bagging是一种并行集成方法(各基分类器之间无强依赖,可以并行训练),其全称是b o o t s t r a p   ag g r e g a t ing \rm{\textbf{b}ootstrap\,\textbf{ag}gregat\textbf{ing}}bootstrapaggregating,即基于bootstrap抽样的聚合算法。随机森林算法就是一种基于bagging的模型,在最终决策时,每个个体单独做出判断后再进行投票作集体决策。

(1)Bootstrap抽样

Bootstrap抽样:指从样本集合中进行有放回的抽样,假设数据集的样本容量为n nn且基学习器的个数为M MM,对于每个基学习器我们可以进行有放回地抽取n nn个样本,从而生成了M MM组新的数据集,每个基学习器分别在这些数据集上进行训练,再将最终的结果汇总输出。

那这样的抽样方法有什么好处呢?

image.png

从上式的结果来看,当基模型之间的相关系数为1时方差不变,这相当于模型之间的输出完全一致,必然不可能带来方差的降低。

bootstrap的放回抽样特性保证了模型两两之间很可能有一些样本不会同时包含,这使模型的相关系数得以降低,而集成的方差随着模型相关性的降低而减小,如果想要进一步减少模型之间的相关性,那么就需要对基学习器进行进一步的设计。

(2)bootstrap造成的数据集差异

image.png

2.2 Boosting

Boosting是一种串行集成方法(迭代式学习),各个基分类器之间有依赖。每层在训练时,对前一层基分类器分错的样本,给予更高的权重。

假设第i ii个基模型的输出是


image.png

image.png

Boosting的过程很类似于人类学习的过程,我们学习新知识的过 程往往是迭代式的,第一遍学习的时候,我们会记住一部分知识,但往往也会犯 一些错误,对于这些错误,我们的印象会很深。第二遍学习的时候,就会针对犯 过错误的知识加强学习,以减少类似的错误发生。不断循环往复,直到犯错误的 次数减少到很低的程度。

2.3 基分类器用树型模型的原因

集成学习一般三部曲的第一步是【找到误差互相独立的基分类器】,事实上,任何 分类模型都可以作为基分类器,但树形模型由于结构简单且较易产生随机性所以比较常用。具体的3点原因:

决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用 过采样的方法来调整样本权重。

决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。

数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决 策树基分类器随机性较大,这样的“不稳定学习器”更适合作为基分类器。此外, 在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性, 很好地引入了随机性。 除了决策树外,神经网络模型也适合作为基分类器,主要由于神经网络模型 也比较“不稳定”,而且还可以通过调整神经元数量、连接方式、网络层数、初始 权值等方式引入随机性。

相关文章
|
人工智能 物联网 定位技术
让AI绘图动起来并走进现实——LoRA模型-3D - Anagly
让AI绘图动起来并走进现实——LoRA模型-3D - Anagly
344 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型引领6G革命!最新综述探索未来通信方式:九大方向,覆盖多模态、RAG等
随着科技发展,大模型在6G网络中展现出革命性潜力。近日,arXiv发布综述论文《大模型在电信领域的全面调查》,探讨了大模型在通信领域的应用,涵盖生成、分类、优化、预测等方向,同时指出了数据隐私、计算资源及模型可解释性等挑战。论文链接:https://arxiv.org/abs/2405.10825
48 5
|
4月前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络深度剖析:Python带你潜入AI大脑,揭秘智能背后的秘密神经元
【9月更文挑战第12天】在当今科技飞速发展的时代,人工智能(AI)已深入我们的生活,从智能助手到自动驾驶,从医疗诊断到金融分析,其力量无处不在。这一切的核心是神经网络。本文将带领您搭乘Python的航船,深入AI的大脑,揭秘智能背后的秘密神经元。通过构建神经网络模型,我们可以模拟并学习复杂的数据模式。以下是一个使用Python和TensorFlow搭建的基本神经网络示例,用于解决简单的分类问题。
56 10
|
7月前
|
机器学习/深度学习 人工智能 算法
人工智能平台PAI产品使用合集之多目标模型eval比较耗时间,该如何优化
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
【AI 初识】解释推荐系统的概念
【5月更文挑战第3天】【AI 初识】解释推荐系统的概念
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】讨论 LLM 在更广泛的通用人工智能 (AGI) 领域中的作用
【5月更文挑战第5天】【大模型】讨论 LLM 在更广泛的通用人工智能 (AGI) 领域中的作用
|
8月前
|
人工智能 自然语言处理 自动驾驶
大模型领域急需建立可解释AI理论
【1月更文挑战第21天】大模型领域急需建立可解释AI理论
60 2
大模型领域急需建立可解释AI理论
|
8月前
|
机器学习/深度学习 自然语言处理 安全
18LLM4SE革命性技术揭秘:大型语言模型LLM在软件工程SE领域的全景解析与未来展望 - 探索LLM的多维应用、优化策略与软件管理新视角【网安AIGC专题11.15】作者汇报 综述
18LLM4SE革命性技术揭秘:大型语言模型LLM在软件工程SE领域的全景解析与未来展望 - 探索LLM的多维应用、优化策略与软件管理新视角【网安AIGC专题11.15】作者汇报 综述
727 0
|
8月前
|
机器学习/深度学习 存储 人工智能
极智AI | 谈谈模型量化组织方式
本文主要聊一下深度学习模型量化组织方式。
340 0
|
存储 JSON 前端开发
2、从零开始构建基于ChatGPT的嵌入式(Embedding)本地医疗客服问答机器人模型(看完就会,看到最后有惊喜)
本文中我使用的是后端语言golang,来调用的所有外部接口,但它们均是restful api,所以如果你使用的是其他语言,那么是完全可以替换的,包括nodejs或者直接使用前端请求都是可以实现我的功能的。后面有机会会使用vue3来添加一个页面,现在主要通过postman或者apifox来调试接口,主要为了验证逻辑想法。
1426 0

热门文章

最新文章