神经网络中使用Batch Normalization 解决梯度问题

时间:2023-03-09 06:54:15
神经网络中使用Batch Normalization 解决梯度问题

BN本质上解决的是反向传播过程中的梯度问题。

详细点说,反向传播时经过该层的梯度是要乘以该层的参数的,即前向有:

神经网络中使用Batch Normalization 解决梯度问题

那么反向传播时便有:

神经网络中使用Batch Normalization 解决梯度问题

那么考虑从l层传到k层的情况,有:

神经网络中使用Batch Normalization 解决梯度问题

上面这个 神经网络中使用Batch Normalization 解决梯度问题 便是问题所在。因为网络层很深,如果 神经网络中使用Batch Normalization 解决梯度问题 大多小于1,那么传到这里的时候梯度会变得很小比如 神经网络中使用Batch Normalization 解决梯度问题 ;而如果 神经网络中使用Batch Normalization 解决梯度问题 又大多大于1,那么传到这里的时候又会有梯度爆炸问题 比如神经网络中使用Batch Normalization 解决梯度问题 。BN所做的就是解决这个梯度传播的问题,因为BN作用抹去了w的scale影响。

具体有:

神经网络中使用Batch Normalization 解决梯度问题神经网络中使用Batch Normalization 解决梯度问题(神经网络中使用Batch Normalization 解决梯度问题) = 神经网络中使用Batch Normalization 解决梯度问题(神经网络中使用Batch Normalization 解决梯度问题)

那么反向求导时便有了:

神经网络中使用Batch Normalization 解决梯度问题神经网络中使用Batch Normalization 解决梯度问题神经网络中使用Batch Normalization 解决梯度问题

可以看到此时反向传播乘以的数不再和 神经网络中使用Batch Normalization 解决梯度问题 的尺度相关,也就是说尽管我们在更新过程中改变了 神经网络中使用Batch Normalization 解决梯度问题 的值,但是反向传播的梯度却不受影响。更进一步:

神经网络中使用Batch Normalization 解决梯度问题

即尺度较大的 神经网络中使用Batch Normalization 解决梯度问题 将获得一个较小的梯度,在同等的学习速率下其获得的更新更少,这样使得整体 神经网络中使用Batch Normalization 解决梯度问题 的更新更加稳健起来。

总结起来就是BN解决了反向传播过程中的梯度问题(梯度消失和爆炸),同时使得不同scale的 神经网络中使用Batch Normalization 解决梯度问题 整体更新步调更一致。