目录
Jtrain即在训练集上的成本函数计算,f的计算是用训练的w和b计算。
以语音识别程序为例,Jtrain是10.8%,人类的表现误差(比如说人们在说话的时候口误发错了某个音或者周围有其他声音干扰等)是10.6%,所以很符合实际,而Jcv和人类的表现误差差了4.0%。
再看另一个例子(看图即可,有了前面的铺垫很容易理解):
由下图可以看到随着训练集的增大,Jcv和Jtrain的变化
如下图,当模型具有高偏差(Jtrain和基准表现之间差不少,即欠拟合)的时候,那么增加训练集的大小效果就不明显了,我们就需要去做其他地方的改动了。
如下图,当模型具有高方差(Jtrain和Jcv之间差不少,即过拟合)的时候,那么增加训练集的大小效果可能就会不错。
通过本节的学习让我们知道学习曲线(偏差和方差)可以帮助我们对我们的模型的不足提供改进的思路。
这是我们之前提到过的6种概念模型的可以尝试的方法,现在我们来看看到底哪些适合解决高偏差,哪些又适合解决高方差。
以增大lambda为例来分析,增大lambda,当lambda很大的时候,W就小,那么就会出现欠拟合的现象,所以这么想的话,增大lambda,就是朝着欠拟合的方向发展,所以当过拟合的时候,咱们就可以考虑增大lambda,让模型别那么过拟合。其他的也可这么分析一下,真不戳!
大的神经网络对于训练集不是很大的情况,通常可以较好的拟合数据,且具有低偏差,但是大型的神经网络容易造成高方差问题吗?事实证明,一个具有良好正则化的大型神经网络通常比小的做的更好。
下面是我们构建模型时的一个流程图
Tensorflow中实现:
本节总结:只要进行适当的正则化,那么一个大的神经网络其实也没什么坏处,只不过会减慢运算速度。