Batch Normalization基本原理详解

批标准化(BatchNormalization)是一种有效的技巧,可以解决神经网络训练中的梯度消失问题,提高模型的收敛速度和精度。通过规范化隐藏层的输入,使模型更加稳定且易于训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际训练过程中,经常出现隐含层因数据分布不均,导致梯度消失或不起作用的情况。如采用sigmoid函数或tanh函数为激活函数时,如果数据分布在两侧,这些激活函数的导数就接近于0。这样一来,BP算法得到的梯度也就消失了。

如何解决这个问题?
Sergey Ioffe和Christian Szegedy两位学者提出了批标准化(BatchNormalization)方法。Batch Normalization不仅可以有效地解决梯度消失问题,而且还可以让调试超参数更加简单,在提高训练模型效率的同时,还可让神经网络模型更加“健壮”。

那么Batch Normalization是如何做到这些的呢?
首先,我们介绍一下BN的算法流程。

输入微批次(mini-batch)数据:B={x1,x2,…,xm}
学习参数γ,β类似于权重参数,可以通过梯度下降等算法求得。
其中xi并不是网络的训练样本,而是指原网络中任意一个隐藏层激活函数的输入,这些输入是训练样本在网络中前向传播得来的。
输出{yi=NBγ,β(xi)}
在这里插入图片描述
在这里插入图片描述

BN是对隐藏层的标准化处理,它与输入的标准化处理NormalizingInputs是有区别的。
Normalizing Inputs是使所有输入的均值为0,方差为1。
而Batch Normalization可使各隐藏层输入的均值和方差为任意值。
实际上,从激活函数的角度来看,如果各隐藏层的输入均值在靠近0的区域,即处于激活函数的线性区域,这样不利于训练好的非线性神经网络,而且得到的模型效果也不会太好。
式(5-6)就起这个作用,当然它还有将归一化后的x还原的功能。

那么BN一般用在哪里呢?
BN应作用在非线性映射前,即对x=Wu+b做规范化时,在每一个全连接和激励函数之间。

何时使用BN呢?
一般在神经网络训练时遇到收敛速度很慢,或梯度爆炸等无法训练的状况时,可以尝试用BN来解决。另外,在一般情况下,也可以加入BN来加快训练速度,提高模型精度,还可以大大地提高训练模型的效率。

BN具体功能如示:
1)可以选择比较大的初始学习率,让训练速度飙升。之前还需要慢慢地调整学习率,甚至在网络训练到一半的时候,还需要想着学习率进一步调小的比例选择多少比较合适。现在我们可以采用初始很大的学习率,然而学习率的衰减速度也很快,因为这个算法收敛很快。当然,这个算法即使你选择了较小的学习率,也比以前的收敛速度快,因为它具有快速训练收敛的特性。
2)不用再去理会过拟合中Dropout、L2正则项参数的选择问题,采用BN算法后,你可以移除这两项参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性。
3)再也不需要使用局部响应归一化层。
4)可以把训练数据彻底打乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI扩展坞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值