深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据
2mλ乘以w范数的平方,欧几里德范数的平方等于wj( j值从1到nx)平方的和,也可表示为wwT,也就是向量参数w的欧几里德范数(2范数)的平方,此方法称为L2正则化。因为这里用了欧几里德法线,被称为向量参数w的L2范数。
J(w,b)=m1i=1∑mL(y^(i),y(i))+2mλ∣∣w∣∣22 ∣∣w∣∣22=j=1∑nxwj2=wTw 为什么不再加上参数b呢?因为通常w是一个高维参数矢量,几乎涵盖所有参数,已经可以表达高偏差问题,所以参数很大程度上由w决定,而b只是众多参数中的一个,改变b值对整体模型影响较小,所以通常省略不计,如果加了参数b,也没太大影响
L2正则化是最常见的正则化类型,L1正则化是正则项mλ乘以∑j=1nx∣w∣,∑j=1nx∣w∣也被称为参数向量w的L1范数无论分母是,m还是2m,它都是一个比例常量
J(w,b)=m1i=1∑mL(y^(i),y(i))+2mλ∣∣w∣∣1 ∣∣w∣∣1=j=1∑nx∣wj∣ 如果用的是L1正则化,w最终会是稀疏的,也就是说w向量中有很多0,虽然L1正则化使模型变得稀疏,却没有降低太多存储内存,实际上L1 regularization在解决high variance方面比L2 regularization并不更具优势。而且,L1的在微分求导方面比较复杂
λ是正则化参数,可以设置λ为不同的值,在Dev set中进行验证,选择最佳的λ,通常使用验证集或交叉验证集来配置这个参数
在深度学习模型中,L2 regularization的表达式为:
J(w[1],b[1],⋯,w[L],b[L])=m1i=1∑mL(y^(i),y(i))+2mλl=1∑L∣∣w[l]∣∣2 ∣∣w[l]∣∣2=i=1∑n[l]j=1∑n[l−1](wij[l])2 ∣∣w[l]∣∣2称为Frobenius范数,记为∣∣w[l]∣∣F2。一个矩阵的Frobenius范数就是计算所有元素平方和再开方,如下所示:
∣∣A∣∣F=i=1∑mj=1∑n∣aij∣2 由于加入了正则化项,梯度下降算法中的dw[l]计算表达式需要做如下修改:
dw[l]=dwbefore[l]+mλw[l] w[l]:=w[l]−α⋅dw[l] L2 regularization也被称做weight decay。这是因为,由于加上了正则项,dw[l]有个增量,在更新w[l]的时候,会多减去这个增量,使得w[l]比没有正则项的值要小一些。不断迭代更新,不断地减小
w[l]:=w[l]−α⋅dw[l]=w[l]−α⋅(dwbefore[l]+mλw[l])=(1−αmλ)w[l]−α⋅dwbefore[l] 其中,(1−αmλ)<1