机器学习笔记之正则化
一、前言——过拟合 我们知道,经过一组点可以有无数条曲线。这些曲线对于这组样本点的损失函数同为 0。但是对于预测来说,这些曲线产生的结果却并不相同。这就意味着,进行梯度下降到达某一最低点时,依旧不一定能得到“最好的”预测(拟合/分类)效果。甚至可能对于一些情况,此时的(预测/分类)效果反而更差了。这样的情况就称为过拟合。 过拟合的存在是很合理的。从感性上讲,将机器学习的过程类比人类的认知,一个观念的形成不能超出经验之外,认知的结果永远是片面而非客观的。那么在与更广泛的客观现实接触之前,我们必然无法得知已经形成的认知是否是依旧可以应用的。 这是一个很休谟的观点。但却无法解决现实问题。我们依旧需要找到减少过拟合的方法。 二、惩罚 我们的思想中存在着一种先验观念,它规范天地万物,在冥冥中告诉我们什么是“合理的”。对于机器学习模型来说也是一样的,它应当具有这样的机制,告诉它什么情况是不可能的。 就比如说,对于房价,我们知道一些特征是更加重要的,而另一些是更加不重要的。很显然,那些更重要的特征对应的权重应该较不重要的特征对应的权重大。那么我们就需要对那些不重要的权重进行“惩罚”,以避免这些权重过大,从而导致模型过拟合。这样的“惩罚”在损失函数中体现。即,当这些权重过大时,损失函数也会相应增大。 具体而言,对如下的表达式 $$ y = w_1x_1 + w_2x_2 + w_3x_3 + b $$ 假设要使第二、三个权重相对较小,则可以在损失函数中加上惩罚项 $\lambda_2 w_2 + \lambda_3 w_3$。其中 $\lambda_2, \lambda_3$ 取较大值。则损失函数变为 $$ J_{new}(\vec{w}, b) = J(\vec{w}, b) + \lambda_2 w_2 + \lambda_3 w_3 $$ 具体地比如说 $$ J_{new}(\vec{w}, b) = J(\vec{w}, b) + 1000 w_2 + 2000 w_3 $$ 那么此时很显然,当 $w_2, w_3$ 较大时,损失函数也会相应更大。 可是对于大多数情况,我们无法事先知晓权重的重要程度。对于这些一般化的问题,还需要有一般化的解决办法。 三、正则化 正则化是惩罚的一种。该方法在损失函数中增加了正则项: $$ \frac{\lambda}{2m} \sum_{j=1}^n w^2_j $$ 其中 $\lambda$ 称为正则化参数。...