美文网首页
归一化方法整理

归一化方法整理

作者: 赵小闹闹 | 来源:发表于2020-02-26 20:21 被阅读0次

    参考:
    https://mp.weixin.qq.com/s/2VmgcEZGxSYVMBTGOPADJA
    https://blog.csdn.net/Fate_fjh/article/details/53375881

    目前最主流的归一化方法为BN.BN的作用shi为了解决梯度消失与梯度爆炸,如sigmoid激活函数,当参数过大或过小时,就会引起梯度消失,使得网络训练困难。


    image.png

    BN作用是将将参数拉回到激活函数比较敏感的区域。
    计算过程中可以看到,
    1.求数据均值
    2.求数据方差
    3.数据进行标准化(个人认为称作正态化也可以)
    4.训练参数γ,β
    5.输出y通过γ与β的线性变换得到新的值


    image.png

    以CNN某层特征为例,其维度为[N, H, W, C]即N张图片,分辨率为HW,C个通道。
    BN首先在计算在(N ,H, W)维度上的均值μ和方差σ
    ,然后各个通道上(C维度)进行标准归一化。最后对归一化的特征进行放缩和平移(scale and shift),γ和β是可学习的参数(参数大小为C)。也就是每次对N个N
    W的参数求均值方差,总共求C个通道进行标准化。(实际中N是batch_size)。BN存在的问题是对batch_size敏感,当batch_size较小时,性能较差。
    后续的改进方法都没有考虑batch_size层面。

    BN是在(N, H, W)维度上,LN是在(H,W,C)维度上,IN是在(H,W)维度上,GN其通过对C分组,此时特征可以从[N, H, W, C]变成[N, H, W, G, C/G],GN的计算是在[H, W, G]维度上。LN,IN以及GN都没有在B维度上进行归一化,所以不会有BN的问题。


    image.png

    BN与GN性能对比


    image.png
    GN性能与batch_size无关,但是在大batch_size时性能不如GN。

    谷歌推出的新方法FRN层包括归一化层FRN(Filter Response Normalization)和激活层TLU(Thresholded Linear Unit)。FRN层不仅消除了模型训练过程中对batch的依赖,而且当batch size较大时性能优于BN。


    image.png

    FRN的操作是(H, W)维度上的,即对每张图片的每个channel单独进行归一化,所以FRN没有BN层对batch依赖的问题。BN层采用归一化方法是减去均值然后除以标准差,而FRN却不同,这里没有减去均值操作,公式中的
    v是x的二次范数的平均值。这种归一化方式类似BN可以用来消除中间操作(卷积和非线性激活)带来的尺度问题,有助于模型训练。

    如果FRN之后是ReLU激活层,可能产生很多0值,这对于模型训练和性能是不利的。为了解决这个问题,FRN之后采用的阈值化的ReLU,即TLU:

    image

    相关归一化方法性能对比。FRN与batch_size无关,且性能高于大batch_size的BN.


    image.png

    相关文章

      网友评论

          本文标题:归一化方法整理

          本文链接:https://www.haomeiwen.com/subject/axaichtx.html