概述
本博客基于周志华老师《机器学习》、Ian Goodfellow《Deep Learning》以及网上部分资料,为自己的学习笔记、总结以及备忘录,由于本人刚入门,欢迎大家指出错误。如有侵权,望告知,谢谢。
为什么要正则化?
正则化有哪些方式?
1.为什么要正则化?
一般情况,我们通常将正则化定义为“对学习算法的修改——旨在减少泛化误差而不是训练误差”。在足够多的训练次数下,以及足够复杂的表达形式下,训练误差可以无限小,但是这并不意味着泛化误差的减小。通常情况下,这反而会导致泛化误差的增大。一个常见的例子是:真实数据的分布符合二次函数,欠拟合往往将模型拟合成一次函数,而过拟合往往将模型拟合成高次函数。奥卡姆剃须原则指出:在尽可能地符合数据原始分布的基础上,更加平滑、简单的模型往往符合数据的真实特征。因此,采用某种约束显得非常必要,这就引出了我们说的正则化。
其次,我们求解线性回归以及PCA时,都用到了对于矩阵求逆,如果是奇异的,则无逆矩阵,会导致出错。当数据分布在一些方向上的确没有差异,以及数据量很少,特征数很多导致在某些方向上的确没有观察到方差时,这个矩阵就是奇异的。在这种情况下,正则化的许多形式对应求逆。这个正则化就保证了是可逆的。
2.正则化有哪些方式?
对于一种算法而言,我们通常完成顺序是建立模型、指出损失函数、利用某种方式将损失函数J最小化,最后考虑优化问题。许多正则化方法通过对目标函数J添加一个参数范数惩罚,限制模型(如神经网络、线性回归或逻辑回归)的学习能力。我们将正则化之后的目标函数记为=+,其中,显然,当时,正则化项无效。当越大,对应正则化惩罚越大。同时,选择不同的参数范数惩罚也会有不同的效果。一般情况下,有两种的选择,一种是参数正则化,一种是参数正则化。
我们首先探讨参数:
参数表达的是欧氏距离,我们令=
所以原损失函数J更新为=+
对其求梯度为
所以对权重进行更新为即可以看出每一步执行前先进行了权重的衰减,为了研究对整个训练过程的影响,我们进一步简化分析,令为未正则化的目标函数取得最小训练误差时的权重向量,即=,并在的领域对目标函数做二次近似。如果目标函数确实是二次的(如以均方误差拟合线性回归模型的情况),则该近似是完美的。
近似(在极值点附近进行二阶Talor展开,由于最优,即梯度消失为0,所以没有一次项)。
当取得最小时,其梯度为0。
为了研究权重衰减带来的影响, 我们在上式中添加了权重衰减的梯度,现在我们讨论最小化正则化之后的误差函数。由此可以看出当趋近于0时,正则化的解会趋近于。同时我们研究当增加时,对解的影响。由于Hessian矩阵是实对称矩阵,所以我们可以将其分解为一个对角矩阵和一组特征向量的标准正交基Q,并且有。将其应用于上式,可以得到,
由此可以看出我们加上正则化之后,对权重向量的衰减效果是沿着Hessian矩阵的特征向量所定义的轴进行缩放的。具体来说,我们会根据因子缩放与Hessian矩阵第i个特征向量对齐的分量。所以沿着Hessian特征值较大的方向,正则化影响较小,而对于特征值远小于的部分,衰减将趋近于0。(对于Hessian特征值的理解:当一阶梯度固定的情况下,梯度下降步长与Hessian矩阵特征值有直接联系,特征值越大,步长越大。如果特征值相差不多,收敛很快,如果特征值相差较大,收敛很慢。)所以这种方式,促使了使得权重衰减慢的成分越来越小,即在这种不重要方向对应的分量会在训练过程中因正则化而衰减掉。但是,一般情况下,这种衰减只会接近于0,而不会等于0。
其次我们讨论正则化:
同样我们对有一个定义。我们通常定义即各个参数的绝对值之和。接着我们将讨论正则化对简单线性回归模型的影响,我们期望找出的是和正则化之间的差异。与权重衰减类似,我们也可以通过缩放惩罚项的正超参数来控制权重衰减的强度。
因此,正则化的目标函数
对应的梯度为,这里我们可以看出,正则化与上述大不一样。具体来说,我们可以看到正则化对梯度的影响不再是线性地缩放每个权重,而是添加了一项常数。将正则化目标函数的二次近似分解成关于参数的求和:
可以最小化这个近似代价函数的解析解为:,显然,对于不同的情况,加入正则化后,会将某些权重衰减为0。相比正则化,会产生更加稀疏的解。此处稀疏性指的是最优值中一些参数为0。
对于稀疏性:
对于数据集D而言,很多特征与当前学习任务无关,所以我们期望通过特征选择去除这些特征,由此,训练可以在较小的矩阵上进行,学习任务的难度也可能有搜降低,设计的计算和存储开销会减少,学得的模型可解释性也会提高。
对于约束的范数惩罚:
上面我们考虑的是无约束问题,如果我们构造约束,即可以构造广义Lagrange函数来最小化带约束问题的函数。我们希望采用显式的限制,而不是惩罚,原因是:如果我们知道什么样的是合适的,而不想花时间寻找对应于此处的值,这会非常有用。另一个原因是,惩罚可能会导致目标函数非凸而使算法陷入局部极小。当训练为神经网络时,通常表现为训练带有几个“死亡单元”的神经网络。这些单元不会对网络学到的函数有太大影响,因为进入或离开他们的权重都非常小。最后,这种显式约束还对优化过程增加了一定的稳定性,当学习率较高时,很可能进入正反馈,即大的权重诱导大梯度,然后使得权重获得较大更新,直到远离原点而发生溢出。重投影的显式约束可以防止这种反馈引起的权重无限制地持续增加。
数据集增强、噪声鲁棒性、提前终止:
以上基于的是对损失函数的处理,来减小泛化误差。究其原因,我们需要采取正则化在于数据样本不够多,特征复杂,所以对于数据的真实面貌认识不足。因此,从另一个角度来讲,我们可以通过数据集的修改来让模型拥有更多的数据进行训练,减少机器学习技术的泛化误差。数据集的修改有两个方向:一是数据集增强。数据集增强对于一个分类问题来说是特别有效地方法:对象识别。图像是高维的并包括各种巨大的变化因素,其中有许多可以轻易地模拟。对于图像而言,可以通过旋转或者缩放来进行数据集增强。二是增加噪声。将噪声作用于输入,作为数据集增强策略。对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚。
提前终止是指当我们更新的参数在测试集上,在一定的循环次数中,没有将泛化误差进行改善时,终止训练,返回参数。在二次误差的简单线性模型和简单的梯度下降情况下,我们可以展示提前终止相当于正则化。
Dropout与Bagging:
Dropout提供了正则化一大类模型的方法,计算方便且功能强大。在第一种近似下,Dropout可以被认为是集成大量深层神经网络的使用Bagging方法。Bagging设计训练多个模型,并在每个测试样本上评估多个模型。当每个模型都是一个很大的神经网络时,这似乎是不切实际的。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。
最后
以上就是心灵美香水为你收集整理的正则化的全部内容,希望文章能够帮你解决正则化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复