深度学习:正则化概念浅析

【本文适合初次接触正则化,想了解正则化是什么玩意儿的读者】

【更深层次的正则化知识,我将之后在《深度学习精髓与细节知识合集》专栏中继续补充。】


我们在《深度学习精髓与细节知识合集》专栏中的博文《机器学习:模型的容量》中简化地讨论了修改学习算法的方法:通过增加或减少学习算法可选假设空间的函数来增加或减少模型的表示容量。但这只是修改学习算法的冰山一角。正则化是深度学习中的一项非常重要的工作,它的地位与优化不相上下。

没有免费午餐定理已经暗示我们必须在特定任务上设计性能良好的机器学习算法。 我们建立一组学习算法的偏好来达到这个要求。当这些偏好和我们希望算法解决的学习问题相吻合时,性能会更好。算法的效果不仅很大程度上受影响于假设空间的函数数量,也取决于这些函数的具体形式。例如,我们用x去预测sin(x),直线和正弦曲线相差得远了,拟合效果肯定不好。能不能在规规矩矩的预测函数表达式里动点手脚,让函数表达式更加灵活,具备一些我们偏好的功能?这便是正则化的灵感来源和理论依据。

直白地、一般地讲,正则化就是通过在最小化的目标中额外增加一项(正则项),来表示我们对预测函数的一些偏好。有很多其他方法隐式或显式地表示对不同解的偏好。这些方法都可以称为正则化

我们举个例子:我们可以加入权重衰减(weight decay)来修改线性回归的训练标准。 J(w)是带权重衰减的线性回归最小化训练集上的均方误差正则项的和:

一般机器学习算法中,我们的目标是最小化(minimize)目标函数MSE(均方误差):

或者表示为:

现在目标函数变成了J(w),多了个正则项:

所以在minimize的过程中也要顾及到令权值的L2范数最小,表现出来则是目标函数会偏好于拥有平方L2范数较小的权重。(如果你还不清楚这个正则项为什么称为L2范数,小老弟你可能要先看下《常见范数(向量范数、矩阵范数)及其在机器学习算法的应用》,收录在我写的一个专栏《必要的数学知识 in ML》里。)

话说回来,中:

λ 是提前挑选的值,表达我们偏好小范数权重的程度。当 λ = 0,正则项就不存在了,我们没有任何偏好。越大的 λ 偏好范数越小的权重,因为正则项在我们的目标函数中占得地位更重要了。

针对我们举的这个例子,最小化 J(w) 可以看作是拟合训练数据和偏好小权重范数之间的权衡。这会使得解决方案的斜率较小(简单理解:y=wx+b,加入正则项后偏好较小的w,即斜率变小),或是将权重放在较少的特征上(w属于n维R空间,即每个特征都带有自己的一个权重w,特征的维度变少了后,L2范数值更小)。我们训练了具有不同 λ 值的同一个高次多项式回归模型,来举例说明如何通过权重衰减控制模型欠拟合或过拟合的趋势:

其实我们也可以看到,正则化的作用和我们直接把模型设为一次、二次、高次函数的效果差不多。所以说,改变学习算法的方法条条大路通罗马,如果你足够厉害,直接选择恰当的假设空间(函数集)那当然ojbk。但是大多数情况我们不了解最佳的算法模型应该长什么样,就加一个正则项让计算机自己根据结果去修正咯!

 

猜你喜欢

转载自blog.csdn.net/lyxleft/article/details/85954587