深度学习入门笔记 Day9/15 与学习相关的技巧(一)

一、为什么SGD不够完美

1. 在输入参数的系数相差较为巨大的时候,比如:y=\frac{1}{20}x_1^2+x_2^2 的时候,由于参数 x_1 变化对于y的影响比参数 x_2 变化要小得多,那么在更新参数的时候,对于x1的更新就很不明显,虽然上式的最小值明显在x=[0,0] 处,但是如果选择初始值x=[1,1] 可能最终收敛到的地方是x=[1,0]

2. 学习率对SGD影响也很大,如果选择得过大,可能最终无法收敛;选择得不适合,可能收敛速度很慢;选择得过小,学习效率太低。

二、什么是Momentum、AdaGrad、Adam方法,这些优化器孰优孰劣?

Momentum:  \boldmath{v} \leftarrow \alpha \bm{v} - \eta ({\partial L}/{\partial \bm{W }})  \bm{W} \leftarrow \bm{W} +\bm{v}

AdaGrad:  \bm{h} \leftarrow \bm{h} + ( {\partial L}/{\partial \bm{W}}) \odot ( {\partial L}/{\partial \bm{W}})  \bm{W} \leftarrow \bm{W} - \eta(1/\sqrt{\bm{h}})(\partial L/\partial \bm W)

Adam: 融合了Momentum和AdaGrad方法。

下面是四种方法在MNIST数据集上的比较:与 SGD 相比,其他 3 种方法学习得更快,而且速度基本相同,仔细看的话,AdaGrad 的学习进行得稍微快一点。这个实验需要注意的地方是,实验结果会随学习率等超参数、神经网络的结构(几层深等)的不同而发生变化。不过,一般而言,与 SGD 相比,其他 3 种方法可以学习得更快,有时最终的识别精度也更高。

 

深度学习入门笔记 Day9/15 与学习相关的技巧(一)_第1张图片

三、如何设定好的权重初始值?

1. 权重的初始值不要全部设为0,会导致对称结构,使得权重无法更新;

2. 剩下两个还没理解。

四、如何用Batch normalization加速学习?

Batch Norm,顾名思义,以进行学习时的 mini-batch 为单位,按 mini-batch 进行正规化。具体而言,就是进行使数据分布的均值为 0、方差为 1 的正规化。用数学式表示的话,如下所示。将 mini-batch 的输入数据 {x_1,x_2\cdots,x_m} 变换为均值为 0、方差为 1 的数据 {\hat{x}_1,\hat{x}_2\cdots,\hat{x}_m}。通过将这个处理插入到激活函数的前面(或者后面),可以减小数据分布的偏向。

深度学习入门笔记 Day9/15 与学习相关的技巧(一)_第2张图片

 

你可能感兴趣的:(深度学习入门)