BN(Batch Normalization)

1 BN的介绍

在神经网络的训练过程中, 我们一般会将输入样本的特征进行标准化处理,使数据变成均值为0, 标准差为1的高斯分布, 或者范围在0附近的分布。 因为如果数据没有进行该处理的话, 由于样本特征分布比较散, 可能会导致学习速度慢甚至难以学习。
因此一个较好的数据分布可以使神经网络的训练速度加快, 甚至效果更好。

在模型训练的时候, 由于模型参数在发生更新, 那么除了输入层的数据之外, 后面网络的每一层的输入数据分布都是一直在发生变化的。 网络中间层的训练过程中, 数据分布的改变被称为'Internal Covariate Shift' 。 而BN的提出就是 为了解决在训练过程中, 中间层数据分布发生改变的情况
Batch Normalization Layer(BN Layer)是期望我们的结果是服从高斯分布的,所以对神经元的输出进行一下修正。 论文中建议放到卷积层/FC层后, 激励层/池化层前, 而实际应用的时候有时候会放到激励层后。
论文: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift;
论文链接: https://arxiv.org/pdf/1502.03167v3.pdf

2 BN的步骤

2.1 BN的训练步骤


BN的训练步骤主要分为以下4步:

  1. 求解每个训练批次数据的均值
  2. 求解每个训练批次数据的方差
  3. 使用求得的均值和方差对该批次的数据做标准化处理, 获得0-1分布。
  4. 尺度变换和偏移: 使用标准化之后的x乘以γ调整数值大小, 再加上β增加偏移后得到输出值y。 这个γ是尺度因子, β是平移因子, 属于BN的核心精髓, 由于标准化后的x基本会被限制在正态分布下, 会使得网络的表达能力下降, 为了解决这个问题, 引入两个模型参数γ、 β进行平移变化。
    在上述中,对于每个训练批次数据,比如说,一个批次有8个样本,一个样本中,特征图尺寸为24x24,通道数量为10,那么,就会选择每个样本的同一个通道出来作BN,对于特征图上的每个位置我们会计算这个位置上,在批次中所有样本对应位置的值的均值和方差。 例如下图

2.2 BN在测试的时候

在训练的时候我们一般使用一个批次中的样本的均值和标准差进行BN操作,但是预测的时候由于样本数目不确定(比较少), 所以不好使用预测样本的均值和方差进行BN操作, 实际上在预测的时候, 使用的是训练阶段所有batch记录下来的均值和方差的期望值作为预测时候BN的均值和方差

实际实现的时候可能采用类似momentum动量法中使用的滑动平均来进行计算测试时候的均值和方差。

3 BN的优缺点

3.1 Batch Normalization优点

1 梯度传递(计算)更加顺畅, 不容易导致神经元饱和 (防止梯度消失(梯度弥散)/梯度爆炸, 允许使用饱和性激活函数<eg: sigmoid、tanh等>)
2 学习率可以设置的大一点, 加快训练速度。
3 对于模型参数的初始化方式和模型参数取值不太敏感, 使得网络学习更加稳定, 提高模型训练精度。
4 具有一定的正则化效果, 类似Dropout、 L1、 L2等正则化的效果。

3.2 Batch Normalization缺点

1 如果网络层次比较深, 加BN层的话, 可能会导致模型训练速度很慢。
2 训练批次不能设置太小, 一般建议批次大小16以上。对batchsize大小敏感, 由于每次计算均值和方差是在同一个batch上, 如果batchsize设置的太小, 计算出来的均值和方差不足以代表整个数据分布
3 BN的计算过程中需要保存某一层神经网络batch的均值和方差等统计信息, 对于固定长度的网络结构(DNN、 CNN)比较适合, 但是对于不定长度的RNN的,训练比较麻烦

相关推荐
CodeLiving1 分钟前
MCP学习三——MCP相关概念
人工智能·mcp
Gitpchy1 分钟前
简单CNN——作业(补充)
人工智能·神经网络·cnn
齐齐大魔王3 分钟前
深度学习系列(二)
人工智能·深度学习
xier_ran4 分钟前
深度学习:学习率衰减(Learning Rate Decay)
人工智能·深度学习·机器学习
Baihai_IDP8 分钟前
如何提升 LLMs 处理表格的准确率?一项针对 11 种格式的基准测试
人工智能·面试·llm
Francek Chen13 分钟前
【CANN】开启AI开发新纪元,释放极致计算效率
人工智能·深度学习·cann·ai开发
工藤学编程20 分钟前
零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用
人工智能·架构·milvus
酷柚易汛智推官21 分钟前
阿里“千问”破局C端AI:开源基石与B端势能的双重革命
人工智能·开源·酷柚易汛
路人与大师22 分钟前
解密“精准劝阻”:基于大数据与AI的反诈骗智能体系统深度解析
大数据·人工智能
Humbunklung26 分钟前
files-to-prompt 简介
人工智能·prompt