Batch normalization--NN

首先,我们将说明为什么需要它,它是如何工作的,然后如何将其包含在经过预训练的网络中。

为什么要使用批处理规范化?

我们通过调整和缩放激活函数来标准化输入层。例如,当我们具有从0到1以及从1到1000的特征时,我们应该对其进行归一化以加快学习速度。如果输入层可以这样做,那为什么不对隐藏层中的值也做同样的事情,这些值一直在变化,并且训练速度提高了10倍甚至更多倍。

批量归一化减少了隐藏单位值的偏移量(协方差偏移)。为了解释协方差变化,让我们深入了解猫检测。我们仅在黑猫的图像上训练数据。因此,如果我们现在尝试将此网络应用于有色猫的数据,那是显而易见的我们做得不好。即使训练集和预测集都是猫的图像,但略有不同。换句话说,如果算法学习了X到Y的映射关系,但是X的分布发生了变化,那么我们可能需要通过尝试来重新训练学习算法。

同样,批处理归一化允许网络的每个层自己独立于其他层进行学习。

我们可以使用较高的学习率,因为批量归一化可确保没有激活过高或过低。 这样一来,以前无法训练的事物就会开始训练。另外由于它具有轻微的正则化效果,因此减少了过度拟合。

与辍dropout类似,它为每个隐藏层的激活添加了一些噪音。 因此,如果我们使用批处理规范化,我们将使用更少的dropout,这是一件好事,因为我们不会丢失很多信息。 但是,我们不应该仅依靠批处理归一化来进行正则化。 我们最好将它与dropout结合使用。

如何工作?

为了提高神经网络的稳定性,batch归一化通过减去批次batch平均值并除以batch标准偏差来归一化先前激活层(隐藏层)的输出。 但是,在通过一些随机初始化的参数进行激活输出的这种移位/缩放之后,下一层的权重不再是最佳的。
因此,batch归一化将两个可训练的参数添加到每一层,因此归一化的输出将乘以“标准差”参数(gamma)并添加“均值”参数(beta)。 换句话说,batch理归一化允许SGD(随机梯度下降)通过为每次激活仅更改这两个权重来进行非归一化,而不是通过更改所有权重来失去网络的稳定性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值