在对一数学分布进行学习时,会优先构建出不同类型的模型,比如为上图中的多项式。
对于不同次方的数学函数,次幂数越高所构建出的图像也越复杂、抖动越大、波浪越多。
那么如何衡量不同模型的学习能力呢,我们将这个能力叫为:model capacity。正常上认为次幂数越高可表达的能力越大。目前随着硬件技术的发展,能构建的神经网络结构也越来越深。从以往数据来看,具有8个神经层的AlexNetd的数据量可以达到60MB,具有19个神经层的VGG网络的数据量大概为250MB左右,而在2015年新研究出的ResNet的152个神经层的数据量要多个GB的数据量,从而具有更高的学习能力,反映出更高维的特征。
那么在进行模型描述时会有以下几种情形出现:
预测函数 < 真实模型时,我们叫这种现象为under-fitting,如下图所示
如该图所示,实际模型曲线为蓝线,而所做出的的模型函数为红线,则这种现象即为发生under-fitting现象,我们将该现象认为是预测函数模型的表达能力不够。
另外在后续要讲解的WGAN网络中,也会有这样的现象发生。
在WGAN的早期版本中会将模型的复杂度约束下来,如上图中预测出的模型均没有实际模型复杂。
那么underfitting是如何判断出来的呢?(1)train loss的效果、accuracy正确率不好,即train loss和accuracy到达某一位置后便不再波动。(2)test accuracy的效果也不好。增加模型复杂度便会解决以上问题。
与上述问题相反的是over fitting(过拟合)。
较圆滑的蓝线为实际模型曲线,而橙线为预测的函数模型曲线,它会将每个点都穿过,甚至在边缘上的点也不放过。这时表明预测模型函数的复杂度过高,从而会趋近于包含每一个点,这样会导致train的效果会非常好,但在test的效果反而不好。
Over fitting的判断方法是:train loss 和 accuracy 表现的非常好,但test accuracy效果却不好。
上图可以更直观的了解他们的模型曲线,由各个曲线的特点可以看出模型区分的好坏。
在我们实际研究中,遇到over fitting的情况会更多一些,因为计算机的性能越来越强,很容易网络的表达能力超过模型的复杂程度。
本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!