首页 > 其他分享 >CS229|Ch8-9|泛化、正则化、模型选择

CS229|Ch8-9|泛化、正则化、模型选择

时间:2024-07-22 23:28:59浏览次数:14  
标签:泛化 模型 CS229 test 正则 参数 error Ch8 norm

关键词:
泛化性、过拟合、欠拟合;误差、偏差、方差 及其关系;模型复杂度&偏差&方差&过拟合&欠拟合&误差之间关系

泛化性generalization: performances on unseen data
training data——seen
test data——unseen
过拟合overfit: predict accurately on training data(small training loss=error=cost) but not generalize well on test data(large test error)
*在训练数据上表现很好,但在测试数据上表现很差。往往是把模型搞得很复杂去fit每一个训练数据点,但其实并不能真正代表整个数据的分布(比如考虑了unrelated features&noise),捕捉了虚假的输入和输出之间的关系
【large variance】
欠拟合underfit: relatively large training error (typically relatively large test error)
*在训练数据上表现得就很差,在测试数据上也相应不会好。往往是模型太简单,并不能代表ground truth function,没啥预测能力。此时你堆再多训练数据也没用。。。
【large bias】
bias-variance trade-off

看到这里,你肯定有很多问题:
1、bias=偏差和variance=方差到底是什么?

首先,两者都是针对测试集的

bias偏差:在测试集上,预测值和真实值之间的差距
variance方差:在测试集上,预测值的离散程度

这里先要理解,各个预测点来自哪里?所有预测点的输入x(来自测试集中的某个样本)是同一个,但是输出的预测值不同,这是因为模型的参数不同,即使用了不同的训练集(理解为训练数据的不同子集)进行模型训练。
因此,
偏差:对于同一个测试样本,N次预测值的平均值 与 真实值 之间的距离
方差:对于同一个测试样本,N次预测值之间的方差

然后看这张图帮助理解,对于同一个测试样本的输入x,红色代表真实输出值,蓝点代表各次预测点

2、generalization error=test error泛化误差、bias偏差、variance方差 之间的关系?
先上结论:泛化误差=数据本身噪声+偏差+方差
其中,数据噪声不可避免也无法处理。这个式子里比较反直觉的是方差这一项的存在

(1)理解:
我们前面提到,N次预测是针对同一个测试样本的输入x,但是每次的模型参数不同,这些参数来自于不同的训练集。因此,N次预测值的离散程度,反映在不同训练集下的模型表现的离散程度。即,方差衡量模型对训练数据集中微小波动的敏感度。如果一个模型本身复杂度很高,对于训练集很敏感,能够细微捕捉到数据中的微小差异,那么用不同训练集得到的模型参数,在同一个测试数据上,预测结果的方差很较大。so模型复杂——高variance

另一方面,bias衡量不同训练集下平均预测表现的好坏,即平均预测值和真实值的差距。如果模型太简单,根本不能预测准,那么bias自然会很大。so模型简单——高bias

(2)数学推导
\(MSE(x)=\sigma^2+(h^*(x)-h_{avg}(x))^2+var((h_S(x))\)
右侧第一项:unavoidable noise
右侧第二项:bias的平方
右侧第三型:variance
具体推导过程见P120 of https://cs229.stanford.edu/main_notes.pdf
*注意,这是回归问题的数学式子,分类问题相对not clear,暂无统一数学式子

3、总结bias、variance、model complexity、underfit、overfit、generalization error、training error之间的关系:
Find best bias-variance trade-off according to the model complexity, otherwise leading to overfitting/underfitting, thus high generalization error:
模型简单——高bias—欠拟合(高test error、高training error)。增加训练数据无济于事
模型复杂——高variance——过拟合(高test error、低training error)。增加训练数据往往可以降低variance
关系图如下:

——————————————————————————————————————
test error的double descent现象
见于:线性模型、深度神经网络

(1)model-wise double descent
模型复杂度(参数数量)↑,test error降-升-降
*在经典bias-variance trade-off中,test error随模型复杂度先降后升,但这里注意可能有第二个降,即继续增加模型参数,test error会降低

(2)sample-wise double descent
样本数量↑,test error降-升-降
*不是随着样本数量↑,test error一直降,中间会有个升降的过程

两种现象的test error极大值点均为n=d,样本数量=参数数量
这个点是我们不想要的,研究发现,通过正则化,可以降低此处的test error(上图的右图)

另外,为什么overparameterized model能够降低test error(泛化好)?可能解释为有隐式的正则化作用(implicit regularization)
—————————————————————————————————————
正则化Regularization
正则化的目的为防止过拟合,增强模型泛化能力
几个问题
1、什么是正则化
2、正则化为什么能防止过拟合

(1)直觉理解
regulate是规则化,对参数施加某种规则(impose structures on parameters)。
为什么正则化的对象是参数?正则化的目的为降低模型复杂度(让模型变简单,变“傻”),防止过拟合;而模型复杂度就是和参数相关的

可以提前想想,对参数施加何种规则有利于降低模型复杂度?稀疏sparse——非0参数少,大部分参数都是0(L1-norm)!这样模型不会因为有很多参数(模型很复杂)就去考虑所有的特征(包括noise和unrelated features)导致过拟合,而是利用少量的非0参数,只留下/只考虑真正有用的特征,这样得到一个具有代表性的模型,泛化能力强

(2)实施正则化
正则化其实就是在training loss function中加一项
\(J_{\lambda}(\theta)=J(\theta)+{\lambda}R(\theta)\)
\(J_{\lambda}(\theta)\): regularized loss
\(\lambda\): regularization parameter
\(R(\theta)\): regularizer
到时候训练目标是最小化regularized loss function

使得正则项尽可能小:可以理解为正则项是一个关于参数\(\theta\)的函数,是一种对于模型复杂度的measure,尽可能使正则项小,就是尽可能降低模型复杂度

正则化参数\(\lambda\):一般会取一个比较小的正数,这样,通过最小化regularized loss function,可以在对参数的规则限制的基础上,有效最小化original loss。\(\lambda\)增大,则对参数限制会增强。如果过大,可能会淹没掉original loss

常用的Regularizers
线性模型:L1-norm、L2-norm(常用于kernal methods)
深度学习:L2-norm=weight-decay、dropout、data augmentation、regulating the Lipschitzness
—————————————————————————————————————
知识补充:范数norm
\(L0-norm=\parallel{x}\parallel_{0}=\#\{i|x_{i}\ne{0}\}\)
向量中非0元素的个数
\(L1-norm=\parallel{x}\parallel_{1}=\sum_{i}|x_i|\)
绝对值之和。0范数和1范数均可实现稀疏,但1范数具有更好的优化求解特性,从而被广泛使用
\(L2-norm=\parallel{x}\parallel_{2}=\sqrt{sum_{i}{x_i}^2}\)
平方和开根号=模。让其很小,可以使每个元素都很小,接近0但不等于0;这与 1范数让更多的等于0 不同
—————————————————————————————————————

(3)详解逻辑链:加入正则项&使其尽可能小 —— 参数的稀疏解 —— 防止过拟合,增加泛化能力

如果跳过“参数的稀疏解”,可以直觉理解为:正则项是一个关于参数\(\theta\)的函数,是一种对于模型复杂度的measure,尽可能使正则项小,就是尽可能降低模型复杂度

但是,如果一步一步看,该如何理解?

参数的稀疏解 —— 防止过拟合,增加泛化能力”这一步,可以直觉理解为:稀疏sparse——比如非0参数少,大部分参数都是0(L1-norm)!这样模型不会因为有很多参数(模型很复杂)就去考虑所有的特征(包括noise和unrelated features)导致过拟合,而是利用少量的非0参数,只留下/只考虑真正有用的特征,这样得到一个具有代表性的模型,泛化能力强

加入正则项&使其尽可能小 —— 参数的稀疏解”这一步,如何理解?

先看一下,各个范数的形状(x-y为参数平面,z为norm值的大小)

接下来都以L1-norm为例,注意看这是一个八棱锥,角/刺很多!

假设为线性回归模型\(y=\theta_{1}x+\theta_2\),一共两个参数\(\theta_1\), \(\theta_2\)
如果给了我们一个训练样本(a,b),但是因为有两个参数,则可得无数组参数解,形成一条直线\(\theta_{2}=-a\theta_{1}+b\),这上面的每个点都是一组参数解
这时候,我们要(1)fit训练样本,即在那条直线上找参数解;(2)满足L1-norm的限制,即在上图八棱锥的形状内找参数解;(3)让L1-norm的值尽可能小(z小)
想实现上述目标,可以想象为,L1-norm的形状从原点开始长大,直到与此直线相“触碰”到(下图)。不难想象,有很大的概率,最先触碰到的点是八棱锥的刺!而这些刺,都会让两个参数中的其中一个为0,即为稀疏解!

有人会问,0<p<1不是刺更多,为什么不用这个?因为计算难度
—————————————————————————————————————
交叉验证cross validation(CV):hold-out CV、k-fold CV、leave-one-out CV
用于模型选择
1、hold-out CV
数据集中分70%训练、30%验证,对于每个待选模型,在训练集上训练,然后在验证集上验证,最后选择validation error最小的模型
缺点:浪费30%的数据
2、k-fold CV
数据集分为k份,对于每个待选模型,每次取k-1份训练,剩下1份验证,这样进行k次训练和验证,得到k次的平均validation error,最后选平均validation error最小的模型
优点:损失数据相对少,损失1/k的数据
缺点:计算量增加,每个模型都需要训练k次
3、leave-one-out CV
每次只留1个样本验证
适用于特别小的数据集(损失不起)

CV除了可以进行模型选择,还可以进行模型表现的评估。k折CV可以体现模型的稳定性

参考文献:
[1]https://cs229.stanford.edu/main_notes.pdf
[2]https://blog.mlreview.com/l1-norm-regularization-and-sparsity-explained-for-dummies-5b0e4be3938a
([2]这篇强推,正则化解释得太好了)
[3]https://www.cnblogs.com/nxf-rabbit75/p/10592583.html
[4]https://www.zhihu.com/tardis/bd/art/26884695
[5]https://zhuanlan.zhihu.com/p/25707761
[6]https://blog.csdn.net/kdongyi/article/details/83932945
[7]https://blog.csdn.net/weixin_42327752/article/details/121428875
[8]https://blog.csdn.net/tiaochewang219/article/details/107631221

标签:泛化,模型,CS229,test,正则,参数,error,Ch8,norm
From: https://www.cnblogs.com/xjl-ultrasound/p/18316368

相关文章

  • elasticsearch8.X tokenizer分词器优化
    一、使用指定中文分词器1.1一个查询小例子我们安装好es和kibana之后,就可以在kibana控制台开始我们的查询探索之旅。首先创建一个包含了两个字段“product"和"summary"的索引product_00:PUTproduct_00{"mappings":{"properties":{"product":{"typ......
  • 【压缩泛化】对大语言模型智能涌现的理解
    AGI=MaximizingCompression!1.智能定义   一年时间,大语言模型(LLM)席卷互联网行业,包括自己在内,日常工作生活已经快离不开大模型应用了。前段时间,看到有赞干掉了30多人的UI团队,后又干掉了HRBP团队,想当初自己还拿到过有赞的offer,对于公司果断、雷厉风行的风格还是有......
  • Elasticsearch8.9.0安装配置集群
    下载安装包从官网下载8.9.0安装包#elasticsearch-8.9.0-x86_64.rpmfilebeat-8.9.0-x86_64.rpmkibana-8.9.0-x86_64.rpm安装系统环境查看#cat/etc/redhat-releaseRockyLinuxrelease9.3(BlueOnyx)#uname-aLinuxRocky9Es010030895.14.0-362.18.1.el9_3......
  • CS229|Ch1|Linear regression
    Trainingset:\(\{(x^i,y^i);i=1,...,n\}\)\(x^i\in{X}\):input(features)\(y^i\in{Y}\):output(1)continuousvalues——Regression(2)discretevalues——ClassificationSupervisedlearning主要任务为找functionGivenatrainingset,learnafunction(hyp......
  • 基于典型相关性分析的多视图学习方法(基于半监督学习的 CCA)——泛化能力的多视图分析模
    泛化能力的多视图分析模型(GeneralizedMulti-viewAnalysis,GMA)是由Sharma等人提出的,旨在扩展传统无监督的典型相关分析(CanonicalCorrelationAnalysis,CCA)至有监督学习和更广泛的数据分析场景。GMA的核心在于能够处理多源异构数据,同时考虑数据的标签信息,以提高模型的泛......
  • 深度学习领域的名词解释:SOTA、端到端模型、泛化、RLHF、涌现 ..
    SOTA(State-of-the-Art)在深度学习领域,SOTA指的是“当前最高技术水平”或“最佳实践”。它用来形容在特定任务或领域中性能最优的模型或方法。随着研究进展,SOTA会不断被新的研究成果所超越。 非端到端模型非端到端模型指的是模型架构中包含多个分离的组件或步骤,每个......
  • .Net Core8下Elasticsearch7.x+Nest升级到Elasticsearch8.x+Elastic.Clients.Elastics
    背景Elasticsearch升级到8.11了,对应的客户端插件也跟着升级,以为会兼容Nest的语法,发现自己TooYoungTooSimple!没办法,只能去官网找,结果官网只有最基本的增、删、改、查,只能继续查资料,发现网上资料很少,避免大家少走弯路,这里做个简单的分享。分享1.ElasticsearchClientvaresS......
  • 文献总结:ON THE TRAINING AND GENERALIZATION OF DEEP OPERATOR NETWORKS(关于深度算
    ONTHETRAININGANDGENERALIZATIONOFDEEPOPERATORNETWORKS(关于深度算子网络的训练和泛化)remark:相较于之前的文章,这篇更新了两个重要定理的证明!算子网络DeepONet由两个网络构成,即trunk网络和branch网络,通常是同时训练这两个网络,这相当于是在高维空间中解决复杂的优......
  • AI产品安全标准:只要意图和价值观与人类对齐,能力可以无限强于人类。如何确保超人的超能
    “人工智能系统正在成为日常生活的一部分。关键是要确保这些机器符合人类的意图和价值观。”AI标准:能力可以无限强悍,只要意图和价值观与人类对齐,就值得信赖随着人工智能(AI)技术的飞速发展,AI系统在各个领域展示出超凡的能力。这些技术不仅影响了我们的日常生活,还对社会的......
  • 数据增强和泛化能力
    一.数据增强是什么?在深度学习中,数据增强是通过一定的方式改变输入数据,以生成更多的训练样本,从而提高模型的泛化能力和效果。数据增强可以减少模型对某些特征的过度依赖,从而避免过拟合。二.什么是泛化能力?模型泛化是指机器学习模型对新的、未见过的数据的适应能力。在机器学......