• 深度学习-BN(Batch Normalization)


    1. 介绍
    Batch Normalization是2015年一篇论文中提出的 数据归一化 \color{blue}{数据归一化} 数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并且起到一定的正则化作用,几乎代替了Dropout。
    2. 公式
    I n p u t : B = { x 1... m } ; λ , β ( p a r a m e t e r s t o b e l e a r n e d ) Input:B = \lbrace x_{1...m}\rbrace;\lambda,\beta(parameters\quad to\quad be\quad learned) Input:B={x1...m};λ,β(parameterstobelearned) O u t p u t : { y i = B N λ , β ( x i ) } Output:\lbrace{y_i=BN_{\lambda,\beta}(x_i)}\rbrace Output:{yi=BNλ,β(xi)} μ B ← 1 m ∑ i = 1 m x i \mu_B\leftarrow\cfrac{1}{m}\sum_{i=1}^mx_i μBm1i=1mxi σ B 2 ← 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2\leftarrow\cfrac{1}{m}\sum_{i=1}^m(x_i-\mu_B)^2 σB2m1i=1m(xiμB)2 x i ‾ ← x i − μ B σ B 2 + ϵ \overline{x_i}\leftarrow\cfrac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} xiσB2+ϵ xiμB y i ← γ x i ‾ + β y_i\leftarrow\gamma \overline{x_i}+\beta yiγxi+β

    BN的具体操作为:先计算 B B B的均值和方差,之后将 B B B集合的均值、方差变换为0、1,最后将 B B B中每个元素乘以 γ \gamma γ再加 β \beta β,输出。 γ \gamma γ β \beta β是可训练参数,参与整个网络的BP;
    归一化的目的:将数据规整到统一区间,减少数据的发散程度,降低网络的学习难度。BN的精髓在于归一之后,使用 γ \gamma γ β \beta β作为还原参数,在一定程度上保留原数据的分布。
    3. B B B的组成

    神经网络中传递的张量数据,其维度通常记为[N, H, W, C],其中N是batch_size,H、W是行、列,C是通道数。那么上式中BN的输入集合 B B B就是下图中蓝色的部分。
    在这里插入图片描述
    均值的计算,就是在一个批次内,将每个通道中的数字单独加起来,再除以 N × H × W N \times H \times W N×H×W。举个例子:该批次内有10张图片,每张图片有三个通道RBG,每张图片的高、宽是H、W,那么均值就是计算10张图片R通道的像素数值总和除以 10 × H × W 10 \times H \times W 10×H×W ,再计算B通道全部像素值总和除以 10 × H × W 10 \times H \times W 10×H×W,最后计算G通道的像素值总和除以 10 × H × W 10 \times H \times W 10×H×W。方差的计算类似。
    可训练参数 γ \gamma γ β \beta β的维度等于张量的通道数,在上述例子中,RBG三个通道分别需要一个 γ \gamma γ和一个 β \beta β,所以 γ \gamma γ β \beta β的维度等于3。
    4. 训练与推理时BN中的均值、方差
    训练时,均值、方差分别是该批次内数据相应维度的均值与方差; \color{blue}{训练时,均值、方差分别是该批次内数据相应维度的均值与方差;} 训练时,均值、方差分别是该批次内数据相应维度的均值与方差;
    推理时,均值、方差是基于所有批次的期望和方法的期望计算所得,公式如下: \color{blue}{推理时,均值、方差是基于所有批次的期望和方法的期望计算所得,公式如下:} 推理时,均值、方差是基于所有批次的期望和方法的期望计算所得,公式如下:
    E [ x ] ← E B [ μ B ] E[x]\leftarrow E_B[\mu_B] E[x]EB[μB] V a r [ x ] ← m m − 1 E B [ σ B 2 ] Var[x]\leftarrow \cfrac{m}{m-1}E_B[\sigma_B^2] Var[x]m1mEB[σB2]
    参考:
    https://zhuanlan.zhihu.com/p/93643523

  • 相关阅读:
    第一章 数据分析与可视化概述
    pycharm中做web应用(14)基于Django和mysql 做用户登录验证4
    临界区、临界资源、共享资源、临界调度原则
    第五十五章 使用 NSD (Windows) - 在备用 TCP 端口上启动 NSD
    操作系统 | 进程与线程
    Leetcode链表考察(Python、C语言和java实现)
    Flink CDC-2.3版本概述
    关于影响编码效果的画质调优总结
    关于JPA +SpringBoot 遇到的一些问题及解决方法
    取色器实战(Qt含源码)
  • 原文地址:https://blog.csdn.net/weixin_40826634/article/details/128194085