深度学习
  • 前言
  • 第一章:经典网络
    • ImageNet Classification with Deep Convolutional Neural Network
    • Very Deep Convolutional Networks for Large-Scale Image Recognition
    • Going Deeper with Convolutions
    • Deep Residual Learning for Image Recognition
    • PolyNet: A Pursuit of Structural Diversity in Very Deep Networks
    • Squeeze-and-Excitation Networks
    • Densely Connected Convolutional Networks
    • SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE
    • MobileNet v1 and MobileNet v2
    • Xception: Deep Learning with Depthwise Separable Convolutions
    • Aggregated Residual Transformations for Deep Neural Networks
    • ShuffleNet v1 and ShuffleNet v2
    • CondenseNet: An Efficient DenseNet using Learned Group Convolution
    • Neural Architecture Search with Reinforecement Learning
    • Learning Transferable Architectures for Scalable Image Recognition
    • Progressive Neural Architecture Search
    • Regularized Evolution for Image Classifier Architecture Search
    • 实例解析:12306验证码破解
  • 第二章:自然语言处理
    • Recurrent Neural Network based Language Model
    • Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
    • Neural Machine Translation by Jointly Learning to Align and Translate
    • Hierarchical Attention Networks for Document Classification
    • Connectionist Temporal Classification : Labelling Unsegmented Sequence Data with Recurrent Neural Ne
    • About Long Short Term Memory
    • Attention Is All you Need
    • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • 第三章:语音识别
    • Speech Recognition with Deep Recurrent Neural Network
  • 第四章:物体检测
    • Rich feature hierarchies for accurate object detection and semantic segmentation
    • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
    • Fast R-CNN
    • Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    • R-FCN: Object Detection via Region-based Fully Convolutuional Networks
    • Mask R-CNN
    • You Only Look Once: Unified, Real-Time Object Detection
    • SSD: Single Shot MultiBox Detector
    • YOLO9000: Better, Faster, Stronger
    • Focal Loss for Dense Object Detection
    • YOLOv3: An Incremental Improvement
    • Learning to Segment Every Thing
    • SNIPER: Efficient Multi-Scale Training
  • 第五章:光学字符识别
    • 场景文字检测
      • DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
      • Detecting Text in Natural Image with Connectionist Text Proposal Network
      • Scene Text Detection via Holistic, Multi-Channel Prediction
      • Arbitrary-Oriented Scene Text Detection via Rotation Proposals
      • PixelLink: Detecting Scene Text via Instance Segmentation
    • 文字识别
      • Spatial Transform Networks
      • Robust Scene Text Recognition with Automatic Rectification
      • Bidirectional Scene Text Recognition with a Single Decoder
      • multi-task learning for text recognition with joint CTC-attention
    • 端到端文字检测与识别
      • Reading Text in the Wild with Convolutional Neural Networks
      • Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
    • 实例解析:字符验证码破解
    • 二维信息识别
      • 基于Seq2Seq的公式识别引擎
      • Show and Tell: A Neural Image Caption Generator
      • Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  • 第六章:语义分割
    • U-Net: Convolutional Networks for Biomedical Image Segmentation
  • 第七章:人脸识别
    • 人脸检测
      • DenseBox: Unifying Landmark Localization with End to End Object Detection
      • UnitBox: An Advanced Object Detection Network
  • 第八章:网络优化
    • Batch Normalization
    • Layer Normalization
    • Weight Normalization
    • Instance Normalization
    • Group Normalization
    • Switchable Normalization
  • 第九章:生成对抗网络
    • Generative Adversarial Nets
  • 其它应用
    • Holistically-Nested Edge Detection
    • Image Style Transfer Using Convolutional Nerual Networks
    • Background Matting: The World is Your Green Screen
  • Tags
  • References
由 GitBook 提供支持
在本页
  • 前言
  • 1. SN详解
  • 1.1 回顾
  • 1.2 SN算法介绍
  • 1.3 测试
  • 2. SN的优点
  • 2.1 SN的普遍适用性
  • 2.2 SN与BatchSize
  • 3. 总结

这有帮助吗?

  1. 第八章:网络优化

Switchable Normalization

上一页Group Normalization下一页第九章:生成对抗网络

最后更新于4年前

这有帮助吗?

tags: Normalization

前言

在之前的文章中,我们介绍了,,以及的算法细节及适用的任务。虽然这些归一化方法往往能提升模型的性能,但是当你接收一个任务时,具体选择哪个归一化方法仍然需要人工选择,这往往需要大量的对照实验或者开发者优秀的经验才能选出最合适的归一化方法。本文提出了Switchable Normalization(SN),它的算法核心在于提出了一个可微的归一化层,可以让模型根据数据来学习到每一层该选择的归一化方法,亦或是三个归一化方法的加权和,如图1所示。所以SN是一个任务无关的归一化方法,不管是LN适用的RNN还是IN适用的图像风格迁移(IST),SN均能用到该应用中。作者在实验中直接将SN用到了包括分类,检测,分割,IST,LSTM等各个方向的任务中,SN均取得了非常好的效果。

图1:SN是LN,BN以及IN的加权和

1. SN详解

1.1 回顾

SN实现了对BN,LN以及IN的统一。以CNN为例,假设一个4D Feature Map的尺寸为(N,C,W,H)(N,C,W,H)(N,C,W,H),假设hncijh_{ncij}hncij​和h^ncij\hat{h}_{ncij}h^ncij​分别是归一化前后的像素点的值,其中n∈[1,N]n\in[1,N]n∈[1,N],c∈[1,C]c\in[1,C]c∈[1,C],i∈[1,H]i\in[1,H]i∈[1,H],j∈[1,W]j\in[1,W]j∈[1,W]。假设μ\muμ和σ\sigmaσ分别是均值和方差,上面所介绍的所有归一化方法均可以表示为:

h^ncij=γhncij−μσ2+ϵ+β\hat{h}_{ncij} = \gamma \frac{h_{ncij} - \mu}{\sqrt{\sigma^2 + \epsilon}} + \betah^ncij​=γσ2+ϵ​hncij​−μ​+β

其中β\betaβ和γ\gammaγ分别是位移变量和缩放变量,ϵ\epsilonϵ是一个非常小的数用以防止除0。上面式子概括了BN,LN,以及IN三种归一化的计算公式,唯一不同是计算μ\muμ和σ\sigmaσ统计的像素点不同。我们可以将μ\muμ和σ\sigmaσ表示为:

μk=1Ik∑(n,c,i,j)∈Ikhncij,σk2=1Ik∑(n,c,i,j)∈Ik(hncij−μk)2\mu_k = \frac{1}{I_k} \sum_{(n,c,i,j)\in I_k} h_{ncij}, \quad \sigma_k^2 = \frac{1}{I_k} \sum_{(n,c,i,j)\in I_k} (h_{ncij} - \mu_k)^2μk​=Ik​1​(n,c,i,j)∈Ik​∑​hncij​,σk2​=Ik​1​(n,c,i,j)∈Ik​∑​(hncij​−μk​)2

其中k∈{in,ln,bn}k \in \{in,ln,bn\}k∈{in,ln,bn}。IN是统计的是单个批量,单个通道的所有像素点,如图1绿色部分。BN统计的是单个通道上所有像素点,如图1红色部分。LN统计的是单个批量上的所有像素点,如图1黄色部分。它们依次可以表示为Iin={(i,j)∣i∈[1,H],j∈[1,W]}I_{in} = \{(i,j)|i\in[1,H], j\in[1,W]\}Iin​={(i,j)∣i∈[1,H],j∈[1,W]},Ibn={(i,j)∣n∈[1,N],i∈[1,H],j∈[1,W]}I_{bn} = \{(i,j)|n\in[1,N], i\in[1,H], j\in[1,W]\}Ibn​={(i,j)∣n∈[1,N],i∈[1,H],j∈[1,W]},Iln={(i,j)∣c∈[1,C],i∈[1,H],j∈[1,W]}I_{ln} = \{(i,j)|c\in[1,C], i\in[1,H], j\in[1,W]\}Iln​={(i,j)∣c∈[1,C],i∈[1,H],j∈[1,W]}。

1.2 SN算法介绍

SN算法是为三组不同的μk\mu_{k}μk​以及σk\sigma_{k}σk​分别学习三个总共6个标量值(wkw_kwk​和wk′w'_kwk′​),h^ncij\hat{h}_{ncij}h^ncij​的计算使用的是它们的加权和:

h^ncij=γhncij−∑k∈Ωwkμk∑k∈Ωwk′σk2+ϵ+β\hat{h}_{ncij} = \gamma \frac{h_{ncij} - \sum_{k\in\Omega}w_k \mu_k}{\sqrt{\sum_{k\in\Omega} w'_k \sigma_k^2 + \epsilon}} + \betah^ncij​=γ∑k∈Ω​wk′​σk2​+ϵ​hncij​−∑k∈Ω​wk​μk​​+β

其中Ω={in,ln,bn}\Omega = \{in,ln,bn\}Ω={in,ln,bn}。在计算(μln,σln)(\mu_{ln},\sigma_{ln})(μln​,σln​)和(μbn,σbn)(\mu_{bn},\sigma_{bn})(μbn​,σbn​)时,我们可以使用(μin,σin)(\mu_{in},\sigma_{in})(μin​,σin​)作为中间变量以减少计算量。

μin=1HW∑i,jH,Whncijσin2=1HW∑i,jH,W(hncij−μin)2\mu_{in} = \frac{1}{HW} \sum_{i,j}^{H,W}h_{ncij} \quad \sigma_{in}^2 = \frac{1}{HW}\sum_{i,j}^{H,W}(h_{ncij}- \mu_{in})^2μin​=HW1​i,j∑H,W​hncij​σin2​=HW1​i,j∑H,W​(hncij​−μin​)2
μln=1C∑c=1Cμinσln2=1C∑c=1C(σin2+μin2)−μln2\mu_{ln} = \frac{1}{C} \sum_{c=1}^{C}\mu_{in} \quad \sigma_{ln}^2 = \frac{1}{C}\sum_{c=1}^{C}(\sigma_{in}^2 + \mu_{in}^2) - \mu_{ln}^2μln​=C1​c=1∑C​μin​σln2​=C1​c=1∑C​(σin2​+μin2​)−μln2​
μbn=1N∑n=1Nμinσbn2=1N∑n=1N(σin2+μin2)−μbn2\mu_{bn} = \frac{1}{N} \sum_{n=1}^{N}\mu_{in} \quad \sigma_{bn}^2 = \frac{1}{N}\sum_{n=1}^{N}(\sigma_{in}^2 + \mu_{in}^2) - \mu_{bn}^2μbn​=N1​n=1∑N​μin​σbn2​=N1​n=1∑N​(σin2​+μin2​)−μbn2​

wkw_kwk​是通过softmax计算得到的激活函数:

wk=eλk∑z∈{in,ln,bn}eλzandk∈{in,ln,bn}w_k = \frac{e^{\lambda_k}}{\sum_{z\in\{in,ln,bn\}}e^{\lambda_z}}\quad \text{and} \quad k\in\{in,ln,bn\}wk​=∑z∈{in,ln,bn}​eλz​eλk​​andk∈{in,ln,bn}

其中{λin,λbn,λln}\{\lambda_{in}, \lambda_{bn}, \lambda_{ln}\}{λin​,λbn​,λln​}是需要优化的3个参数,可以通过BP调整它们的值。同理我们也可以计算w′w'w′对应的参数值{λin′,λbn′,λln′}\{\lambda'_{in}, \lambda'_{bn}, \lambda'_{ln}\}{λin′​,λbn′​,λln′​}。

从上面的分析中我们可以看出,SN只增加了6个参数Φ={λin,λbn,λln,λin′,λbn′,λln′}\Phi = \{\lambda_{in}, \lambda_{bn}, \lambda_{ln}, \lambda'_{in}, \lambda'_{bn}, \lambda'_{ln}\}Φ={λin​,λbn​,λln​,λin′​,λbn′​,λln′​}。假设原始网络的参数集为Θ\ThetaΘ,带有SN的网络的损失函数可以表示为L(Θ,Φ)\mathcal{L}(\Theta, \Phi)L(Θ,Φ),他可以通过BP联合优化Θ\ThetaΘ和Φ\PhiΦ。对SN的反向推导感兴趣的同学参考论文附件H。

1.3 测试

在BN的测试过程中,为了计算其归一化统计量,传统的BN方法是从训练过程中利用滑动平均的方法得到的均值和方差。在SN的BN部分,它使用的是一种叫做批平均batch average的方法,它分成两步:1.固定网络中的SN层,从训练集中随机抽取若干个批量的样本,将输入输入到网络中;2.计算这些批量在特定SN层的μ\muμ和σ\sigmaσ的平均值,它们将会作为测试阶段的均值和方差。实验结果表明,在SN中批平均的效果略微优于滑动平均。

2. SN的优点

2.1 SN的普遍适用性

SN通过根据不同的任务调整不同归一化策略的权值使其可以直接应用到不同的任务中。图2可视化了在不同任务上不同归一化策略的权值比重:

从图2中我们可以看出LSTM以及IST都学到了最适合它们本身的归一化策略。

2.2 SN与BatchSize

SN也能根据batchsize的大小自动调整不同归一化策略的比重,如果batchsize的值比较小,SN学到的BN的权重就会很小,反之BN的权重就会很大,如图3所示:

图3中括号的意思是(#GPU, batchsize)。

3. 总结

这篇文章介绍了统一了BN,LN以及IN三种归一化策略的SN,SN具有以下三个有点:

  1. 鲁棒性:无论batchsize的大小如何,SN均能取得非常好的效果;

  2. 通用性:SN可以直接应用到各种类型的应用中,减去了人工选择归一化策略的繁琐;

  3. 多样性:由于网络的不同层在网络中起着不同的作用,SN能够为每层学到不同的归一化策略,这种自适应的归一化策略往往要优于单一方案人工设定的归一化策略。

图2:SN在不同任务下的权值分布可视化图

图3:SN在不同batchsize下的权值分布可视化图

BN
LN
IN
GN
图2:SN在不同任务下的权值分布可视化图
图3:SN在不同batchsize下的权值分布可视化图
图1:SN是LN,BN以及IN的加权和