本文参考:
1、https://www.jianshu.com/p/4bad38fe07e6
2、https://zhuanlan.zhihu.com/p/26884695
3、深度学习入门:基于Python的理论与实现 斋藤康毅(作者)
理解范数 -
:在很多机器学习相关书籍中我们经常看到各种各样的距离及范数,如
、其中,
,分别表示向量和矩阵。也有其他的欧氏距离、均方差之类,例如,向量
的欧式范数 (Euclidean norm)为用于表示向量的大小,这个也被叫
-范数。为方便统一,一般将任意向量
的 -范数定义为主要有三类:
、、 范数的定义:根据
-范数的定义,当p=0时,我们就有了 -范数表示向量x中非0元素的个数(0的0次方是0,非零的0次方是1,所以所有的零元素全都没了,只剩下非零元素变成的1了)
大佬是这么说的:
在诸多机器学习模型中,比如压缩感知 (compressive sensing),我们很多时候希望最小化向量的
-范数。一个标准的 -范数优化问题往往可以写成如下形式:然而,由于
-范数仅仅表示向量中非0元素的个数,因此,这个优化模型在数学上被认为是一个NP-hard问题,即直接求解它很复杂、也不可能找到解。需要注意的是,正是由于该类优化问题难以求解,因此,压缩感知模型是将
-范数最小化问题转换成 -范数最小化问题。
我就看不懂了,后面再说吧哈哈哈哈
(我不知道为啥说这个优化起来很难,不管了,只要明白这玩意儿啥意思就行)
-范数的定义:根据
-范数的定义,当p=1时任意向量x的 -范数为等于向量中所有元素绝对值之和。
相应的,一个
-范数优化问题这个问题比
-范数优化问题更容易求解,借助现有凸优化算法(线性规划或是非线性规划),就能够找到我们想要的问题的解。 -范数的定义:-范数表示向量的元素平方和,即
范数优化模型如下:
我们面临的问题:
我们现在这样一组数据
我们可以建立线性模型
也可以建立多项式的非线性模型
直观来看第一种线性模型会好一些。而后面的的非线性模型除了学习了有效信息外,还学习了数据中包含的噪声。从另一个角度说,也可以认为是模型的学习能力太强导致的(或者可供学习的样本太少)
总结一下,即可能存在过拟合现象的两个条件:
1、训练数据过少。
2、模型学习能力太强。
如何解决问题:
让模型变得稀疏
当某件事有100000个影响因素时,我们可能无从下手,但如果我们忽略掉一部分不那么重要的因素专注于主要因素(解决问题时要学会灵活利用两点论和重点论——马克思 :-P ),比如只留下十个因素,分析问题会容易许多。
理论上都能使模型变得稀疏,但是大佬不是说不行嘛,是个NP-hard问题,就只分析就行。
存在俩向量:
其中
很明显不是一个稀疏向量,但是
-范数却远小于稀疏的向量的 -范数所以仅仅看
-范数是不够的,我们很难比较向量的系数程度。我们结合损失函数试试?对于方程Ax=b来说,在平面直角坐标系上假设一次函数y=ax+b经过点(10,5),则
由于b=5-10a,所以参数a,b的解有无数解(如下图蓝线)
如何通过
-范数找到一个稀疏解呢?我们不妨先设向量
-范数是一个常数,即则该函数的图像如下图
该图像是一个正方形,只有与坐标轴相交的点是稀疏的
把红色的正方形与蓝色的线放在一个图像上就能清晰的发现,他们相交的在坐标轴上的点恰好满足稀疏性的要求,也能使得
-范数取得最小值那么严谨一点使用数学公式来表示一下:
设损失函数为:
其中
表示没有正则化时的损失函数,为超参数。对正则化后的损失函数求w的偏导:sgn(w)表示w的符号。对w进行更新:
可以看出,L1正则化是通过加上或减去一个常量
,让w靠近0
让模型变得简单:
L2正则化通过让模型变得简单来解决这一问题,使模型变得不会受到单个证据的影响,不会因为某个输入的微小变动而产生较大的改变。这种方法也被称为权重衰减,在回归模型中也被称作岭回归。
设损失函数为
其中
表示没有正则化是的损失函数,是控制正则化强度的超参数,设置的越大对大的权重施加的惩罚就越重。此外开头的是用于将的求导结果变成的调整用常量。对上式求w的偏导:
对w更新权重
我们知道,没有正则化的参数更新为
,而在正则化之后使用了一个乘性因子去调整权重,因此权重会不断衰减没并且在权重较大时衰减的快,权重较小时衰减的慢。而为了使最小,需要让和正则化项的和能够最小,若w变大能够让减小,也会变大,后者就会抑制整体的变小,从而让w不会上升的过大,此时就像是一个调整模型拟合精度与泛化能力的权重因子。现在我们知道了L2正则化能够限制参数大小,那么为什么参数大小被限制了这个模型就是一个简单的模型可以防止过拟合了呢?回到我们最初的多项式回归方程
,当参数很小时,即x很小时,高次方的项影响就会变得十分微弱,这就使得模型变得对某一个输入的变动不会太敏感,从而近似学习到一条简单的曲线,类似于最开始的线性模型。也就是说,即使你预设的回归模型是一个9次的多项式回归,通过正则化学习高次项前的 系数会变得很小最后的曲线类似一条直线,这就是让模型变成了一个简单的模型。来源:CSDN
作者:ts719796895
链接:https://blog.csdn.net/ts719796895/article/details/104064154