梯度消失和梯度爆炸 :W取值大于1或者小于1,在深度过高时,其计算的值要么趋于无穷大,要么趋于0.
选择合适的W初始值。前一层神经元越多(即下一层输入数据的特征越多,每个神经元权重分量越多),为了确保下一层神经元计算的Z值不要太大,选择w越小。[文章](/red_stone1/article/details/78208851])有讲解
梯度检查 :可以采用导数的定义查看梯度计算是否正确
batch梯度下降 :在整个训练集上进行训练,每次进行一次梯度下降
mini-batch 梯度下降 :将训练集进行划分成若干等份,每份子集进行一次梯度下降。适用于训练集过大的情况。
Epoch :在训练集上完整地训练一次被称为一次epoch
SGD :每次针对一个测试实例进行梯度下降
不同训练场景下,cost函数变化:Batch 平稳下降,mini-batch震荡下降
怎样减小震荡下降的幅度? 在梯度下降基础上,引入新的优化算法
动量梯度下降算法 :基于指数加权平均,使W、b变化尽可能平滑
RMSprop :也是使W,b并尽可能平滑,每次梯度下降时
d
w
d_w
d w 要除以
S
w
\sqrt{S_{w}}
S w
S
w
=
β
S
d
w
+
(
1
−
β
)
d
w
2
S_{w} = \beta S_{dw} + (1-\beta)d_w^2
S w = β S d w + ( 1 − β ) d w 2
Adam优化算法 :动量梯度下降与RMSprop结合
学习率递减 :随着epoch增加,
α
\alpha
α 逐渐减小
局部最小值问题 与鞍点
随机化选择超参数进行Tuning :尝试更多的超参数组合,避免网格化超参数tuning不同种类超参数的重要性不同,对于每个超参数都要尽量尝试更多的取值,并在tuning过程中逐步缩小范围
linear scale vs log scale 进行超参数取值
Batch Normalization :在神经网络每一层,对
Z
Z
Z 进行标准化处理后,通过两个可以训练的参数
γ
\gamma
γ 和
β
\beta
β 来*设置
Z
Z
Z 的方差和均值。 从原论文中有以下公式: