自动梯度求导:正向从下面数据往上走forward,但是你算backward时,是从上面往下传。问题:梯度在上面大,下面小(靠近数据位置)学习率是一个就是一个值,所以但是你下面层因为你梯度比较小,对你的权重的更新就比较少,那么你的问题就是说你的上面的东西会很快的,可能会收敛,下面东西会比较慢,那么导致一个问题是说每一次你更新下面的东西,上面就得重新训练。底层数据特征一般是局部边缘、纹理等,高层是语义信息特征。下面信息变化,上面就白学了。批量归一化引入背景:梯度问题:在深度神经网络中,正向传播从数据向上,反向传播从损失函数向下。由于梯度在传递中常是多个小数相乘,越靠近数据的层梯度越小,而学习率通常为固定值,导致上层梯度大更新快易收敛,下层梯度小更新慢,且下层变化会使上层需重新训练,进而导致收敛变慢。分布变化:不同层之间数据的方差和均值等分布会发生变化,影响学习的稳定性。批量归一化原理:基本思想:尝试固定一个小批量(mini - batch)在不同层不同位置数据的均值和方差,使分布相对稳定,便于学习细微变动。公式计算:对于小批量样本,先计算均值(对小批量样本求和除以批量大小),方差为样本减去均值的平方和加上一个小数(防止为 0)。批量归一化输出为对输入样本减去均值除以方差,再乘以可学习参数γ\gammaγ,加上可学习参数β\betaβ。上面很快收敛,下面靠近数据的不容易收敛μB=1∣B∣∑i∈BxiandσB2=1∣B∣∑i∈B(xi−μB)2+ϵ \mu_B = \frac{1}{|B|}\sum_{i\in B} x_i \quad \text{and} \quad \sigma_B^2 = \frac{1}{|B|}\sum_{i\in B} \left(x_i - \mu_B\right)^2 + \epsilonμB​=∣B∣1​i∈B∑​xi​andσB2