1. 神经网络更新参数方法
1.1 随机梯度下降法(Stochastic gradient descent)SGD
前提:神经网络存在合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为“学习”
Step 1 : mini-batch
从训练数据中随机选出一部分数据(mini-batch),目标是减小mini-batch的损失函数的值
Step 2 : 计算梯度
求出各个权重参数的梯度——损失函数的值减小最多的方向
Step 3 : 更新参数
将权重参数沿梯度方向进行微小更新
Step 4 : 重复123
缺点:如果函数形状非均向(呈延伸状),搜索的路径非常低效,根本原因是SGD梯度的方向并没有指向最小值方向。(呈“之”字形朝最小值移动,效率低)
1.2 Momentum
与SGD相比,更快地靠近最小值,减弱“之”字形的变动程度。
1.3 AdaGrad
为参数的每个元素适当地调整学习率,与此同时进行学习。
按参数的元素进行学习率衰减,使变动大的参数学习率逐渐减小,“之”字形变动程度有所衰减。
AdaGrad会记录过去所有梯度的平方和,因此学习越深入,更新幅度越小,若无止境的学习,更新量就会变成零。
RMSProp方法:不是将过去所有梯度一视同仁地相加,而是逐渐地忘记过去的梯度,在做加法运算时将新的梯度信息更多地反映出来。
1.4 Adam
Momentum——参照小球在碗中滚动的物理规则进行移动
AdaGrad——参数的每个元素适当地调整更新步伐
将两者融合——3个超参数:学习率、Momentum系数β1、Momentum系数β2
总结:以上四种方法,各有各的特点,目前并不存在能在所有问题中都表现良好的方法。
2. 权重的初始值
将权重初始值设为零? NO!
将权重初始值设为一样的值? NO!(在误差反向传播中,所有的权重值都会进行相同的更新)
为了防止“权重均一化”,必须随机生成初始值:0.01*np.randam.randn(10,100)
各层的激活值的分布都要求有适当地广度,通过在各层间传递多样性的数据,神经网络可以进行高效的学习,反之,若传递的是有所偏向的数据,就会出现梯度消失或“表现力受限”。
3. Batch Normalization
-
使学习快速进行(增大学习率)
-
不那么依赖初始值
-
抑制过拟合(降低Dropout等必要性)
思路:调整各层的激活值分布使其拥有适当的广度
四、正则化
过拟合的原因:①模型拥有大量的参数,表现力强;②训练数据少。
五、超参数的验证
超参数:神经元数量、batch大小、学习率、权值衰减等
不能使用测试集评估超参数的性能(对测试集发生过拟合)
超参数的最优化:
- step1: 设定超参数的范围
- step2: 从设定的范围中随机取样
- step3: 使用2中采样到的超参数值进行学习,通过验证数据评估识别精度
- step4: 重复2、3,根据识别精度结果缩小超参数的范围