06 深度学习之相关技巧
1.参数的更新
神经网络的学习的目的是找到使损失函数的值尽可能小的参数,解决这个问题的过程称为最优化。
SGD
随机梯度下降法的缺点:如果函数的形状非均向(anisotropic),比如呈延伸状,搜索的路径就会非常低效。SGD低效的根本原因是,梯度的方向并没有指向最小值的方向。
Momentum(动量)
Momentum参照小球在碗中滚动的物理规则进行移动。

AdaGrad
AdaGrad为参数的每个元素适当地调整更新步伐。
(1)学习率衰减方法
即随着学习的进行,使学习率逐渐减小。AdaGrad会为参数的每个元素适当地调整学习率,与此同时进行学习。
(2)数学式

(3)参数更新
在更新参数时,通过乘以1/根号h,就可以调整学习的尺度。可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。
Adam
直观地讲,就是融合了 Momentum和 AdaGrad的方法,实现参数空间的高效搜索。
各优化方法的比较图

2.权重的初始值
隐藏层的激活值的分布,层次加深的深度学习中,梯度消失的问题可能会更加严重。
ReLU的权重初始值
3.Batch Normalization
优点:
(1)可以使学习快速进行(可以增大学习率)。
(2)不那么依赖初始值(对于初始值不用那么神经质)。
(3)抑制过拟合(降低Dropout等的必要性)。
数学式


结论
通过使用 Batch Norm,可以推动学习的进行。并且,对权重初始值变得健壮(“对初始值健壮”表示不那么依赖初始值)。
3.正则化
过拟合
模型拥有大量参数、表现力强。训练数据少。
权值衰减
权值衰减是一直以来经常被使用的一种抑制过拟合的方法,该方法通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。
解决方法:L2范数的权值衰减方法。
Dropout
Dropout是一种在学习的过程中随机删除神经元的方法选出隐藏层的神经元,然后将其删除。Dropout 将集成学习的效果(模拟地)通过一个网络实现了。
4.超参数的验证
超参数
比如各层的神经元数量、batch大小、参数更新时的学习率或权值衰减等。
验证数据
调整超参数时,必须使用超参数专用的确认数据。训练数据用于参数(权重和偏置)的学习,验证数据用于超参数的性能评估。
超参数的最优化
步骤0 设定超参数的范围。
步骤1 从设定的超参数范围中随机采样。
步骤2 使用步骤1中采样到的超参数的值进行学习,通过验证数据评估识别精度(但是要将epoch设置得很小)。
步骤3 重复步骤1和步骤2(100次等),根据它们的识别精度的结果,缩小超参数的范围。