首页 > 其他分享 >正则化和正则化的思想

正则化和正则化的思想

时间:2022-11-10 10:32:17浏览次数:60  
标签:思想 特征 神经网络 正则 L1 化项 范数


首先了解一下正则性(regularity),正则性衡量了函数光滑的程度,正则性越高,函数越光滑。(光滑衡量了函数的可导性,如果一个函数是光滑函数,则该函数无穷可导,即任意n阶可导)。

       正则化是为了解决过拟合问题。在Andrew Ng的机器学习视频中有提到(详见javascript:void(0))。解决过拟合的两种方法:

     方法一:尽量减少选取变量的数量。人工检查每一个变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。显然这种做法需要对问题足够了解,需要专业经验或先验知识。因此,决定哪些变量应该留下不是一件容易的事情。此外,当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。

最好的做法是采取某种约束可以自动选择重要的特征变量,自动舍弃不需要的特征变量。

    方法二:正则化。采用正则化方法会自动削弱不重要的特征变量,自动从许多的特征变量中”提取“重要的特征变量,减小特征变量的数量级。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

 

正则化的作用:

(1)防止过拟合;

(2)正则化项的引入其实是利用了先验知识,体现了人对问题的解的认知程度或者对解的估计;例如正则化最小二乘问题如下:

正则化和正则化的思想_神经网络

(3)有助于处理 条件数(condition number)不好的情况下矩阵求逆很困难的问题。

首先看一下条件数的概念:

 

     如果方阵A是非奇异(A的行列式不等于0,正定矩阵一定是非奇异的)的,那么A的condition number定义为:

                  

正则化和正则化的思想_神经网络_02

可以看出,如果A是奇异的,那么A的条件数为无穷大。条件数越小,所获得的解越可靠,模型鲁棒性越好,抗干扰能力越强。例如对于模型AX=b,A的条件数 越小(A的行列式远不接近于0),那么A,b的稍微的变化对解X的影响越小,对X的求解对样本集(A、b)中引入的干扰的抵抗能力越强,即所求解X越可靠。

  引入正则化项之后,会降低条件数,提高抗干扰能力,提高泛化能力。如下图所示:

                     

正则化和正则化的思想_神经网络_03

在样本数小于参数个数的情况下,样本矩阵很可能是不可逆的(条件数很大),而引入正则化项将会解决这个问题。

事实上,即使使用迭代优化算法,condition number 太大也将会拖慢迭代的收敛速度。

 

(4)正则化项的引入平衡了偏差(bias)与方差(variance)、拟合能力与泛化能力、经验风险(平均损失函数)与结构风险(损失函数+正则化项),下图为训练误差和测试误差与模型复杂度之间的关系

正则化和正则化的思想_神经网络_04正则化和正则化的思想_神经网络_05                 

正则化和正则化的思想_javascript_06

(关于偏差和方差参考误差理论javascript:void(0))

(5)正则化产生了稀疏性(Sparsity),减少了特征向量个数,降低了模型的复杂度。正则化符合奥卡姆剃刀原理,奥卡姆剃刀原理应用于模型选择时采用以下想法:在所有可能选择的模型中,能够很好的解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率,可以假设复杂的模型有较大的先验概率,简单的模型有较小的先验概率。(参考javascript:void(0))

稀疏性(Sparsity)的作用:

 

a、特征选择(FeatureSelection):

       稀疏性能实现特征的自动选择。在我们事先假定的特征(或自变量)中,有很多自变量或特征对输出的影响较小,可以看作是不重要的特征或自变量。而正则化项会自动对自变量或特征的系数参数进行惩罚,令某些特征或自变量的参数(权重系数)为0或接近于0,自动选择主要自变量或特征(类此于PCA)。

 b、可解释性(Interpretability):

      稀疏使模型更容易解释。

例如一回归问题,假设回归模型为:y=w1*x1+w2*x2+…+w1000*x1000+b

通过学习,如果最后学习到的w*就只有很少的非零元素,大部分W*为0或接近于0,例如只有5个非零的wi,那可以认为y之于这5个(因素)xi有关系,这更有利于人们对问题的认识和分析,抓住影响问题的主要方面(因素)更符合人们的认知习惯。

     实际上,这些参数(W*)的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。(联系文章开头第一段)

 c、卷积神经网络中的稀疏性(Sparsity):

      神经网络中的稀疏性可以被简单地解释如下:如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。

其实,我们上面提到的回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b可以看作是单神经元的神经网络,只不过没有激活函数。因此,我们可以将回归中的正则化技术用到神经网络的训练当中,而且正则化项作用与回归中的正则化项作用相同。

     自编码( Autoencoders)神经网络是一种无监督学习算法,如下图所示,它使用了反向传播算法,并让目标值等于输入值,这看起来是不可能实现的的,因为根据信息论可知,信息是逐层丢失的,对信息的处理不会增加信息,大部分处理会丢失信息。因此,我们只能让输出尽可能的去接近输入。这样做的目的是什么呢?事实上,这给了我们用神经网络提取输入数据的特征的一种思路,我们更关注的是隐含层(layerL2)的输出,因为layerL2的输出是对输入数据的特征表示,即layerL2产生了特征。卷积神经网络是深度学习(deep learning)算法,深度的含义不仅是指神经网络的层数多,而且是指卷积神经网络能自动从输入数据中学习到更为抽象的特征,并将学习到的特征用于分类器的输入进行分类。这部分涉及很多内容,在这里就不延伸了,下面介绍与本文主题相关的内容。

 

    下面我们以自编码神经网络为例,看一下正则化在神经网络中的应用。详细请参考下面UFLDL网站:

(http://ufldl.stanford.edu/wiki/index.php/%E8%87%AA%E7%BC%96%E7%A0%81%E7%AE%97%E6%B3%95%E4%B8%8E%E7%A8%80%E7%96%8F%E6%80%A7)

 

                        

正则化和正则化的思想_javascript_07

     上图为自编码神经网络,编码所得的“码”即为特征,“编码”的含义就是提取输入数据的特征,其实提取特征的过程有点类似于对输入数据进行编码,估计这就是自编码神经网络的由来。

自编码( Autoencoders)神经网络的总体代价函数为:

                             

正则化和正则化的思想_javascript_08

    等号右边第二项为正则化项,它是基于相对熵的惩罚项,用于限制神经元的激活程度,以此实现神经元的稀疏性。

      

正则化和正则化的思想_javascript_09

 

对于惩罚项:

正则化和正则化的思想_神经网络_10

正则化和正则化的思想_javascript_11

       通过将正则化项引入自动编码器神经网络的代价函数中,通过训练,便可得到输入数据的稀疏性特征表示。

       那么问题来了,为什么我们要得到稀疏性的特征表示呢?当然是为了防止过拟合,提高泛化能力,更好地解释模型....其实,从生物学的角度,人脑中的大量神经元,当受到外界刺激(图像或者声音)时,只有少量的神经元被激活,大部分神经元处于抑制状态。

 

      正则化在监督学习和无监督学习算法的模型训练中被广泛使用,下面总结一下常见的几种正则化项及其作用。

许多模型的代价函数都可以用下式表示,等号右边第一项是损失函数,也有很多种:如均方误差损失函数、Hinge Loss、exp-Loss、log-Loss等;等号右边第二项是正则化项,正则化项可以是模型参数向量的范数。不同的正则化项对参数w的约束不同,取得的效果也不同,常见的正则化项:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。

            

正则化和正则化的思想_正则化_12

     范数的定义如下:

                     

正则化和正则化的思想_正则化_13

    当p=1时,为L1范数(taxicab norm);p=2时为欧拉范数

(1)L0范数

    L0范数是指向量中非零元素的个数。L0正则化的值是模型中非零参数的个数,L0正则化可以实现模型参数的的稀疏化。L0正则化是个NP难问题,很难求解,因此一般不用L0范数。

                             

正则化和正则化的思想_javascript_14

(2)L1范数

      下式等号右边第二项即为L1正则化项

         

正则化和正则化的思想_神经网络_15

        L1范数是指向量中各个元素绝对值之和,又叫“稀疏规则算子”(Lasso regularization)。

(3)L2范数

     下式等号右边第二项即为L2正则化项

正则化和正则化的思想_javascript_16

在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression)。

 

L2范数可以防止过拟合,提升模型的泛化能力;从优化或者数值计算的角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。

L1和L2范数下降速度比较:

正则化和正则化的思想_神经网络_17

对于L1和L2规则化的代价函数来说,我们可以写成以下形式:

正则化和正则化的思想_正则化_18

L1和L2范数约束空间:

正则化和正则化的思想_神经网络_19

L1范数在二维平面是一个矩形,L2范数在二维空间是一个圆;

 

        可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的等高线大部分时候第一次都会与L1-ball在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。

       相比之下,L2-ball 就没有这样的性质,因为第一次相交的地方不太可能出现在任意坐标轴上,因此不太可能产生稀疏性。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。

       因此,L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征的权重系数都会接近于0。

        关于正则化项中参数lamuda的选取:一般采取交叉验证法或启发式方法等。

(详细参考​​javascript:void(0)​​)

 


​http://ufldl.stanford.edu/wiki/index.php/%E8%87%AA%E7%BC%96%E7%A0%81%E7%AE%97%E6%B3%95%E4%B8%8E%E7%A8%80%E7%96%8F%E6%80%A7​

《Convex Optimization》

标签:思想,特征,神经网络,正则,L1,化项,范数
From: https://blog.51cto.com/u_13206712/5839974

相关文章

  • 使用正则表达式获取每个章节的url时,总是返回空列表,啥情况?
    大家好,我是皮皮。一、前言国庆期间在Python白银交流群【冰冰】问了一个Python网络爬虫的问题,提问截图如下:代码如下所示:二、实现过程这里【dcpeng】和【瑜亮老师】给......
  • 764. 最大加号标志 ----- 动态规划、C++ STL:无序set容器unordered_set、分类思想
    在一个nxn的矩阵 grid 中,除了在数组 mines 中给出的元素为 0,其他每个元素都为 1。mines[i]=[xi,yi]表示 grid[xi][yi]==0返回 grid中包含 1 的最大......
  • 正则表达式(上)
    正则表达式字符类[abc]a、b或c(简单类)[^abc]任何字符,除了a、b或c(否定)[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)[a-d[m-p]]a到d或m到p:[a-dm-p]......
  • 正则表达式(下)
    正则表达式作用二:在一段文本中查找满足要求的内容本地爬虫和网络爬虫这一段我仅仅使用案列进行演示在此之前我们需要用到两个类:pattern,他是属于java.util.regex.Patte......
  • MySQL 正则表达式
    一.介绍正则表达式用来描述或者匹配符合规则的字符串。它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配;正则表达式需要使用REGEXP命令,匹配上返回"......
  • re模块和正则表达式
    一、re模块和正则表达式先来看一个例子:​​https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/​​这是京东的注册页面,打开页面我们就看到这些要求输入个人信......
  • Linux学习笔记(8)——正则表达式与文件格式化处理
    正则表达式与文件格式化处理正则表达式与文件格式化处理一、什么是正则表达式?二、基础正则表达式2.1语系对正则表达式的影响2.2grep的一些高级选项2.3基础正则......
  • 10. 正则表达式匹配
    题目描述给了一个字符串s和字符规律p其中p可能含有"."和"","."可以匹配任何单个字符,""需要和前面字符结合,表示匹配0-任意个前面字符问给定的p能不能匹配sf1-序列dp基......
  • 10.正则表达式匹配
    思路动态规划状态转移:第一个就不解释了当p[j]=='*'时,*可以表示任意个p[j-1]字符,如果表示0个p[j-1],那就是F(i,j)=F(i,j-2),即s[1~i]和p[1~j-2]匹配......
  • Linux驱动开发-03-驱动程序的设计思想
    1.说明简单介绍一下linux驱动设计的思想发展2.从一个设备说起在夸夸其谈之前,先看下I2C设备的结构。图摘自韦东山大大的《嵌入式linux应用开发完全手册》80C51里有一个I2C......