1. 正则化简介
以逻辑斯蒂回归为例,介绍正则化。
原来的成本函数(cost function):
minw,bJ(w,b)=minw,b1m∑i=1mL(y^(i),y(i))
其中:
w∈Rnx,b∈R
加入正则化项得:
J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m||w||22
其中:
||w||22=∑j=1nxw2j=wTw
上式中的正则化是L2正则化。
正则化是一种非常实用的减少方差的方法,正则化时会出现偏差方差权衡问题,偏差可能略有增加。如果网络足够大,增幅通常不会太高。人们通常会用交叉验证集的方式来选择正则化参数:λ。
注意:损失函数指的是单个样本的误差,成本函数指的是所有训练样本的误差。
2. 为什么正则化项没有b
因为w往往是一个高维向量,包含了绝大多数参数,已经可以表达高方差问题。而b只是单个数字,加了也没有太大影响。
3. L1正则化使得模型变得稀疏,是否有利于模型压缩
实际上L1正则化虽然使得模型变得稀疏,但是却没有降低太多存储内存(因为参数的个数没有变,只是值变为了0)。所以L1正则化的主要目的不是为了模型压缩。
4. 为什么L2正则化被称为weight decay
首先我们来看成本函数,其包含w[1],b[1]到w[L],b[L]所有参数,L是神经网络所含的层数。其定义如下:
J(w[1],b[1],...,w[L],b[L])=1m∑i=1mL(y^(i),y(i))+λ2m∑l=1L||w[l]||2
其中:
||w[l]||2=∑i=1n[l−1]∑j=1n[l](w[l]ij)2
w:(n[l−1],n[l])
n[l]表示第l层单元的数量,这个式子求的是w[l]矩阵中所有元素的平方和。
在加上正则化前,w[l]用反向传播算法更新参数的公式为:
w[l]:=w[l]−αdw[l]=w[l]−α∂J∂w[l]
但是加上正则化之后,公式变为:
w[l]:=w[l]−αdw[l]=w[l]−α(∂J∂w[l]+λmw[l])=(1−αλm)w[l]−αdw[l]
因为
1−αλm 小于1,所以L2正则化相当于让权重矩阵变小,即权重衰减(weight decay)。
5. 为什么说L1正则化是假设参数满足拉普拉斯分布、而L2正则化是满足高斯分布
首先我们对参数w引入协方差为α、均值为0的高斯先验。则根据极大后验概率,求得成本函数为:
L(w)=p(y→|X;w)p(w)=∏i=1mp(y(i)|x(i);θ)p(w)=∏i=1m12π−−√δexp(−(y(i)−wTx(i))22δ2)∏j=1n12π−−√αexp(−(w(j))22α)=∏i=1m12π−−√δexp(−(y(i)−wTx(i))22δ2)12π−−√αexp(−wTw2α)
取对数:
l(w)=logL(w)=mlog12π−−√δ+nlog12π−−√α−1δ2⋅12∑i=1m(y(i)−wTx(i))2−1α⋅12wTw⇒wMAPGuassian=argminw(1δ2⋅12∑i=1m(y(i)−wTx(i))2+1α⋅12wTw)
等价于:
JR(w)=1n||y−wTX||2+λ||w||2
显然这就是L2正则化的形式,L1正则化同理可以推得。
6. 正则化是如何防止过拟合的
根据上图所示,当λ增大时,w[l]变小,z[l]也会变小。这时z就会落入激活函数的线性区,这时整个网络就会接近一个线性模型。分类面的就会相对简单,就不容易出现右下角的那种过拟合的现象。