美文网首页
Normalization

Normalization

作者: 7ccc099f4608 | 来源:发表于2021-04-25 18:07 被阅读0次

    深度学习中的Normalization: (i. 更好train;ii. 防过拟合)
    1 对神经元输出规范化:BatchNorm/LayerNorm/InstanceNorm/GroupNorm
    2 对权重规范化(Weight Norm):广义上讲,一般机器学习里看到的损失函数里面加入的对参数的的L1/L2等正则项(L1正则的规范化目标是造成参数的稀疏化,就是争取达到让大量参数值取得0值的效果,而L2正则的规范化目标是有效减小原始参数值的大小。)
    https://zhuanlan.zhihu.com/p/43200897
    https://zhuanlan.zhihu.com/p/33173246

    BN: Batch Normalization —— 纵向规范化

    (对同一batch内的特征 or 本层各个神经元的输出,分别归一化:譬如同一batch内的“年龄”)

    image.png image.png M是batch_size

    (原论文用在输出和激活函数之间;但不少研究表明将BN放在激活函数之后效果更好)

    1. 由于 BN 是针对单个维度定义的,因此标准公式中的计算均为 element-wise 的,BN 独立地规范化每一个输入维度 {x_i} ,但规范化的参数是一个 mini-batch 的一阶统计量和二阶统计量,因此要求batch近似同分布的;
    2. 每个batch内做zscore (mean、std 都是batch内计算的,所以batch太小会问题),使得网络中每层输入数据的分布相对稳定,加速模型学习速度;
    3. zscore后变换,因为理想情况下zscore变换后为N(0,1)的标准正态分布。此时,激活函数为relu,则意味着,有一半的输出被置为0了。(另一种解释:Normalization有可能降低神经网络的非线性表达能力,所以会以此方式来补偿Normalization操作后神经网络的表达能力)

    缺点

    受batch_size影响
    训练时和推理时统计量不一致

    LN:Layer Normalization —— 横向规范化

    (对同一层(而不是batch)内的各个特征统一归一化,譬如“年龄”、“身高” 使用的是同一个均值和方差)

    image.png

    LN 是一种横向的规范化,考虑一层所有维度的输入,计算该层的平均输入值和输入方差,然后用同一个规范化操作来转换各个维度的输入


    image.png

    batch size 设置得较小训练出来的模型相对大batch size训练出的模型泛化能力更强,在测试集上的表现更好,而太大的batch size往往不太Work,而且泛化能力较差

    相关文章

      网友评论

          本文标题:Normalization

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