Regularization
重新定义了目标函数,为了通过是的权重的值都接近于0,使得目标函数更加的平滑减少样本中的噪声对训练的结果所造成的影响。(用于解决overfitting问题zhengzehua)
L′(θ)=L(θ)+、lambda||θ||θ={w1,w2,...,wn}
其中n为样本的个数。
1.L1 regularization
L′(θ)=L(θ)+λn||θ||1
将没有正则化之前的损失函数记为L(
θ
),则采用L1正则化之后待优化的函数为:
||θ||1=|w1|+|w2|+...+|wn|
而当
w1
=0的时候此时是不可微的,需要做特殊处理,常将其微分的值置为0.
以参数
w1
的更新为例,求参数
wt
对于损失函数L’的微分可得:
∂L′∂wt=∂L∂wt+λnsgn(wt)∂L′∂wt=∂L∂wt+λnsgn(wt)∂L′∂wt=∂L∂wt+λnsgn(wt)
(其中sgn(x)为符号函数,其数学表达式如下所示:
f(x)=sgn(x)⎧⎩⎨⎪⎪1,0,−1,if x > 0if x = 0 if x < 0
)
则对于参数
w1
的更新如下所示:
wt+1←wt−η∂L′∂wt=wt−η(∂L∂wt+λnsgn(wt))=wt−η∂L∂wt−ηλnsgn(wt)
在L1中不论w的大小如何,目标函数在更新的过程中均减去一个较小的值
ηλnsgn(wt)
。
2.L2 regularization
在L2正则化中目标函数以及
θ
的取值如下所示:
L′(θ)=L(θ)+λ2n||θ||2||θ||2=(w1)2+(w2)2+...+(wn)2
wt
对L’求偏导数可以得到
Gradient:
∂L′∂wt=∂L∂wt+λwt
对
wt
进行如下更新:
wt+1←wt−η∂L′∂w=wt−η(∂L∂w+λwt)=(1−ηλ)wt−η∂L∂w
L2正则化中如果出现w的值较大,则w的值化下降较快,其最后训练出来的结果中所有的w均为较小的值,这是其相对与L1正则化的优点。
3.Dropout
以p的概率使每一个神经元失活,在network中使用Dropout的时候会使得proformace的变差。假如在训练的时候对p设为0.5,则最后测试的时候则应该对输出的结果乘以0.5从而是的testing的weight和training的weight处于相同的数量级(一般深度学习的框架都会自动实现)。
扫描二维码关注公众号,回复:
2732131 查看本文章
⏐↓⏐⏐⏐
⏐↓⏐⏐⏐
Dropout可以看成是一种集成学习的方法,即在训练的过程中如果有m个神经元,采用了Dropout方法则可能出现的模型会有
2m
种,每一种情况采用一个mini-batch来训练,最后综合考虑各个模型的效果从而实现ensemble learning.
有一个神经网络采用了Dropout的方法,以keep_prob=(1-p)的概率来保留每一个神经元,则最后的输出结果相当于原来的网络不采用Dropout方法的输出乘以(1-p),即:
f(x)dropout=f(x)withoutdropout∗(1−p)
该方法在ReLU的activation function中的表现效果更好,因为其更加适合用线性的方法(刚好成比例)。