吴恩达deeplearning.ai课程系列笔记05(上)

来源:互联网 发布:怎么知道胃不好知乎 编辑:程序博客网 时间:2024/05/22 15:09
#写在最前,deeplearning.ai系列课程相较于之前的Andrew Ng在coursera上2014发布的机器学习课程内容更加丰富。
重要的是此次课程示例代码都是用python来实现,不需要去熟悉octave,对大部分需要用python来学习机器学习的同学来说是个福音!
原课程视频请移步网易云课堂或者coursera上学习。

#本文内容部分来自网络,只为自己学习以及分享供更多的人学习使用微笑


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);
    • 寻找合适的网络结构;
4、正则化

正则化是在 Cost function 中加入一项正则化项,惩罚模型的复杂度。

当方差较大出现过拟合的情况的时候,其实就是因为某些数据的权重过大,所以我们需要改善模型,使其更加平缓,这样才更具有普适性。

比较典型的用法为L2正则化,通过对参数进行衰减处理,使得方差在一定程度上减小

对于正则化的直观性理解:


如图所示,如果出现了图3中过拟合的现象,当我们给定一个较大的 λ值得shi

为了使得cost比较小,必然会减小w的值,这样就相当于弱化了很多神经元的影响,从来使得模型更加平缓。

至于数学上的解释:


从图中可以看出,当横坐标的值为0左右的时候,函数呈现比较明显的线性关系。

回到我们的正则化过程中来看,当正则化的w值变小,接近于0的时候,z=wx+b, z也是最小的时候,这样的情况下,激活函数近似于线性函数,而整个模型则更加趋近于线性网络。


阅读全文
0 0