当我初次看见“正则化”三个字的时候,我简直头疼。在我的理解里“正则”还是Python中用在字符串处理的re正则库呢!怎么加一个“化”字就看不懂了!听我给你慢慢道来。
一、正则化中的“正则”是个啥玩意儿?
正则化(Regularization)中的“正则”这个词来源于英文术语“regularization”,直译成中文即“规范化”或“正规化”。这里的“正则”并不是指严格意义上的“规则”或“规律”,而是指通过一定的数学手段规范或约束模型的学习过程,使其更加稳健、简洁并且避免过拟合。
所以正则化就是规范和约束模型参数的意思。
二、怎么去理解正则化能够解决过拟合(感性上)?
还是用我一贯的做法,先看看例子和图片从直觉上感受一下正则化解决过拟合的直观体验。接下来文章中以房价预测任务+线性回归模型+均方误差损失函数+L2正则化(又叫权值缩减)为例。
(1)未使用正则化手段出现过拟合时
可以从图中明显的看到出现了过拟合现象,虽然模型(也就这条线)很好的穿过了所有点(也就是模型在训练集上表现很好)但显然如果用一个没见过的数据来进行预测的话结果会很差(也就是模型在测试集上表现很差),因为房价随着房子面积肯定是增长的而图中模型最后都下降了。
(2)使用了“轻微的”正则化后
使用正则化后可以发现这条线明显比之前要平滑,没有那么的抖动了。
(3)使用了“合适的”正则化后
假设正确的拟合模型是对数函数曲线,但上图这个模型曲线虽然还有些扭曲但比一开始已经平滑很多了。
三、怎么去理解正则化能够解决过拟合(理性上)?
在L2正则化中,模型的目标函数被修改为原始损失函数与模型参数的L2范数(即参数平方和)的和,加上一个正则化系数λ的权重。目标函数可以表示为:
其中,L(θ) 是原来的损失函数,如均方误差,θ 是模型的参数向量(之前我都是写的w和b这里用θ统称他们),λ 是正则化强度(正则化系数),它控制着正则化项的影响力。
在梯度下降的过程中,模型参数θ的更新规则会受到正则化项的影响。当计算损失函数关于参数θ的梯度时,正则化项会产生额外的梯度贡献,这部分梯度指向使参数θ减小的方向。对于每一个参数,其梯度不仅受到原始损失函数的影响,还受到正则化项的影响,即:
在更新参数时,如果某个参数的绝对值已经比较大,那么正则化项会使该参数的梯度增加,进一步推动参数朝着减小方向更新。特别是对于较大的参数,正则化项的效应更加明显,会强制这些参数变得更小。
这样一来,通过正则化,模型学会了“谦虚”,即不赋予任何单个特征过大的权重,从而减少了模型对个别特征的过度依赖,增强了模型对未知数据的泛化能力,有效地缓解了过拟合现象。同时,由于参数受到了限制,模型的整体复杂度也会相应降低,这也是正则化能够抑制特征权重过大的机制。
四、正则化强度参数非常重要
正则化确实会导致模型的所有参数(特征权重)在某种程度上变小,但不同的特征权重缩小的程度可能并不相同。这是因为正则化是通过对损失函数添加了一个对参数的惩罚项,使得在训练过程中不仅关注原始损失的最小化,同时也关注参数的大小。
在L2正则化中,参数的梯度更新时会受到正则化项的影响,这会促使所有的参数向更小的值收缩,但是收缩的程度取决于:
- 参数原有的大小:原本较大的参数受到正则化的影响更为显著,它们会被更多地减小。
- 正则化强度(λ):λ值越大,正则化对参数的影响越强,所有参数都会更大幅度地减小。
正则化强度(通常表示为 λ)是一个至关重要的超参数,它决定了正则化项在优化过程中对模型参数的约束力度。选择合适的正则化强度直接影响到模型的泛化能力,即模型在未见过的新数据上的表现。