batch normalization 理解

批量规范化(Batch Normalization)是一种用于深度学习的技术,旨在加速网络训练,解决内部协变量偏移问题。它通过对每个批次的数据进行标准化处理,确保每一层神经网络的输入保持相同分布。BN通过在激活函数前应用,并结合scale和shift操作,平衡线性与非线性表达能力,避免梯度消失。尽管BN在许多场景下表现优秀,但不适用于动态网络结构和RNN。
摘要由CSDN通过智能技术生成

对batch normalization 一直属于一知半解状态,二面被问的一脸懵逼,所以决定好好理一理这个问题。

1、What is batch normalization?

batch normalization 其实就是对数据做一个批量的规范化操作,使得在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

具体实现过程如下:

A、对于一个mini-batch,求数据的均值,方差。这里其实是

                                            

B、得到归一化之后的数据x,使得结果(输出信号各个维度)的均值为0,方差为1.

C、“scale and shift”操作则是为了让因训练所需而“刻意”加入的BN能够有可能还原最初的输入。

                                    

                                    

Batch normalization是一种常用的神经网络正则化技术,它的主要思想是对每一层的输入进行归一化,使得网络中每一层的输入分布都具有相似的统计特性。Batch normalization可以在训练过程中减少内部协变量偏移(Internal Covariate Shift)现象的发生,有助于加速网络的训练,并提高网络的泛化能力。 内部协变量偏移是指在训练过程中,每一层的输入分布会发生改变,导致网络中每一层的参数都需要重新适应新的输入分布,从而影响了网络的收敛速度和泛化能力。Batch normalization通过对每一层的输入进行归一化,使得每一层的输入分布都具有相似的统计特性,从而减少了内部协变量偏移现象的发生。 具体来说,Batch normalization的计算公式如下: $$ \hat{x}=\frac{x-\mu}{\sqrt{\sigma^2+\epsilon}} \\ y=\gamma\hat{x}+\beta $$ 其中,$x$是输入,$\mu$和$\sigma^2$是在batch内计算得到的均值和方差,$\epsilon$是一个很小的常数,用于避免分母为0的情况,$\hat{x}$是将输入$x$进行归一化后的结果,$\gamma$和$\beta$是可学习的缩放和偏移参数。 Batch normalization的作用是将每一层的输入归一化到均值为0,方差为1的分布上,从而使得每一层的输入分布具有相似的统计特性,加速了网络的训练,并提高了网络的泛化能力。 总之,Batch normalization通过对每一层的输入进行归一化,减少了内部协变量偏移现象的发生,提高了网络的训练速度和泛化能力,是一种非常实用的神经网络正则化技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值