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

正则化是为了解决过拟合问题。在Andrew Ng的机器学习视频中有提到(详见http://www.cnblogs.com/jianxinzhou/p/4083921.html)。解决过拟合的两种方法:

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

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

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

正则化的作用:

(1)防止过拟合;

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

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

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

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

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

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

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

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

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

                 

(关于偏差和方差参考误差理论http://blog.csdn.net/linkin1005/article/details/42563229)

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

稀疏性(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)

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

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

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

对于惩罚项:

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

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

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

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

范数的定义如下:

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

(1)L0范数

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

(2)L1范数

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

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

(3)L2范数

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

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

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

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

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

L1和L2范数约束空间:

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

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

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

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

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

(详细参考http://blog.csdn.net/zouxy09/article/details/24972869)

参考资料:

http://blog.csdn.net/zouxy09/article/details/24971995

http://blog.csdn.net/zouxy09/article/details/24972869

http://www.cnblogs.com/jianxinzhou/p/4083921.html

http://blog.csdn.net/linkin1005/article/details/42563229

http://www.cnblogs.com/Rosanna/p/3946596.html

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》

正则化和正则化的思想相关推荐

  1. 正则化--L1正则化(稀疏性正则化)

    稀疏矢量通常包含许多维度.创建特征组合会导致包含更多维度.由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM. 在高维度稀疏矢量中,最好尽可能使权重正好降至 0.正好为 0 的 ...

  2. L1正则化 L2正则化的Python 实现

    上一篇文档 https://blog.csdn.net/xingzhe2001/article/details/86316712 介绍了L1 L2正则化 本文介绍L1, L2 正则化的实现 L1正则化 ...

  3. 比较全面的L1和L2正则化的解释

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习算法那些事 前言 前段时间写了一篇文章<深入 ...

  4. 深度学习基础(基本概念、优化算法、初始化、正则化等)

    2020-04-25 16:29:09 引言 深度学习目前已成为发展最快.最令人兴奋的机器学习领域之一,许多卓有建树的论文已经发表,而且已有很多高质量的开源深度学习框架可供使用.然而,论文通常非常简明 ...

  5. 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数

    目录 1. Lasso回归 1.1 概念 1.2 正则化 1.3 Lasso回归模型 1.4 为什么Lasso Regression可以做降维? 1.5 参数求解 (1)坐标轴下降法 (2)最小角回归 ...

  6. L1,L2正则化分析

    1. 优化角度分析 1).L2正则化的优化角度分析 在限定的区域,找到使 最小的值. 图形表示为: 上图所示,红色实线是正则项区域的边界,蓝色实线是 的等高线,越靠里的等高圆, 越小,梯度的反方向是 ...

  7. 使用sklearn进行数据预处理 —— 归一化/标准化/正则化

    本文主要是对照scikit-learn的preprocessing章节结合代码简单的回顾下预处理技术的几种方法,主要包括标准化.数据最大最小缩放处理.正则化.特征二值化和数据缺失值处理.内容比较简单, ...

  8. 02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面(作业:初始化+正则化+梯度检验)

    文章目录 作业1:初始化 1. 神经网络模型 2. 使用 0 初始化 3. 随机初始化 4. He 初始化 作业2:正则化 1. 无正则化模型 2. L2 正则化 3. DropOut 正则化 3.1 ...

  9. 吴恩达机器学习 5.正则化

    1.理解过拟合问题 在训练集的基础上用模型去拟合,得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0,即最小化J(θ)J(\theta)J(θ)几乎为0),但是可能会不能推广到新的数据. 举例 ...

  10. 深度神经网络之Keras(三)——正则化、超参数调优和学习方向

    深度神经网络之Keras(三)--正则化.超参数调优和学习方向 本文将继续探索Keras框架下的深度神经网络知识,主要介绍了利用Keras构建的深度神经网络正则化及超参数调优问题. 目录 深度神经网络 ...

最新文章

  1. 点云数据向图像数据转换(附源码)
  2. 【C++】 二叉树的基本知识及其遍历
  3. Git远程和分支管理
  4. calendar类计算时间距离_日期时间--JAVA成长之路
  5. 前端工程师应该掌握哪些技能才方便找工作?
  6. 今天的绿得像碧玉的 飞鸽
  7. python编写自动化脚本工具_python自动化工具之pywinauto实例详解
  8. 为什么索引不支持模糊查询_百度站长平台查询的关键词排名,为什么与实际不符合?...
  9. python写入txt,读取txt,拷贝txt文件
  10. 移动端抓包工具spy-debugger使用
  11. rf 433/868MHZ sub-1g 无线通信知识系列(5):SX1208数据传输时间 FSK 波特率等相关计算
  12. 在BuildConfig中添加自定义字段
  13. Unity Content Size Fitter 刷新不及时
  14. TensorFlow.js简介
  15. 量化交易16-先认识K线形态:向上/下跳空并列阳线、锤头、家鸽、梯底、相同低价、铺垫、十字晨星、晨星、刺透形态、插入、奇特三河床、上升/下降跳空三法
  16. 如何成就一个App 游戏界的百万富翁
  17. 【精选】JAVA入门算法题(二)
  18. VMwarePlayer配置Linux
  19. 惠普(HP)打印机驱动安装+答题卡尺寸设置: LaserJet MFP M436n(史上最详细操作演示)
  20. 提升网站转化率不得不遵循的3条黄金铁律

热门文章

  1. illustrator插件开发向导--基础入门(二)--插件定义--PiPL资源--插件管理--插件入口和消息--加载和卸载--启动和关闭
  2. linux aria2 离线,使用aria2做离线下载
  3. 开题报告中的研究现状怎么写?
  4. pytorch-tenor-细节
  5. UNICODE,GBK,UTF-8区别
  6. 操作手册与用户手册的区别
  7. 计算机组成原理常见英文缩写
  8. Vmware Vsphere HA
  9. 隔离出来的“陋室铭”
  10. 2021-05-13