认识上图这些人吗?这些人把本身叫作“The Myth Busters”,为何?在他们的启发下,咱们才会在Paperspace作相似的事情。咱们要解决是Batch Normalization(BN)是否确实解决了Internal Covariate Shift的问题。虽然Batch Normalization已经存在了几年,而且已经成为深度神经网络的主要内容,但它仍然是深度学习中最容易被误解的概念之一。算法
Batch Normalization真的解决了Internal Covariate Shift问题了吗?它是用来作什么的?你所学的深度学习是真的吗?咱们来看看吧!网络
在开始以前函数
咱们曾经讨论过:学习
一、如何利用随机梯度降低来解决深度学习中局部极小值和鞍点的问题。优化
二、Momentum(动量)和Adam(自适应矩估计)等优化算法如何加强梯度降低以解决优化曲面中的曲率问题。spa
三、如何使用不一样的激活函数来解决梯度消失问题。orm
为了有效地学习神经网络,神经网络的每一层分布都应该:均值为0、始终保持相同的分布;第二个条件意味着经过批梯度降低输入到网路层的数据分布不该该变化太多,而且随着训练的进行它应该保持不变,而不是每一层的分布都在发生变化。blog
Batch Normalization:经过减小Internal Covariate Shift来加快深度网络训练,其前提是解决一个称为Internal Covariate Shift的问题。深度学习
就像咱们如今所称的那样,Internal Covariate Shift是指在训练过程当中,隐层的输入分布总是变来变去,Internal指的是深层网络的隐层,是发生在网络内部的事情,Covariate指的是输入分布被变化的权重参数化,Shift指分布正在发生变化。io
因此,让咱们试着观察这件事情怎样发生的。再次,尽量想象一下最简单的神经网络之一:线性堆叠的神经元,这样你也能够经过替换神经元网络层来扩展类比。
假设咱们正在优化损失函数L,神经元d权重的更新规则是:
咱们能够看到权重d的梯度取决于c的输出,对于神经网络中的任何层也是如此。神经元的权重梯度取决于它的输入或者下一层的输出。