吴恩达deeplearning.ai课程系列笔记05(上)
#本文内容部分来自网络,只为自己学习以及分享供更多的人学习使用
1、训练、验证、测试集(Training set/dev set/test set)
-
训练集(train set):用训练集对算法或模型进行训练过程;
-
验证集(development set):利用验证集或者又称为简单交叉验证集(hold-out cross validation set)进行交叉验证,选择出最好的模型;
-
测试集(test set):最后利用测试集对模型进行测试,获取模型运行的无偏估计。
在数据划分比例需要注意的问题:大数据时代,我们很容易有上百万甚至上千万的数据,这时假设我们使用训练集模拟出了若干个模型,现在需要比较不同模型的拟合效果,如果仍然将原数据的20%作为验证集,那么这将是一非常大的数据量,其实是没必要,因为一般来说只要选取一万或者几万(即1%-3%)的数据就可以了。
如果训练/测试集分布不匹配的时候,我们最好是让验证集数据与测试集数据同分布。
另外,如果确实没有测试集,在有些情况下(如果不需要用无偏估计来评估模型的性能)也是okay的,不过,验证集不可缺少。
2、偏差、方差
看图说话:
在欠拟合(underfitting)的情况下,出现高偏差(high bias)的情况;在过拟合(overfitting)的情况下,出现高方差(high variance)的情况。
现实情况中,我们要注意权衡bias和variance的关系。因为一味地追求低bias的时候,可能会发生过拟合的情况,而一味追求低variance的时候,又有可能会造成欠拟合的情况。
最好的情况应该属于图中间的情况,当bias和variance都位于可承受的范围之内的时候,才算达到了比较好的效果。
3、机器学习基础
- 上面图有点粗糙(o(╯□╰)o),稍微解释下:
-
High bias ?
- 增加网络结构,如增加隐藏层数目或者隐藏层层数;
- 训练更长时间;
- 寻找合适的网络架构,使用更大的NN结构;
-
High variance ?
- 获取更多的数据;
- 正则化( regularization);
- 寻找合适的网络结构;
正则化是在 Cost function 中加入一项正则化项,惩罚模型的复杂度。
当方差较大出现过拟合的情况的时候,其实就是因为某些数据的权重过大,所以我们需要改善模型,使其更加平缓,这样才更具有普适性。
比较典型的用法为L2正则化,通过对参数进行衰减处理,使得方差在一定程度上减小
对于正则化的直观性理解:
如图所示,如果出现了图3中过拟合的现象,当我们给定一个较大的 λ
为了使得cost比较小,必然会减小w的值,这样就相当于弱化了很多神经元的影响,从来使得模型更加平缓。
至于数学上的解释:
从图中可以看出,当横坐标的值为0左右的时候,函数呈现比较明显的线性关系。
回到我们的正则化过程中来看,当正则化的w值变小,接近于0的时候,z=wx+b, z也是最小的时候,这样的情况下,**函数近似于线性函数,而整个模型则更加趋近于线性网络。