吴恩达深度学习课程——改善深层神经网络

一、深度学习的实用层面

1. 训练集(train set)、验证集(development set)、测试集(test set)

2.偏置(bias)与方差(variance)


bias-variance trade-off:根据训练集验证集误差来判断


3. 正则化(避免过拟合)

1. L2正则化

正则化作用的直观理解:


2. Dropout正则化(inverted dropout随机反向失活)

修正或弥补所需的那20%,确保期望值不变


测试阶段不使用Dropout


单元的输入可能被随机清除,不愿意把所有赌注放在一个节点上,产生收缩权重的平方范数的效果
(1)除非算法过拟合,不然不会使用

(2)其缺点是代价函数J不再被明确定义,失去了调试工具。通常先关闭dropout,确保J单调递减,再打开dropout函数。

3. Data augmentation(数据扩增)

4. Early stopping

提早停止训练神经网络,选择参数W范数较小的神经网络

机器学习包括几个步骤:
(1)选择一个算法来优化代价函数J
(2)避免过拟合
也称正交化(Orthogonalization):在一个时间做一个任务。
其缺点是不能独立地处理这两个问题,没有采取不同的方式来解决这两个问题,而是用一种方法同时解决两个问题。

如果不用early stopping,另一种方法是L2正则化。

4.正则化输入

(1)零均值化
(2)归一化方差

注:训练集和测试集归一化的均值和方差相同


如果特征值范围相差很大,则必须使用一个非常小的学习率,学习算法运行得慢

5. 梯度消失与梯度爆炸

权重W只比1略大一点,深度神经网络的激活函数将爆炸式增长;略小一点,激活函数将以指数级递减。

梯度下降算法的步长会非常非常小,将花费很长的时间来学习

6. 权重初始化

调参优先级低

7. 梯度检验

在backprop中执行梯度检验,使用双边误差的方法更逼近导数



技巧:

二、优化算法

1.mini-batch梯度下降法



one epoch一次遍历训练集


mini-batch大小的选择问题:

典型值:64~512(2的指数次方)

2.指数(移动)加权平均

一个大致的思考方向(非正式的数学证明):


相比直接平均的优点:只占单行数字的存储和内存,不用存储太多历史数据,只用带入最新数据。

偏差校正(让平均数运算更加准确)

当t很大时,偏差修正几乎没有作用。(此时本来紫线基本和绿线重合)

3.动量梯度下降法(Momentum)


纵轴上的摆动平均值接近于0,横轴方向的平均值仍然较大。因而几次迭代后,纵轴方向的摆动变小了,横轴方向运动更快(走了一条更加直接的路径,在抵达最小值的路上减少了摆动)。

在使用梯度下降法或者Momentum时,人们不会受到偏差修正的困扰。

4. RMSprop(root mean square)

纵轴方向的摆动较小,横轴方向继续前进。这样就可以用一个更大的学习率α,加快学习

为了确保数值稳定,加一个很小的数

与Momentum的相似之处:可以消除梯度下降中的摆动,允许使用一个更大的学习率,从而加快算法的学习速度。

5. Adam(Adaptive Moment Estimation)

尝试不同的α值,其他的取默认值就可以了

6. learning rate decay(学习率衰减)


7. 局部最优的问题

在高维空间中(maybe2000个参数),更多梯度为0的点不是局部最值(local optimum),而是鞍点(saddle point)

平稳段会减缓学习,这也是复杂的学习算法能够加速学习的地方。

猜你喜欢

转载自blog.csdn.net/eartha1995/article/details/80406580