文中部分图片摘自吴恩达deeplearning课程的作业,代码及课件在我的github:
DeepLearning 课件及作业
关于本篇正则化的具体路径是:
正则化作业
正则化的概念及原因
简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好的表现。当你用比较复杂的模型比如神经网络,去拟合数据时,很容易出现过拟合现象,这会导致模型的泛化能力下降,这时候,我们就需要使用正则化,让训练出来的模型没有那么复杂。
正则化的几种常用方法
- L1 & L2范数
首先介绍一下范数的定义,假设 x x x 是一个向量,它的 L p L^p Lp 范数定义:
∣ ∣ x ∣ ∣ p = ( ∑ i ∣ x i ∣ p ) 1 p ||x||_p = (\sum_{i}^{}{|x_i|^p})^\frac{1}{p} ∣∣x∣∣p=(i∑∣xi∣p)p1
在目标函数后面添加一个系数的“惩罚项”是正则化的常用方式,为了防止系数过大从而让模型变得复杂。在加了正则化项之后的目标函数为:
J ˉ ( w , b ) = J ( w , b ) + λ 2 m Ω ( w ) \bar{J}(w, b) = J(w, b) + \frac{\lambda}{2m}\Omega(w) Jˉ(w,b)=J(w,b)+2mλΩ(w)
式中, λ 2 m \frac{\lambda}{2m} 2mλ 是一个常数, m m m 为样本个数, λ \lambda λ 是一个超参数,用于控制正则化程度。
L 1 L^1 L1 正则化时,对应惩罚项为 :
Ω ( w ) = ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ \Omega(w)=||w||_1 = \sum_{i}^{}{|w_i|} Ω(w)=∣∣w∣∣1=<