【深度学习】4 深度学习的实践层面:方差与偏差、L2正则化、DropOut正则化

1 引言

假设历经训练,前文所述的公司神经网络以及训练完毕,对于下属的各个意见经过开会最终都可汇聚成大boss的输出,那么如何评价这个输出的正确与否呢?或者说如何评价这个公司的执行决策神经网络的性能呢?

2 方差和偏差

2.1 两个误差

首先明确两个概念:验证集误差和训练集误差。

这个误差,是和谁比较得出的呢?容易想到,我们神经网络训练完毕后,总代价不会是零,自然的,将训练集样本放入神经网络,得到的输出与真实值的差值即为训练集误差;同样的将验证集样本放入神经网络,得到的输出与验证集真实值的差值即为验证集误差。

其次,有一个大前提,即样本来自同一分布。在这种情况下,这两个误差的值应该是相等的,因为理想情况下样本都是均匀分布的。

但实际并非如此,由于模型的不确定性,对于来自同一分布的非线性输出会导致出现三种典型情况:一是训练集误差大而验证集误差更大,二是训练集误差小但是验证集误差很大,三是训练集误差与验证集误差差不多。这里比较的大小是一个相对概念,而他们的绝对大小需要依据自己对于模型的期望而作评估。

为何不会出现验证集误差小于训练集误差的情况?因为大前提已经明确了样本来自同一分布。

2.2 不是它俩的错

为了描述这两种情况,我们自然而然的要从模型作为切入口。

因为无论是验证集误差还是训练集误差,他们都只是反映模型性能的指标。他俩仅仅是我们通过现有的模型而获取到的两个预测值,预测值有什么错呢,他们也只是为模型办事罢了。但是他俩却是我们去评估这个模型办事的一个很适合的角度。话虽啰嗦,但是笔者学习至此处时确实有点迷糊,对不上号。

对于模型办事,办出的两种典型状态,一是训练集误差大而验证集误差更大,二是训练集误差很小但是验证集误差很大,我们加以分析。

再次明确大前提,样本来自同一分布

第一种情况,模型对训练数据拟合不佳,导致精密度不高,训练集误差大,使得(没有经过拟合这个过程)验证集误差变得更大,这种情况叫模型偏差大。

第二种情况,模型对训练数据拟合的太好了,导致模型难以泛化,成为了训练集数据的专用模型,使得验证集误差变大,这种情况叫模型方差大。

第三种情况,模型训练的恰到好处。

通过查看训练集误差,我们可以判断数据拟合情况,至少对于训练数据是这样,可以判断是否有偏差问题,然后查看错误率有多高。当完成训练集训练,开始使用验证集验证时,我们可以判断方差是否过高,从训练集到验证集的这个过程中,我们可以判断方差是否过高。
三种情况
三种情况

2.3 优化方差和偏差

偏差的出现,是因为神经网络出了问题,训练不够到位。在迭代程度确定的情况下,我们就要思考换一个神经网络,若神经网络确定,我们就要考虑继续迭代训练下去,直至能够较好的拟合训练集数据。

方差的出现,是因为过度拟合了训练集数据,成为了训练集数据的专属模型,而验证集数据未能参与神经网络的训练,致使其验证集误差变大,反映到模型上就是方差较大。为了摆脱模型对于训练集的专属特性,我们需要在训练集加入更多的数据,使得在一定的迭代程度下,拟合效果相较于之前的拟合效果有所减弱,削弱模型对于训练集数据的专属程度。

当迭代至足够次数或切换了一另一个模型,偏差越来越小,神经网络对训练集数据越来越拟合,最终可想而知,模型将从高偏差状态变成高方差状态;

当加入了足够的数据,现有神经网络在对训练集数据进行训练,方差越来越小,神经网络对训练集数据越来越不拟合,最终可想而知,模型将从高方差状态变成高偏差状态。

由上图可知,存在一个 j u s t r i g h t just right justright状态,使得方差和偏差都在一个可以接受的范围。

3 正则化

偏差比较容易得到改善,这里主要讲讲方差的问题。理想情况下,只要有数据,往训练集里加入即可,但是有时手边并没有这些东西,我们就需要通过正则化来解决这个问题。

对模型有着至关重要影响的两类参数,分别是 W W W b b b,我们不考虑 b b b,只关注 W W W

3.1 L 2 L2 L2正则化

在前向传播计算代价函数后加上一个正则项,正则项为 λ 2 m \cfrac{\lambda }{2m} 2mλ 乘以 w w w范数的平方, 𝑤 𝑤 w欧几里德范数的平方等于 w j w_{j} wj( 𝑗 值从 1 1 1 n x n_{x} nx)平方的和,也可表示为 w T w w^{T}w wTw,也就是向量参数 w w w的欧几里德范数( 2 范数)的平方,而后在进行反向传播即可,此方法称为 L 2 L2 L2正则化。
L2正则化
L2正则化

神经网络含有一个成本函数,该函数包含 W [ 1 ] W^{[1]} W[1] b [ 1 ] b^{[1]} b[1] W [ l ] W^{[l]} W[l] b [ l ] b^{[l]} b[l]所有参数,字母 L L L是神经网络所含的层数,因此成本函数等于 m m m个训练样本损失函数的总和乘以 1 m \cfrac{1}{m} m1,正则项为 λ 2 m ∑ 1 L ∣ W [ L ] ∣ 2 \cfrac{\lambda }{2m}\sum_1^L\vert W^{[L]} \vert^{2} 2mλ1LW[L]2,我们称|| 𝑊 [ 𝑙 ] 𝑊^{[𝑙]} W[l]|| 2 _2 2为范数平方,这个矩阵范数|| 𝑊 [ 𝑙 ] 𝑊^{[𝑙]} W[l]|| 2 _2 2(即平方范数),被定义为矩阵中所有元素的平方求和。
在这里插入图片描述
正则化计算

在这里插入图片描述
正则化计算

反向传播后,梯度斜率变成
在这里插入图片描述
更正后的梯度下降

至此我们让 w w w变得更小,完成了 L 2 L2 L2正则化。

3.2 D r o p O u t DropOut DropOut正则化

正如我们所理解的,方差较大的原因是因为过拟合,神经网络过度参与了输出值的生成。可想而知,若删除神经网络中的某些结点,即可消除过拟合的问题。而事实也正是如此。
在这里插入图片描述
dropout正则化

具体操作方法以 i n v e r t e d d r o p o u t inverted dropout inverteddropout(反向随机失活)为例,我们对第三层进行 d r o p o u t dropout dropout,设置一个掩膜层 d d d,其大小与该层的激活值矩阵相同,数值为0到1的随机数。设置概率值 k e e p − p r o b keep-prob keepprob,以 d = ( d < k e e p − p r o b ) d = (d<keep-prob) d=(d<keepprob)的方式将掩膜层的值由随机数转化为01矩阵,且矩阵值为1的概率 = k e e p − p r o b = keep-prob =keepprob。在以此掩膜层与激活值矩阵相乘,则使得某些掩膜层值为零所对应的激活值矩阵值也变为零,形式上舍弃了这些激活值。然后再把相乘后的激活值矩阵除以 k e e p − p r o b keep-prob keepprob值,以保证该激活值矩阵传播至下一层时的期望值不变。而后对于反向传播求导数时,我们利用缓存的 d d d k e e p − p r o b keep-prob keepprob做同样的处理。至此,我们完成了 d r o p o u t dropout dropout正则化。

3.3其他正则方法

1)数据扩增:通过对原有数据的变换生成假数据参与训练

2) e a r l y s t o p p i n g early stopping earlystopping:将训练过程提前终止

4 归一化输入

第一步是零均值化, μ = 1 m ∑ i = 1 m x i \mu =\frac{1}{m} \sum_{i=1}^mx^i μ=m1i=1mxi它是一个向量, x x x等于每个训练数据 x x x减去 μ \mu μ,意思是移动训练集,直到它完成零均值化。

第二步是归一化方差,注意特征 x 1 x_{1} x1 的方差比特征 x 2 x_{2} x2 的方差要大得多,我们要做的是给 σ \sigma σ赋值, σ 2 = 1 m ∑ i = 1 m ( x i ) 2 \sigma ^2 =\frac{1}{m} \sum\nolimits_{i=1}^m(x^i) ^2 σ2=m1i=1m(xi)2,这是节点 y y y 的平方, σ 2 \sigma ^2 σ2 是一个向量,它的每个特征都有方差,注意,我们已经完成零值均化, 𝑥 𝑖 2 𝑥_𝑖^2 xi2元素 y 2 y^2 y2就是方差,我们把所有数据除以向量 σ 2 \sigma^{2} σ2

以此种方式,就把梯度下降模型由狭长变为均匀的样子了。

5 梯度爆炸与梯度消失

用数值逼近的方式,以双边误差代替单边误差生成反向传播的导数的预估值,并和预估值做以比较,判断出问题的地方。

6 总结

多思考 多动手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值