1. 正则化方法的原理
-
一般进行有数据集的训练的时候,往往对于一个训练集合,如果一直采用同一个函数会产生对训练集
依赖
的效果,往往会增加其验证集的误差
,这叫做数据的过拟合
,我们需要打破这种过拟合状态,增强函数的泛化
能力,其实就是使得函数不断向最优解靠拢,而不对该数据集产生依赖,产生稀疏的数据点
,使得整个模型具有更好的可解释性
-
那么如何产生这种效果呢:需要
正则化
相关的知识,正则化其实就是对原函数添加一个惩罚函数
,即损失函数,每次为函数赋值数据集中数据点的时候,通过对原函数的相关参数加一定的惩罚函数(惩罚参数),来使得函数逐渐逼近于我们想要的最优解,并且在不同的情况可以相应改变这个惩罚参数,使得模型训练出来的数据会更加稀疏,更加合理,不会使得模型逼近于某一块区域 -
这里面可以采用一个
公式
来体现这个正则化的概念:
通过向目标函数里面添加一个惩罚参数 Ω ( θ ) \Omega(\theta) Ω(θ),来降低模型的分布集中化,使得模型的数据点尽可能的稀疏,将正则化之后的损失函数记为 J ~ \tilde{J} J~:
J ~ ( θ ; X , y ) = J ( θ ; X , y ) + α Ω ( θ ) \tilde{J}(\theta;X,y) = J(\theta;X,y) +\alpha\Omega(\theta) J~(θ;X,y)=J(θ;X,y)+αΩ(θ)
其中 α ∈ [ 0 , + ∞ ) \alpha\in[0,+\infty) α∈[0,+∞)是惩罚项的权重,越大的 α \alpha α对应越来越多的正则化程度。
2. 常见的正则化方法
2.1 L2参数正则化
L2参数正则化
通过向目标函数中添加一个正则项
Ω ( θ ) = 1 2 ∣ w ∣ 2 \Omega ( \theta ) = \frac { 1 } { 2 } | w | ^ { 2 } Ω(θ)=21∣w∣2,这里的 w w w指的是一个矩阵,代表所有连接点之间的权重,该正则化主要针对权重加正则化
,使得权重更加接近0点
,又称权重衰减正则化方法
,又称岭回归
- 通过L2参数正则化之后的模型具有以下总的
目标函数
:
J ( w ; X , y ) = α 2 w T w + J ( w ; X , y ) J ( w ; X , y ) = \frac { \alpha } { 2 } w ^ { T } w + J ( w ; X , y ) J(w;X,y)=2αwTw+J(w;X,y)
其中 α \alpha α代表正则化的权重,越大表示正则化越强,是调整每次正则化强度的控制参数
- 与上面这个函数对应的
梯度函数
为:
∇ w J 1 ( w ; X , y ) = α w + ∇ w J ( w ; X , y ) \nabla _ { w } J_1 ( w ; X , y ) = \alpha w + \nabla _ { w } J ( { w }; X , y ) ∇wJ1(w;X,y)=αw+∇wJ(w;X,y)
- 使用
单步梯度下降法
更新权重,即执行以下的更新:
w ← w − ϵ ( α w + ∇ w J ( w ; X , y ) ) w \gets w - \epsilon ( \alpha w + \nabla _ { w } J ( w ; X , y ) ) w←w−ϵ(αw+∇wJ(w;X,y))
- 上面的式子
等价于
:
w ← ( 1 − ϵ α ) w − ϵ ∇ w J ( w ; X , y ) ) w \gets (1 - \epsilon\alpha)w - \epsilon \nabla _ { w } J ( w ; X , y ) ) w←(1−ϵα)w−ϵ∇wJ(w;X,y))
- 从上式子可以看出,对于权重加入
惩罚参数
之后,即加入权重衰减
之后会引起学习规则的改变,会导致在每次执行原来的梯度更新之前先收缩权重向量
(即将权重向量每个参数乘一个常数因子)
由于 ϵ \epsilon ϵ、 α \alpha α都是正数,加了这个正则化因子之后,模型比之前没加的权重都要小
- 下面对于这种正则化方法进行
举例说明
: - 如果 J J J是一个二次优化的函数问题,模型参数都可以表示为 w ‾ = λ i λ i + α w i \overline{w} = \frac { \lambda _ { i } } { \lambda _ { i } + \alpha } w _ { i } w=λi+αλiwi
- 即将原来的参数上面加一个控制因子,其中 λ i \lambda_{i} λi是参数Hessian矩阵的特征值。
- 由上式子观察可以得出
当 λ i ≫ α \lambda_{i} \gg\alpha λi≫α时,惩罚因子 ω ‾ \overline{\omega} ω的作用比较小
当 λ i ≪ α \lambda_{i} \ll\alpha λi≪α时,惩罚因子会变成0
`
- 通过L2正则化,可以使得参数
ω
\omega
ω在
零点
附近,可以加快收敛
,降低函数的优化次数,通过这种方法,采用范数控制参数
,可以改变本来收敛很缓慢的函数,比如sigmod激活函数
,其满足单调有界准则
,根据单调有界定
理,
∀ η > 0 ( 这 里 面 η 足 够 小 ) , 我 们 可 以 取 得 足 够 大 的 z 0 , 使 得 f ′ ( z ) < η ( z 0 < z ) \forall\eta >0(这里面\eta足够小),我们可以取得足够大的z_0,使得f^{\prime}(z)<\eta(z_0<z) ∀η>0(这里面η足够小),我们可以取得足够大的z0,使得f′(z)<η(z0<z),
- 即对于这个
单调有界的激活函数
,我们可以在一个特别大的区域内
( z 0 , + ∞ ) (z_0,+\infty) (z0,+∞)找到一个导数逼近于0的点
,但是这样的改变方法会使得函数优化算法收敛变得十分缓慢,但是通过范数控制可以让参数大小控制在0附近
,可以避免上面这种情况,在很大程度上加快收敛
。
2.2 L1参数正则化
- 对于
L2正则化
,是对函数权重进行衰减,还可以采用其他的正则化方式,比如L1正则化
方式,如下面这样,对模型参数W的L1正则化参数
被定义为:
Ω ( θ ) = ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ \Omega ( \theta ) = | | w | | _ { 1 } = \sum _ { i } | w _ { i } | Ω(θ)=∣∣w∣∣1=∑i∣wi∣
- 即各个参数的
绝对值
之和,对于正则化参数的控制我们可以缩放惩罚参数 Ω \Omega Ω来实现对L1权重变化的控制,所以正则化后的目标函数为:
J ( ω ; X , y ) = α ∣ ω ∣ i + J ( ω ; X , y ) J(\omega;X,y)=\alpha|\omega|_i+J(\omega;X,y) J(ω;X,y)=α∣ω∣i+J(ω;X,y)
- 该函数的
梯度
为:
∇ ω J ~ ( ω ; X , y ) = α s i g n ( ω ) + ∇ ω J ( ω ; X , y ) \nabla_\omega\tilde{J}(\omega;X,y)=\alpha sign(\omega)+\nabla_\omega J(\omega;X,y) ∇ωJ~(ω;X,y)=αsign(ω)+∇ωJ(ω;X,y)
-
其中
sign函数
是代表各个 ω \omega ω的符号 -
通过上面这个梯度,可以观察出正则化对于梯度的影响不再是
线性
的缩放每一个 ω i \omega_i ωi矩阵,而是给每一项添加了与 s i g n ( ω i ) sign(\omega_i) sign(ωi)同号
的常数 -
可以看出
权重的更新规则
变成,比原始的更新规则多出来了
λ n ∑ ω i s i g n ( w i ) \frac{\lambda}{n}\sum{\omega_i}sign(w_i) nλ∑ωisign(wi)这一项,
- 其中
λ
n
\frac{\lambda}{n}
nλ就是对正则化参数控制的变量。当
ω
\omega
ω为
正数
的时候,更新之后的 ω \omega ω变小
。当 ω \omega ω为负数
的时候,更新之后的 ω \omega ω变大,因此这个正则化的效果就是让 ω \omega ω向0靠拢
,使得网络之中的权重尽可能的为0
,即减少网络复杂度,防止过拟合