误差反向传播法
Affine 层(仿射变换)
神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换”
注:在affine层的反向传播过程中要注意矩阵形状
梯度确认(gradient check)
确认数值微分求出的梯度结果和误差反向传播法求出的结果是否一致的操作
用于确认误差反向传播法的实现是否正确
与学习相关的技巧
最优化
解决“寻找最优参数的问题”的过程
SGD
$$
W= W-η\frac{\partial L}{\partial W}
$$
缺点
如果函数的形状非均向(anisotropic),搜索的路径就会非常低效
抵消的根本原因:梯度的方向并没有指向最小值的方向
Momentum
$$
v=\alpha v - \eta \frac{\partial L}{\partial W}
$$$$
W=W+v
$$
AdaGrad
$$
h=h+\frac{\partial L}{\partial W} .\frac{\partial L}{\partial W}
$$$$
W=W-\eta \frac{1}{h^{\frac{1}{2}}}\frac{\partial L}{\partial W}
$$
AdaGrad会记录过去所有梯度的平方和。因此,学习越深入,更新的幅度就越小。实际上,如果无止境的学习,更新量就会变成零
Adam
融合了Momentum和AdaGrad方法。通过组合前面两个方法的优点,有望实现参数空间的高效搜索
特征:超参数的“偏置校正”
权重的初始值
将权重设置为0的问题
如果将权重设置为零,那么下一层的神经元会杯传递相同的值,从而达不到学习的效果(乘法反向传播的例子),则在反向传播时第二层的权重进行同样的更新,这使得神经网络拥有许多不同的权重的意义丧失了。即防止“权重均一化”(瓦解权重的对称结构)
梯度消失(梯度爆炸)
在运用链式法则时,由于运算时以连乘的形式进行,所以当层数很深时,随着层数的增加,计算出的梯度会指数级变化,如果是往小了变,就出现了梯度消失现象,如果是往大了变,就出现了梯度爆炸现象
表现力受限
当传递给神经元的是有所偏向的数据时,有可能会出现表现力受限的问题,即多个神经元输出相同的结果,那同样可以由一个神经元完成的事情无疑令这些神经元的存在变得无意义
Xavier初始值
如果前一层的节点数为n,则初始值使用标准差为1/(n^(1/2))的分布
ReLU的权重初始值
当激活函数使用ReLU时,一般推荐使用ReLU专用的初始值,也称为“He初始值”
He初始值使用标准差为(2/n)^(1/2)的高斯分布
Batch Nomalization (Batch Norm)
以进行学习时的mini-batch为单位,按mini-batch进行正规化
进行使数据分布的均值为0,方差为1的正规化
$$
\mu B=\frac{1}{m}\Sigma^m{i=1}x_i
$$$$
\sigma ^2_B=\frac{1}{m}\Sigma^m_{i=1}(x_i-\mu_B)^2
$$$$
x_i=\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}
$$
优点:
- 可以使学习快速进行(可以增大学习率)
- 不那么依赖初始值(对于初始值不用那么神经质)
- 抑制过拟合(降低Dropou等的必要性)
过拟合
只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据的状态
原因
- 模型拥有大量参数,表现力强
- 训练数据少
权值衰减
通过在学习的过程中对大的权重进行惩罚,来抑制过拟合
例:为损失函数加上权重的平方范数(1/2λW^2)
Dropout
Dropout是一种在学习的过程中随机删除神经元的方法。训练时,随机选出隐藏层的神经元,然后将其删除。被删除的神经元不再进行信号的传递