#【归一化】
1.归一化的概率和作用
1.1 什么是归一化
1.2.归一化的作用
-
除去量纲的干扰
去均值与归一化,加速梯度下降的求解速度
-
重新调整数据分布
深度网络中数据分布如果在某一层开始有明显的偏移,会使接下来这一问题加剧
2.常用的归一化
2.1. Batch Normalization
2.2.Batch Normalization的好处
1-减轻了对参数初始化的依赖
2-训练更快,可以使用更高的学习率
3-一定程度上增加了泛化能力,drop等技术不再需要
2.3.Batch Normalization的缺点
1-对小的Batch敏感,不适合在线学习等使用单例进行模型参数更新的场景
2-不合适 rnn 等动态的网络结构,同一个batch中训练实例又长又短
2.3. Batch Normalization改进
- batch renormalization,增加样本相关的变换
x i ′ = x i − μ β σ β ⋅ r + d r = σ β σ , d = μ β − μ σ x_{i}^{\prime}=\frac{x_{i}-\mu_{\beta}}{\sigma_{\beta}} \cdot \mathrm{r}+\mathrm{d} \quad r=\frac{\sigma_{\beta}}{\sigma}, \mathrm{d}=\frac{\mu_{\beta}-\mu}{\sigma} xi′=σβxi−μβ⋅r+dr=σσβ,d=σμβ−μ
μ : = μ + α ( μ β − μ ) σ : = σ + α ( σ β − σ ) \mu :=\mu+\alpha\left(\mu_{\beta}-\mu\right) \\\sigma :=\sigma+\alpha\left(\sigma_{\beta}-\sigma\right) μ:=μ+α(μβ−μ)σ:=σ+α(σβ−σ)
实际的使用:
- 先使用 BN 训练到一个相对稳定的状态
- 稳定后再使用Batch Renormalization ,r和d在一定大小范围内迭代
2.4.其他Normalization
3.关于归一化的思考
3.1.为什么归一化有效
- 调整了数据的分布,保证了梯度的有效性
- 可以使用更大的学习率,跳出不好的局部极值,增强泛化能力
- 平滑了损失平面,减少了局部值,降低了优化的困难