深度学习的实用层面 —— 1.5 为什么正则化可以减少过拟合

通过两个例子来直观体会一下,左图是高偏差,右图是高方差,中间是刚刚好。现在我们看一下这个庞大的深度拟合神经网络,这是神经网络的代价函数 J ( w [ l ] , b ) = 1 m ∑ i = 1 m L ( y ^ [ i ] , y [ i ] ) J(w^{[l]},b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{[i]},y^{[i]}) J(w[l],b)=m1i=1mL(y^[i],y[i])在原始损失函数中添加正则项,损失函数表示为 J ( w [ l ] , b ) = 1 m ∑ i = 1 m L ( y ^ [ i ] , y [ i ] ) + λ 2 m ∑ l = 1 L ∣ ∣ w [ l ] ∣ ∣ F 2 J(w^{[l]},b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{[i]},y^{[i]})+\frac{\lambda}{2m}\sum_{l=1}^L||w^{[l]}||^2_F J(w[l],b)=m1i=1mL(y^[i],y[i])+2mλl=1Lw[l]F2为什么添加佛罗贝尼乌斯范数就可以减少过拟合,直观上理解就是如果正则化 λ \lambda λ设置得足够大,权重矩阵 w w w被设置为接近于0的值,直观理解就是把多隐藏单元的权重设置为0,于是基本上消除了这些隐藏单元的许多影响,如果是这种情况,这个被大大简化了的神经网络会变成一个很小的网络,小到如同一个逻辑回归单元,可是深度却很大,它会使这个网络从过拟合的状态更接近与左图的高偏差状态,但是 λ \lambda λ会存在一个中间值,于是会有一个接近“just right”的中间状态,直观理解就是 λ \lambda λ增加到足够大,w会接近于0,实际上是不会发生这种情况的,我们尝试消除或者至少减小许多隐藏单元的影响,最终这个网络会变得很简单,这个神经网络越来越接近逻辑回归。我们直观上认为大量隐藏单元被完全消除了。其实不然,实际上是该神经网络的所有隐藏单元依然存在,但是它们的影响变得更小了,神经网络变得更简单了,貌似这样更不容易过拟合,因此并不确定这个直觉经验是否有效。不过,在编程中执行正则化时,你会实际看到一些方差减小的结果。

再来直观感受一下正则化为什么可以预防过拟合,假设我们用的是这样的双曲激活函数tanh,用 g ( z ) g(z) g(z)表示 t a n h ( z ) tanh(z) tanh(z)。那么我们发现只要z非常小,如果z只涉及少量参数,这里我们可以利用双曲正切函数的线性状态,只要z可以扩展为这样的更大值或者更小值,激活函数开始变得非线性,现在你应该摒弃这个直觉,即如果正则参数 λ \lambda λ很大,激活函数的参数会相对小,因为代价函数中的参数变大了。如果w很小,因为 z [ l ] = w [ l ] a [ l − 1 ] + b [ l ] z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]} z[l]=w[l]a[l1]+b[l]如果w很小,相对来说,z也会很小,特别地,如果z的值最终在这个范围内,都是相对较小的值, g ( z ) g(z) g(z)大致呈线性,每层几乎都是线性的,和线性回归函数一样,前面已经说过,如果每层都是线性的,那么整个网络就是一个线性网络,即使是一个非常深的深层网络,因具有线性激活函数的特征,最终我们只能计算线性函数。因此它不适用于非常复杂的决策,以及过度拟合数据集的非线性决策边界。

总结一下,如果正则化参数变得很大,参数w很小,z也会相对变小,此时忽略b的影响,z会相对变小。实际上z的取值范围很小,这时候的激活函数会相对呈线性,整个神经网络会计算离线性函数近的值,这个线性函数非常简单,并不是已给极复杂的高度非线性函数,不会发生过拟合。

总结正则化之前给大家一个执行方面的小建议,在增加正则化项时,应用之前定义的代价函数J,我们做一下修改,增加了一项,目的是预防权重过大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值