深度学习入门笔记 Day9/15 与学习相关的技巧(一)
一、为什么SGD不够完美
1. 在输入参数的系数相差较为巨大的时候,比如: 的时候,由于参数
变化对于y的影响比参数
变化要小得多,那么在更新参数的时候,对于x1的更新就很不明显,虽然上式的最小值明显在
处,但是如果选择初始值
可能最终收敛到的地方是
。
2. 学习率对SGD影响也很大,如果选择得过大,可能最终无法收敛;选择得不适合,可能收敛速度很慢;选择得过小,学习效率太低。
二、什么是Momentum、AdaGrad、Adam方法,这些优化器孰优孰劣?
Momentum:
AdaGrad:
Adam: 融合了Momentum和AdaGrad方法。
下面是四种方法在MNIST数据集上的比较:与 SGD 相比,其他 3 种方法学习得更快,而且速度基本相同,仔细看的话,AdaGrad 的学习进行得稍微快一点。这个实验需要注意的地方是,实验结果会随学习率等超参数、神经网络的结构(几层深等)的不同而发生变化。不过,一般而言,与 SGD 相比,其他 3 种方法可以学习得更快,有时最终的识别精度也更高。
三、如何设定好的权重初始值?
1. 权重的初始值不要全部设为0,会导致对称结构,使得权重无法更新;
2. 剩下两个还没理解。
四、如何用Batch normalization加速学习?
Batch Norm,顾名思义,以进行学习时的 mini-batch 为单位,按 mini-batch 进行正规化。具体而言,就是进行使数据分布的均值为 0、方差为 1 的正规化。用数学式表示的话,如下所示。将 mini-batch 的输入数据 变换为均值为 0、方差为 1 的数据
。通过将这个处理插入到**函数的前面(或者后面),可以减小数据分布的偏向。