本课程分为三周内容:
- 深度学习的使用层面
- 优化算法
- 超参数调试、Batch正则化和程序框架
WEEK1 深度学习的使用层面
1.创建神经网络时选择:
神经网络层数
每层隐藏单元的个数
学习率为多少
各层采用的激活函数为哪些
2. 深度学习应用层面有
自然语言处理NLP、计算机视觉Vision、语音识别Speech、结构化数据等。
3. 数据分类:训练集、 验证集、测试集
4. 数据的获取方式:网页抓取等
5. 分析训练集训练算法产生的误差和验证集验证算法产生的误差,来判断算法是否存在高偏差或高方差
6. 当出现高偏差时,应换更大的神经网络,或更多隐藏单元,更长时间更先进算法等等,反复尝试直至低方差。
7. 当出现高方差时,应采用更多数据,或采用正则化来减少过拟合,或更先进的算法等等。
8. 通常用训练验证集来诊断算法是否存在偏差或方差。
9. L2正则化是最常见的正则化类型。如果使用L1正则化,W最终会是稀疏的。正则化参数通常使用验证集或交叉验证。
10. 神经网络加正则化,是给损失函数加范数平方公式。范数由backprop函数给出对w的偏导数求得。
11. 如果正则化参数变得很大,参数W很小,z也会相对变小。如果J已经有一个全新的定义,你用的是原函数J,也就是第一个正则化项,可能会看不到单调递减现象。因此,为了调试地图下降,务必使用新定义的函数,它包含第二个正则化项。
12. 另一个实用的正则化方法——dropout(随机失活)。它可以随机删除网络中的神经单元。通L2正则化,实施后会压缩权重,并完成一些预防过拟合的外层正则化。dropout需要设置每一次的keep-prob值,即每层剩余比例。其在计算机视觉领域应用广泛。缺点是代价函数J不再被明确定义
13. early stopping,提早结束神经网络,获得合适的W值。
14. 机器学习包括几个步骤:1,选择一个算法来优化代价函数J,可用梯度下降法,Momentum,RMSprop和Adam等等;2,优化代价函数J后,如果发生过拟合,可通过正则化、扩增数据等;3,超参数激增,选出可行算法变得复杂,如果用一组优化代价函数J,机器学习会变得简单。优化时只需关注W和b,J(w,b)的值越小越好。只需要减少这个值,不用关注其他的。预防过拟合还可以减少方差。
15. 训练神经网络时,其中一个加速训练的方法就是归一化输入。其有两个步骤:第一步是零均值化,即移动训练集,直到它完成零处置化。第二步是归一化方差。目的是让代价函数J优化起来更简单更快速。尤其是面对输入值的范围有很大的差异时。
16. 在训练深层神经网络时面对的一个问题:梯度消失或梯度爆炸。即导数或坡度有时会变得非常大,或非常小。权重的变化,导致超参数呈现指数级增长或下降。这个问题需要通过为权重矩阵初始化合理值。
17. 反向传播backprop时,有一个梯度检验,作用是确保backprop正确实施。剃度逼近时,使用双边误差的方法更逼近导数,结果也最准确。
18. 使用双边误差,来判断函数是否实现了正确的偏导。用这个方法可以检验反向传播是否得以正确实施。
19. 梯度检验只能用于调试bug,不能用于训练。如果算法的梯度检验失败,要检查所有项,并试着找出bug。一般关闭 dropout用梯度检验进行双重检查。
WEEK2 优化算法
- 优化算法,使神经网络运行得更快。
- 机器学习的应用是一个高度依赖经验的过程。
- Mini-batch梯度下降法。使用batch梯度下降法,一次遍历训练集只能让你做一个梯度下降。使用Mini-batch梯度下降法,一次遍历训练集,能够做所需个数的梯度下降。多次遍历训练集还需要一个while循环设置另一个for循环。从而一直处理训练集,直到最后收敛到一个合适的精度。Mini-batch的值要取合适,1则随机,有波动;m则为baich梯度下降。选取原则:当训练数据集过小时,直接使用batch梯度下降法,小于2000个;过大时,Mini-batch,64-512大小,设置为2的次方,代码运行速度较快。此时输入和输出要符合GPU/CPU。
- 指数加权平均
- 指数加权平均的偏差修正
- 动量梯度下降法momentum
- RMSprop
- Adam 优化算法
- 学习率衰减,学习率的设置,指数衰减。
WEEK3 超参数调试
- 调试处理,取值的优先次序。随机初始化,粗糙到精细的搜索过程。
- 为超参数选择合适的范围
- 正则化网络的激活函数
- 将Batch Norm拟合进神经网络
- Softmax回归
- 训练一个Softmax
- 深度学习框架
- TensorFlow