数据处理
我们知道在神经网络中,通常需要对样本数据进行预处理(Z-score standardization)、对各层中间隐层进行normalization(如Batch-normalization、layer-normalization等),这些操作都涉及biasing和scaling操作,那为什么需要这些操作?
我们知道,每个神经元输出都是输入的线性组合z经过线性/非线性变换得到的
可以把梯度理解成是输入对输出贡献的力度,梯度大小是与输入数值大小息息相关的,中间输出z对参数W的梯度等于输入向量X,而神经网络使用梯度下降法来训练更新参数W,也即参数W的更新大小与方向与输入向量X是线性的;
- 当输入向量X严重偏向某些维度时,参数W的更新同样也会严重偏向这些维度,也即会形成类似zig-zag形的更新路径,从而严重影响收敛速度,如下左图所示,为了避免这种情况,通常需要对数据进行scaling,对样本数据来说便是去量纲化。
- 另外,