赞
踩
假设历经训练,前文所述的公司神经网络以及训练完毕,对于下属的各个意见经过开会最终都可汇聚成大boss的输出,那么如何评价这个输出的正确与否呢?或者说如何评价这个公司的执行决策神经网络的性能呢?
首先明确两个概念:验证集误差和训练集误差。
这个误差,是和谁比较得出的呢?容易想到,我们神经网络训练完毕后,总代价不会是零,自然的,将训练集样本放入神经网络,得到的输出与真实值的差值即为训练集误差;同样的将验证集样本放入神经网络,得到的输出与验证集真实值的差值即为验证集误差。
其次,有一个大前提,即样本来自同一分布。在这种情况下,这两个误差的值应该是相等的,因为理想情况下样本都是均匀分布的。
但实际并非如此,由于模型的不确定性,对于来自同一分布的非线性输出会导致出现三种典型情况:一是训练集误差大而验证集误差更大,二是训练集误差小但是验证集误差很大,三是训练集误差与验证集误差差不多。这里比较的大小是一个相对概念,而他们的绝对大小需要依据自己对于模型的期望而作评估。
为何不会出现验证集误差小于训练集误差的情况?因为大前提已经明确了样本来自同一分布。
为了描述这两种情况,我们自然而然的要从模型作为切入口。
因为无论是验证集误差还是训练集误差,他们都只是反映模型性能的指标。他俩仅仅是我们通过现有的模型而获取到的两个预测值,预测值有什么错呢,他们也只是为模型办事罢了。但是他俩却是我们去评估这个模型办事的一个很适合的角度。话虽啰嗦,但是笔者学习至此处时确实有点迷糊,对不上号。
对于模型办事,办出的两种典型状态,一是训练集误差大而验证集误差更大,二是训练集误差很小但是验证集误差很大,我们加以分析。
再次明确大前提,样本来自同一分布。
第一种情况,模型对训练数据拟合不佳,导致精密度不高,训练集误差大,使得(没有经过拟合这个过程)验证集误差变得更大,这种情况叫模型偏差大。
第二种情况,模型对训练数据拟合的太好了,导致模型难以泛化,成为了训练集数据的专用模型,使得验证集误差变大,这种情况叫模型方差大。
第三种情况,模型训练的恰到好处。
通过查看训练集误差,我们可以判断数据拟合情况,至少对于训练数据是这样,可以判断是否有偏差问题,然后查看错误率有多高。当完成训练集训练,开始使用验证集验证时,我们可以判断方差是否过高,从训练集到验证集的这个过程中,我们可以判断方差是否过高。
三种情况
偏差的出现,是因为神经网络出了问题,训练不够到位。在迭代程度确定的情况下,我们就要思考换一个神经网络,若神经网络确定,我们就要考虑继续迭代训练下去,直至能够较好的拟合训练集数据。
方差的出现,是因为过度拟合了训练集数据,成为了训练集数据的专属模型,而验证集数据未能参与神经网络的训练,致使其验证集误差变大,反映到模型上就是方差较大。为了摆脱模型对于训练集的专属特性,我们需要在训练集加入更多的数据,使得在一定的迭代程度下,拟合效果相较于之前的拟合效果有所减弱,削弱模型对于训练集数据的专属程度。
当迭代至足够次数或切换了一另一个模型,偏差越来越小,神经网络对训练集数据越来越拟合,最终可想而知,模型将从高偏差状态变成高方差状态;
当加入了足够的数据,现有神经网络在对训练集数据进行训练,方差越来越小,神经网络对训练集数据越来越不拟合,最终可想而知,模型将从高方差状态变成高偏差状态。
由上图可知,存在一个 j u s t r i g h t just right justright状态,使得方差和偏差都在一个可以接受的范围。
偏差比较容易得到改善,这里主要讲讲方差的问题。理想情况下,只要有数据,往训练集里加入即可,但是有时手边并没有这些东西,我们就需要通过正则化来解决这个问题。
对模型有着至关重要影响的两类参数,分别是 W W W和 b b b,我们不考虑 b b b,只关注 W W W。
在前向传播计算代价函数后加上一个正则项,正则项为
λ
2
m
\cfrac{\lambda }{2m}
2mλ 乘以
w
w
w范数的平方,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。