本节主要关注卷积神经网络发展过程中具有里程碑意义的基础模块,了解它们的原理和设计细节
1. 批归一化
在机器学习中,一般会假设模型的输入数据的分布是稳定的。如果这个假设不成立,即模型输入数据的分布发生变化,则称为协变量偏移。模型的训练集和测试集的分布不一致,或者模型在训练过程中输入数据的分布发生变化,这些都属于协变量偏移现象。
同样,对于一个复杂的机器学习系统,在训练过程中一般也会要求系统里的各个子模块的输入分布是稳定的,如果不满足,则称为内部协变量偏移。对于深度神经网络,其在训练过程中,每一层的参数都会随之更新。以第 i 层为例,其输入数据与之前所有层(第 1 层到第 i - 1 层)的网络参数取值都有很大关系;在训练过程中,如果之前层的参数被更新后,第 i 层的输入数据的分布必然也会发生变化此即为内部协变量偏移。网络越深,这种现象越明显。
内部协变量偏移会给深度神经网络的训练过程带来诸多问题:
- 网络每一层需要不断适应输入数据的分布的变化,这会影响学习效率,并使学习过程变得不稳定。
- 网络前几层参数的更新,很可能使得后几层的输入数据变得过大或者过小,从而掉进激活函数的饱和区,导致学习过程过早停止。
- 为了尽量降低内部协变量偏移带来的影响,网络参数的更新需要更加谨慎,在实际应用中一般会采用较小的学习率(避免参数更新过快),而这会降低收敛速度。
- 在之前的网络训练过程中,一般会采用非饱和型激活函数(如 ReLU)、精细的网络参数初始化、保守的学习率等方法来降低内部协变量偏移带来的影响。这些方法会使网络的学习速度太慢,并且最终效果也特别依赖于网络的初始化。
批归一化就是为了解决上述问题而提出的:它的主要作用是确保网络中的各层,即使参数发生了变化,其输入/输出数据的分布也不能产生较大变化,从而避免发生内部协变量偏移现象。采用批归一化后,深度神经网络的训练过程更加稳定,对初始值不再那么敏感,可以采用较大的学习率来加速收敛。
批归一化可以看作带参数的标准化,具体公式为
y(k)=γ(k)x(k)−μ(k)(σ(k))2+ε+β(k)(1.1) y^{(k)}=\gamma^{(k)} \frac{x^{(k)}-\mu^{(k)}}{\sqrt{\left(\sigma^{(k)}\right)^{2}+\varepsilon}}+\beta^{(k)}\tag{1.1} y(k)=γ(k)(σ(k))

最低0.47元/天 解锁文章
2387

被折叠的 条评论
为什么被折叠?



