DeepLearning.ai学习笔记——改善深层神经网络:超参数调试、正则化以及优化(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivizhangyan/article/details/81191892

深度学习的实践应用

(1)在神经网络中,如何确定神经网络分为多少层,每层含有多少个隐藏单元,学习率是多少,各层采用的的激活函数有哪些?
(2)如何创建一个机器学习项目?
a.创建一个特定层数,隐藏单元数量或者数据集个数的神经网路
b.编码
c.运行或测试神经网络模型的运行结果
d.根据结果完善想法,改变策略,迭代更新自己的方案。
**应用深度学习中,需要多次循环迭代过程效率是决定项目进度速度的关键因素。

训练,验证,测试集*
1.机器学习中小数据量,通常将数据按照60%,20%,20%划分为训练集,验证集,测试集
2.大数据时代,通常会将训练集设为98%,测试集和验证集分别为1%。
3.现代深度学习汇总,训练集和测试集分布不匹配(数据的情况不一致,清晰度不一样)时,需要尝试不同的模型,在验证集评估这些模型,迭代出适用的模型,(不属于无偏估计的情况)
训练集:训练模型
验证集:验证不同的算法,判断哪种算法更有效
测试集:正确评估模型算法的性能
偏差和方差
1. 一个数据集中,不能很好的进行拟合,这种情况成为“欠拟合”,在数据集中的表现为训练集误差比较大,即高偏差
2. 数据集被复杂的分类器拟合,可能会出现“过拟合”,在数据集中表现为验证集的误差率很高,即高方差。
在神经网络训练时,通常可以查看训练集的误差,判断数据的拟合情况,确定是否是偏差问题,,错误率有多高,完成训练集的训练时,再开始使用验证集进行验证,判断方差是否过高。
在训练神经网络模型中,出现高偏差或者高方差的怎么处理
1.偏差较高,则考虑需要选择新的神经网络,直至可以拟合数据集
2.解决偏差后,确定方差是否过高,若方差较高,可以采用两种方式进行解决:
(1)采用更多数据
(2)引入正则化
正则化(解决过拟合问题)
1.作用原理
正则化用于代价函数中,通常我们需要求代价函数的最小值,添加一个正则化项,前面乘以正则化参数,如下所示:

J ( w , b ) = 1 m i = 1 m L ( y ^ ( i ) y ( i ) ) + λ 2 m w 2 2

λ 值很大的时候,为了保持代价函数尽可能小,所以w的值也在一定程度较小,激活函数的参数也会变小,这样可以预防权重过大,从而可以避免过拟合或者减少网络误差。
2.L2正则化
上面公式就是L2正则化的一种表示,2范数是求矩阵所有元素的平方求和,不选择L1正则化的原因是会使得w变得稀疏,但是没有降低太多储存内存。
如何在神经网络中实现L2正则化?具体细节还有待于我具体研究清楚。
3.dropout(随机失活)正则化
(1)基本思想:
a遍历网络中每一层,设置消除神经网络汇总节点概率(精简网络)
b消除一些节点,和删除从该节点进出的连线
c用backprop方法进行训练
(2)如何实现dropout(inverted dropout)
a. 定义向量d,表示dropout向量,然后看它是否小于某数(keep-prop:保留某个隐藏单元的概率)
b.获取激活函数,与向量d相乘,把相应的元素输出
c.然后将对应的激活函数胡差异keep-prop.
(3)如何理解dropout
dropout:压缩权重
L2正则化; 权重衰减。
4.其他正则化方法
(1)数据扩增:对训练数据集进行翻转,裁剪增加图片数据量
(2)early stopping
5.加速训练的方法
归一化输入:零均值和归一化方差

猜你喜欢

转载自blog.csdn.net/vivizhangyan/article/details/81191892