吴恩达 深度学习 CLass2 Week1 总结
Practical aspects of Deep Learning
Class1-Week2共11节课,介绍了神经网络实际运用过程中涉及的一些概念和优化方法:
- 数据集的划分(train/dev/test)
- 偏差/方差(欠拟合/过拟合)概念与优化途径
解决过拟合(方差过大)问题的一些途径:
-Regularization/Dropout/Data augmentation/Early stopping输入集及参数的处理:Normalize/He initialize
- 梯度检验:利用数值计算检验梯度计算是否正确(只在调试时使用)
1.数据集划分
- Train set: 用于训练模型
- Dev set: 用于选择模型
- Test set: 作为对未知数据集的无偏估计
因为Dev set/ Test set只是用于检验,因此只需保证其数量满足检验要求即可,可根据数据集的大小划分其所占比例。
- 当数据集较小时(如<10000):60% / 20%/ 20%
- 当数据集较大时:98/ 1/ 1 或者 99.5/ 0.25 / 0.25
注意:在实际运用过程中,需保证Dev set与Test set来自同一分布。
2.偏差/方差
在训练过程中,可能出现high bias(under-fitting)及high variance(over-fitting)的情况。
- high bias : Train set error 较大
- high variance : Dev set error 较大
通常我们希望Train set error / Dev set error 均较小(与human level相差不大)
那么如果出现了high bias or high variance应该怎么办呢?
- high bias ———> Bigger network / Train longer
- high variance—–> More data / Regularization
另:改变神经网络的结构也可能对上面的问题有效
3.过拟合解决方法
3.1 Regularization
对于神经网络,Regularization在于对cost function新增正则项:
正则项的引入是为了对参数W进行惩罚,避免其值过大。(假设:W越小,NN model越简单)
由于cost function引入了正则项,在backpropagation中,也要进行相应运算,详见上图。
3.2 Dropout
Dropout:即在每次遍历各层节点时,以一定概率keep_prop随机删除每一层中一部分节点,只利用剩余的节点完成计算。
注意:在做预测时,不适用Dropout,因为我们不希望预测的结果是随机的。
4.输入集及参数处理
4.1 Normalizing inputs
Normalizing traing sets包括两个步骤:
- 减去平均值(zero mean)
- normalize variance
这样做是为了获得均值为0 方差为σ平方 的数据分布,使特征值处于相似的范围内,有利于优化算法的进行。
4.2 weight initialization
He initialize ; Xavier initialize