【深度学习】批规范化 (Batch Normalization,BN)

Introduction

批规范化,batch normalization,即著名的 BN 操作。
顾名思义,是 对batch的操作

y = γ ⋅ x − μ δ 2 + ϵ + β = { γ , g a m m a : s c a l e μ , m u : m e a n δ , d e l t a : v a r β , b e t a : o f f s e t y = \gamma \cdot \frac{x-\mu}{\sqrt{\delta^2 + \epsilon}} + \beta = \left\{\begin{aligned} &\gamma&, & gamma:& scale \\ &\mu&, & mu:& mean \\ &\delta&, & delta:& var \\ &\beta&, & beta:& offset \\ \end{aligned}\right. y=γδ2+ϵ xμ+β= γμδβ,,,,gamma:mu:delta:beta:scalemeanvaroffset

Birth

15年2月的论文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

Motivation

为了防止隐层的输入分布老是变来变去,BN让每个隐层节点的 激活输入分布 缩小到 (-1, 1)

Note

  • 是缩小到 (-1, 1),而非缩小到 (0, 1)

计算流程

  1. 计算 均值方差
  2. 规范化
  3. 乘上缩放矩阵,加上平移向量

输入为 i n : B = { x 1 , . . . , x N } in:B = \{x_1, ..., x_N\} inB={x1,...,xN} ,输出为 o u t : y ′ = { B N γ , β ( x 1 ) , . . . } out:y^{\prime} = \{BN_{\gamma,\beta}(x_1), ... \} outy={BNγ,β(x1),...}

  1. μ ← 1 N ∑ i = 1 N x i ,计算 b a t c h 的均值 \mu \gets \frac{1}{N}\sum^{N}_{i=1}{x_i},计算batch的均值 μN1i=1Nxi,计算batch的均值
  2. δ 2 ← 1 N ∑ i = 1 N ( x i − μ ) 2 ,计算 b a t c h 的方差 \delta^2 \gets \frac{1}{N}\sum^{N}_{i=1}{(x_i-\mu)^2},计算batch的方差 δ2N1i=1N(xiμ)2,计算batch的方差
  3. x ^ i ← x i − μ δ 2 + ϵ ,规范化 \hat{x}_i \gets \frac{x_i - \mu}{\sqrt{\delta^2 + \epsilon}},规范化 x^iδ2+ϵ xiμ,规范化
  4. y i ← γ ⋅ x ^ i + β ,缩放和平移 y_i \gets \gamma \cdot \hat{x}_i + \beta,缩放和平移 yiγx^i+β,缩放和平移
  5. r e t u r n   学到的 γ 和 β return \ \ 学到的 \gamma 和 \beta return  学到的γβ

作用

  • 前向时约束输入空间:
    • 1.突出重点区域的响应,提高泛化性。
    • 2.好调参。
  • 反向时防止梯度问题:
    • 1.(把小的放大,把大的放小)快速收敛。

python实现

Summary

  • conv -> bn -> relu ” 套件目前早已成为了CNN标配module。
  • BN因为在前馈的时候缩小了输入空间,而前馈时的输入空间又直接影响了反馈计算时的梯度状况。所以说,BN其实帮助减缓了梯度问题。
  • 假设输入是shape为 [N, H, W, C] 的tensor,则bn是沿着C维,对各channel的 [N, H, W] 分别求出一个mean和variance。所以最终输出的mean和variance的shape都是 [C, ] 。

[1] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
[2] Understanding Batch Normalization
[3] Batch Normalization导读
[4] 深度学习中 Batch Normalization为什么效果好?
[5] 深度学习: gradient diffusion (梯度弥散)

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值