范数、稀疏与过拟合合集(1)范数的定义与常用范数介绍
范数、稀疏与过拟合合集(2)有监督模型下的过拟合与正则化加入后缓解过拟合的原理
范数、稀疏与过拟合合集(3)范数与稀疏化的原理、L0L1L2范数的比较以及数学分析
范数、稀疏与过拟合合集(4)L2范数对condition number较差情况的缓解
范数、稀疏与过拟合合集(5)Dropout原理,操作实现,为什么可以缓解过拟合,使用中的技巧
1、监督学习的基本模型
监督机器学习问题就是“minimize your error while regularizing your parameters”,也就是在正则数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而正则化参数是防止我们的模型过分拟合我们的训练数据。因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。
2、审视正则化的角度
2.1 角度一
我们需要保证模型“不过分复杂”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过正则来实现的。
2.2 角度二
正则项的使用还可以约束我们的模型的特性。这样就可以将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。因为这种特性其实就是不过于复杂的一个体现,属于先验知识的融入。要知道,有时候人的先验是非常重要的。前人的经验会让你少走很多弯路,这就是为什么我们平时学习最好找个大牛带带的原因。一句点拨可以为我们拨开眼前乌云,还我们一片晴空万里,醍醐灌顶。对机器学习或者深度学习也是一样,如果被我们人稍微点拨一下,它肯定能更快的学习相应的任务。只是由于人和机器的交流目前还没有那么直接的方法,目前这个媒介只能由正则项担当了。
2.3 角度三
正则化符合奥卡姆剃刀(Occam’s razor)原理。它的思想很平易近人:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。
2.4 角度四
从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。
2.5 角度五
正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。
2.6 角度六
等会我们通过数学模型(在第5部分叙述)和具体例子说明这个问题
3、什么是过拟合问题?使用正则项缓解过拟合举例说明
什么是过拟合问题,通过如下例子来进行说明
3.1 过拟合问题背景
假设我们现在买了一个机器人,想让它学会区分汉字,例如
预定的分类前5个字属于第一类,后5个字属于第二类。在这里,10个字是所有的训练“数据”。
3.2 正常训练表现
我们可以明显看到,前5个字都带提手旁:
把有提手旁的归为一类,没有提手旁的归为另外一类
3.3 过拟合问题表现
不幸的是,机器人其实很聪明,它能够把所有的字都“记住”,而不是单纯记住我们想让他记住的“提手旁”,看过这10个字以后,机器人学会了一种分类的方式:它把前5个字的一笔一划都准确地记在心里。所以,对于这10个字,机器人可以区分地非常好,准确率100%。
但是只要我们给任何一个不在10个字里面的字,如“揪”,它就会很自信地告诉你,非此即彼,机器人没见过这个字 (不在10个字里面),它认为这个字不属于第一类,将这个字归为第二类,这可能就错了。
机器人的失败在于它太聪明,而训练数据又太少,不允许它那么聪明,这就是过拟合问题。
3.4 正则项的加入缓解过拟合问题的表现
我们其实可以让机器人变笨一点,希望它不要记那么多东西。
还是给它前面叙述过的那10个字,但如果说现在加上了存储限制,机器人已经没办法记住前5个字的一笔一划了,它此时只能记住一些简单的模式,于是,第一类字都带有提手旁就被它成功地发现了。
实际上,这就是常用的 L 1 L_1 L1范数正则项的作用。
L 1 L_1 L1范数会让模型变傻一点,相比于记住事物本身,此时机器人更倾向于从数据中找到一些简单的模式。
机器人原来的解:[把, 打, 扒, 捕, 拉]
这是因为过度学习记住了所有的解
机器人变傻以后的解:[扌, 0, 0, 0, 0]
因为正则项的加入,为了迎合正则项的减小的目标,很多参数,被训练成了0
4、过拟合问题的数学模型
假设我们有一个待训练的机器学习模型,如下:
A
w
=
b
A\boldsymbol{w}=\boldsymbol{b}
Aw=b
其中,
A
A
A是一个训练数据构成的矩阵,
b
\boldsymbol b
b是一个带有标签的向量,这里的
ω
\boldsymbol \omega
ω是我们希望求解出来的参数解。
当训练样本很少 (training data is not enough)、向量$\boldsymbol \omega $长度很长(也即为对应于参数很多)时,这个模型的解(可以实现训练数据到给定标签映射关系的参数)就很多了。
如图,矩阵 A A A的行数远少于参数向量的 ω \boldsymbol \omega ω 长度。
我们希望的是找到一个比较合理的解,即参数向量 ω \boldsymbol \omega ω 能够发现有用的特征 (useful features)。
举例中使用了 L 1 L_1 L1范数作为正则项,使得参数向量 ω \boldsymbol \omega ω 会变得稀疏,非零元素就是有用的特征了。
5、正则项
5.1 正则项的目的
正则化就是通过对我们想要求解的参数进行约束,而使我们的模型更加的简单,使我们对训练集合的拟合更加的平滑,不会出现因为过于关注某些噪声或者不具有代表性的特征而产生的求解结果。
5.2 正则项的数学模型
数学公式:一般来说,监督学习可以看做最小化下面的目标函数:
w
∗
=
arg
min
w
∑
i
L
(
y
i
,
f
(
x
i
;
w
)
)
+
λ
Ω
(
w
)
w^{*}=\arg \min _{w} \sum_{i} L\left(y_{i}, f\left(x_{i} ; w\right)\right)+\lambda \Omega(w)
w∗=argwmini∑L(yi,f(xi;w))+λΩ(w)
5.2.1 第一项的解释说明
第一项 L ( y i , f ( x i ; w ) ) L\left(y_{i}, f\left(x_{i} ; w\right)\right) L(yi,f(xi;w))衡量我们的模型(分类或者回归)对第 i i i个样本的预测值 f ( x i ; w ) f(x_i;w) f(xi;w)和真实的标签 y i y_i yi之前的误差。因为我们的模型是要拟合我们的训练样本的嘛,所以我们要求这一项最小,也就是要求我们的模型尽量的拟合我们的训练数据。
5.2.2 第二项的解释说明
但正如上面说言,我们不仅要保证训练误差最小,我们更希望我们的模型测试误差小,所以我们需要加上第二项,也就是对参数 w w w的正则化函数 Ω ( w ) \Omega(w) Ω(w)去约束我们的模型,使得模型尽量的简单。比如用 L 1 L_1 L1范数表示的正则项,为了使得 L 1 L_1 L1范数的数值尽可能变小,就能够使得得到的解变成一个稀疏解 (即解的很多元素为0)。
5.2.3 该数学模型的应用
机器学习,深度学习的大部分带参模型都和这个不但形似,而且神似。是的,其实大部分无非就是变换这两项而已。
对于第一项Loss函数
如果是Square loss,那就是最小二乘了;
如果是Hinge Loss,那就是著名的SVM了;
如果是exp-Loss,那就是牛逼的 Boosting了;
如果是log-Loss,那就是Logistic Regression了;
不同的loss函数,具有不同的拟合特性,这个也得就具体问题具体分析的。但这里,我们先不究loss函数的问题,我们把目光转向“正则项 Ω ( w ) \Omega(w) Ω(w)”。
对于第二项正则项的函数 Ω ( w ) \Omega(w) Ω(w)
一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。比如,正则化项可以是模型参数向量的范数。然而,不同的选择对参数 w w w的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。
5.3 举例说明正则项在过拟合中的使用(为什么稀疏可以缓解过拟合)
例子一:
在这个拟合任务中,从图一到图三参数变多,拟合曲线变得逐渐不平滑
图一由于参数较少导致拟合误差较大,可能是正则项约束情况太强。
图三由于参数较多高次项的参数有了权重,且不是非常小到可以忽略不计。高次项的系数,是造成曲线陡增(减)的主要因子,因为这种模型参数下非常强的陡增(减)能力,有能力去关注,记录并拟合很多不必要的细节使得模型逐渐趋向于不稳定。如果能够将系数调整的比较均匀或者减小高次项的权重,那么就能够避免这种过拟合现象的发生。(虽然这种情况是不希望发生的,但是需要强调的是在训练集上他的表现效果是很好的,相较于图一他的训练集上的表现效果是更加优秀的)。
图二即为没有过拟合的较好理想训练结果,既能较好地拟合模型所想要达到的标签映射效果,又不会在测试集上表现不佳。
例子二:
还有一个比较生动的例子:
Suppose you are the king of a kingdom that has a large population and an OK overall GDP, but the per capita is very low. Each one of your citizens is lazy and unproductive and you are mad. Therefore you command “be productive, strong and hard working, or you die!” And you enforce the same GDP as before. As a result, many people died due to your harshness, those who survived your tyranny became really capable and productive.
假设你是一个王国的国王,这个王国人口众多,总体GDP还不错,但人均收入很低。你们每一个公民都是懒惰的,没有效率。而你很疯狂想要追求更好的结果。
你强制要求GDP和以前一样。(这其实就相当于数学模型中的第一项,你追求性能很好,要与原来相同)
同时你命令“要人们多生产,要强壮,要努力工作,否则你会死的!“(这其实就相当于数学模型中的第二项,你追求吗,每一个参数也就是小人,都要有着足够强的表现,足够优秀的特征提取能力,归纳为对模型足够的贡献)
结果,许多人(也就是一些不重要的参数,他们不能对整个模型有着很大的提升,是非必要的,他们的存在虽然可以提升训练集的表现效果,是因为需要表现一些非普世化非重要化的类似噪声的特征,在测试集上可能是有害的),死于你的严厉(被正则项约束,为了达到减小正则化的目的,模型将他们去除归零),那些从你的暴政中幸存下来的人变得非常能干和富有成效(这些参数才是真正可以对表征综合国力也就是综合模型的能力起到决定性作用的,每一个都很重要,很影响模型的表现)。
如果把总人口总量视作向量 ω \boldsymbol{\omega} ω的长度,那么 “优胜劣汰”其实相当于增加了一个正则项 。在稀疏的结果中,我们能够保证向量的 ω \boldsymbol{\omega} ω每个元素都是有用的!
到这里,我们知道了为什么稀疏可以避免过拟合。
LAST、参考文献
各种范数的解释_u011484045的专栏-CSDN博客
如何通俗易懂地解释「范数」? - 知乎
范数_weixin_34233618的博客-CSDN博客
范数、L1范数和L2范数的基本概念_lioncv的专栏-CSDN博客_l1范数的定义
过拟合以及正则化(L0,L1,L2范数)_yeal-CSDN博客
谱范数的理解与论述_MathThinker的博客-CSDN博客
向量范数与矩阵范数 - 知乎
L1范数和L2范数的区别 - 程序员大本营
L1范数与L2范数的区别 - 知乎
范数、L1范数和L2范数的基本概念_lioncv的专栏-CSDN博客_l1范数的定义
机器学习中的范数规则化之(一)L0、L1与L2范数_bitcarmanlee的博客-CSDN博客
L1范数与L2范数的区别_不二的博客-CSDN博客_l2范数