神经网络实验与模型评估
1. 动量(Momentum)
动量在训练过程中通过添加前一个小批量用于更新权重的梯度值的一部分来改变权重更新。这个比例是前一个梯度值的乘数,范围在 [0, 1] 之间。
为了探究改变这个参数对训练的影响,进行了如下实验:
- 实验设置 :与之前 L2 正则化的方法类似,但固定 L2 权重 $\alpha = 0.0001$,改变动量参数 $\mu$。其他部分保持不变,如单轮训练、网络配置等。具体代码可参考 mnist_nn_experiments_momentum.py 。
- 探究的动量值 :[0.0, 0.3, 0.5, 0.7, 0.9, 0.99],从无动量项($\mu = 0$)到较大动量项($\mu = 0.99$)。
实验结果如图所示,可分为三个不同区域:
- 无动量或较小动量值($\mu = 0.3, \mu = 0.5$)时,测试集误差最高。
- 中等动量值($\mu = 0.7, \mu = 0.9$)时,包括“标准”(sklearn 默认)值 0.9,测试集误差有所改善。
- 较大动量值 0.99 时,测试集误差从约 7.5% 降至约 6%。
动量有助于提高性能,尤其是接近标准值 0.9 时。不过在实践中,人们很少大幅改变动量,但这个例子表明,有时它会对结果产生很大影响。
需要注意的是,当训练集严重限制为仅 3000 个样本(每个数字约 300 个)时,动量的影响更明显。将训练集大小增加到 30000 时,结果会有所不同,此时动量为 0.9
超级会员免费看
订阅专栏 解锁全文
13万+

被折叠的 条评论
为什么被折叠?



