正则化详解
机器学习模型需要拥有很好地泛化能力来适应训练集中没有出现过的新样本。在机器学习应用时,我们经常会遇到过度拟合(over-fitting)的问题,可能会导致训练出来的模型效果很差。接下来,我们将谈论的正则化(regularization)技术,它可以改善或者减少过度拟合问题,以使学习算法更好实现。 机器学习中一个重要的话题便是模型的泛化能力,泛化能力强的模型才是好模型,对于训练好的模型,若在训练集表现差,不必说在测试集表现同样会很差,这可能是欠拟合(under fitting)导致;若模型在训练集表现非常好,却在测试集上差强人意,则这便是过拟合(over fitting)导致的,过拟合与欠拟合也可以用 Bias 与 Variance 的角度来解释,欠拟合会导致高 Bias ,过拟合会导致高 Variance ,所以模型需要在 Bias 与 Variance 之间做出一个权衡。 使用简单的模型去拟合复杂数据时,会导致模型很难拟合数据的真实分布,这时模型便欠拟合了,或者说有很大的 Bias, Bias 即为模型的期望输出与其真实输出之间的差异 ;有时为了得到比较精确的模型而过度拟合训练数据,或者模型复杂度过高时,可能连训练数据的噪音也拟合了,导致模型在训练集上效果非常好,但泛化性能却很差,这时模型便过拟合了,或者说有很大的 Variance,这时模型在不同训练集上得到的模型波动比较大, Variance 刻画了不同训练集得到的模型的输出与这些模型期望输出的差异 。 举例: Bias反映的是模型的期望与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。 我们通过公式来直观了解一下,文字没有数学符号解释的清楚: 用图形解释方差与偏差: 举一个例子,一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环;二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环。那么在上面一次射击实验中,Bias就是1,反应的是模型期望与真实目标的差距,而在这次试验中,由于Variance所带来的误差就是2,即虽然瞄准的是9环,但由于本身模型缺乏稳定性,造成了实际结果与模型期望之间的差距。 简单的模型会有一个较大的偏差和较小的方差,复杂的模型偏差较小方差较大。 解决欠拟合的方法: 1、增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间; 2、尝试非线性模型,比如核SVM 、决策树、DNN等模型; 3、如果有正则项可以较小正则项参数; 4、Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等. 解决过拟合的方法: 1、交叉检验,通过交叉检验得到较优的模型参数; 2、特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间; 3、正则化,常用的有 L1、L2 正则。而且 L1正则还可以自动进行特征选择; 4、如果有正则项则可以考虑增大正则项参数; 5、增加训练数据可以有限的避免过拟合; 6、Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等. DNN中常见的方法: 1、早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。 2、集成学习策略。而DNN可以用Bagging的思路来正则化。首先我们要对原始的m个训练样本进行有放回随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。即采用我们的前向传播算法和反向传播算法得到N个DNN模型的W,b参数组合,最后对N个DNN模型的输出用加权平均法或者投票法决定最终输出。不过用集成学习Bagging的方法有一个问题,就是我们的DNN模型本来就比较复杂,参数很多。现在又变成了N个DNN模型,这样参数又增加了N倍,从而导致训练这样的网络要花更加多的时间和空间。因此一般N的个数不能太多,比如5-10个就可以了。 3、DropOut策略。所谓的Dropout指的是在用前向传播算法和反向传播算法训练DNN模型时,一批数据迭代时,随机的从全连接DNN网络中去掉一部分隐藏层的神经元。 在对训练集中的一批数据进行训练时,我们随机去掉一部分隐藏层的神经元,并用去掉隐藏层的神经元的网络来拟合我们的一批训练数据。使用基于dropout的正则化比基于bagging的正则化简单,这显而易见,当然天下没有免费的午餐,由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。 正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用 10 阶多项式,模型可能过于复杂,容易发生过拟合。因此需要在目标函数添加一些额外的惩罚项,即正则项。添加惩罚项可看成是对损失函数中的某些参数做一些限制,根据惩罚项的不同可分为:L0范数惩罚、L1范数惩罚(参数稀疏性惩罚)、L2范数惩罚(权重衰减惩罚)。 L0范数惩罚:为了防止过拟合,我们可以将其高阶部分的权重 w 限制为 0,这样,就相当于从高阶的形式转换为低阶。为了达到这一目的,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。因此机器学习中经常使用L1、L2正则化。L1正则化项也称为Lasso,L2正则化参数也称为Ridge。 L1范数:权值向量w中各个元素的绝对值之和,L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。 L2范数:权值向量w中各个元素的平方和然后再求平方根,L2正则化可以防止模型过拟合;一定程度上,L1也可以防止过拟合。 上面我们得到了带约束的优化问题A2,在实际的求解中,带约束的优化问题往往较难求解,大多都是转化为无约束优化问题去求解。接下来自然而然的我们采用拉格朗日乘子法将约束转化到目标函数上去,也就将约束优化问题A2转化为一个无约束的优化问题。那么这个无约束优化问题的形式是什么样的呢?这里直接先把最终的结论摆上来: 稀疏性对很多机器学习建模问题来说是非常重要的,也是非常好的一个性质。既然有很多系数等于0了,那么说明与之对应的输入是没有用了,这些输入就可以舍去,相当于起到了 降维和feature selection的作用。特殊要说明的是用L1正则化来降维和PCA降维是不同的,可以理解为L1正则化是用了数据的标签来做的,而PCA无需数据的标签。所以L1正则化实际上是带有监督学习性质的降维方法。 拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是抗扰动能力强。 λ可以控制L图形的大小,λ越小,L的图形越大(上图中的黑色方框和圆);λ越大,L的图形越小,最后求得代价函数最值时各参数也会变得很小。从另一方面看,由公式5可以看到,λ越大,θj衰减得越快。 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系? 机器学习防止欠拟合、过拟合方法 【学界】有约束转无约束,拉格朗日松弛观点下的L1正则化稀疏性探讨 斯坦福机器学习课程 第三周 (4)正则化:解决过拟合问题 拉格朗日乘子法如何理解? 机器学习中正则化项L1和L2的直观理解
正则化是什么意思
正则化的意思:修改学习算法,使其降低泛化误差而非训练误差。正则化,英文为regularizaiton,定义是修改学习算法,使其降低泛化误差(generalization error)而非训练误差。旨在更好实现模型泛化的补充技术,即在测试集上得到更好的表现。它是为了防止过拟合,进而增强模型的泛化能力。正则化的常见方法1、提前终止法(earlystopping)提前终止法适用于模型表达能力很强的时候。此时模型的训练误差会随着训练次数的增多而逐渐下降,但是训练误差却会随着训练次数的增加呈现先下降再上升的趋势(模型可能开始过拟合),提前终止法就是在训练误差最低的时候终止训练。2、模型集成(ensemble)常用的模型集成方法有:bagging、boosting、stacking。3、dropoutddropoutd的基本步骤是在每一次的迭代中,随机删除一部分节点,只训练剩下的节点。每次迭代都会随机删除,每次迭代删除的节点也都不一样,相当于每次迭代训练的都是不一样的网络,通过这样的方式降低节点之间的关联性以及模型的复杂度,从而达到正则化的效果。
正则化的通俗解释
正则化的通俗解释就是给平面不可约代数曲线以某种形式的全纯参数表示。正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。正则化:代数几何中的一个概念。形式反问题有两种形式。最普遍的形式是已知系统和输出求输入,另一种系统未知的情况通常也被视为反问题。许多反问题很难被解决,但是其他反问题却很容易得到答案。显然,易于解决的问题不会比很难解决的问题更能引起人们的兴趣,我们直接解决它们就可以了。那些很难被解决的问题则被称为不适定的。用途求解不适定问题的普遍方法是:用一组与原不适定问题相“邻近”的适定问题的解去逼近原问题的解,这种方法称为正则化方法。如何建立有效的正则化方法是反问题领域中不适定问题研究的重要内容。通常的正则化方法有基于变分原理的Tikhonov 正则化、各种迭代方法以及其它的一些改进方法,在各类反问题的研究中被广泛采用,并得到深入研究。
正则化处理
过拟合本质上是模型太过复杂,复杂到消弱了模型的泛化能力。由于训练数据时有限的,因此总可以通过增加参数的的方式来提升模型的复杂度,降低训练误差。可正如你学习的领域越专精,可应用的范围可能越窄,则在模型训练中就是指过拟合。 如图所示的红色曲线就是过拟合。 正则化是用于抑制过拟合方法的统称,通过动态调整模型参数的取值 来降低模型的复杂度。这是因为当一些参数的取值足够小时,参数对应的属性对结果的影响微乎其微,这在实质上去除了非相关属性的影响。 在线性回归里,最常见的正则化方式就是在损失函数中添加正则化项,而添加的正则化项往往是待估计参数的 p- 范数。将均方误差和参数的范数之和作为一个整体来进行约束优化,相当于额外添加了一重关于参数的限制条件,避免大量参数同时出现较大的取值。由于正则化的作用通常是让参数估计值的幅度下降,因此在统计学中它也被称为系数收缩方法。 w1,w2都是模型的参数,要优化的目标参数。蓝色的圆圈表示没有经过限制的损失函数在寻找最小值过程中,w的不断迭代(随最小二乘法,最终目的还是使损失函数最小)变化情况,表示的方法是等高线,z轴的值就是 E(w)。 那个红色边框包含的区域,其实就是解空间,只能在这个缩小了的空间中,寻找使得目标函数最小的w1,w2。左边图是岭回归,是由于采用了L2范数正则化项的缘故,要求两个参数的平方和小于某个固定的参数,所以是圆形。右边的LASSO,是由于采用了L1范数作为正则化项,要求两个参数的绝对值之和小于某个固定值,所以解空间是方形。 图中蓝色和红色的交点就是最优参数解,交点出现的位子取决于边界的情况,岭回归的边界是曲线,误差等值线可以在任意位置和边界相切。LASSO边界是直线,因此切点最可能出现在方形的顶点上,这就意味着某个参数的取值为0。 岭回归 :衰减不同属性的权重,让所有属性向圆心收拢。 LASSO :直接将某些属性的权重降为0,是对属性的过滤筛选。 当属性的数目远远大于样本的数目的高纬度统计问题,并且不少属性间还存在着相关性时,建议使用LASSO回归来属性的数目。LASSO回归会让很多属性的系数变成0,保留一些系数较大的属性,这个时候系数的取值会对结果又较大影响,因此需要对属性的取值范围进行调整,比如标准化。 当样本数远大于属性数时,岭回归更快,岭回归不会删除属性,会对属性的取值范围进行压缩,特征值小的特征向量会被压缩的很厉害,因此要求属性的取值范围差不多,这样系数差不多,压缩更有意义。 参考资料:王天一,机器学习40讲。