• Batch normalization和Layer normalization


    深度学习的归一化方法

    1 归一化的目的

    • 当我们使用梯度下降法做优化时,随着网络深度的增加,输入数据的特征分布会不断发生变化,为了保证数据特征分布的稳定性,会加入Normalization。从而可以使用更大的学习率,从而加速模型的收敛速度,换言之,使用神经网络模型都会使用到激活函数,激活函数都存在饱和区,为了避免梯度消失,一般将数据输入到激活函数之前,对数据分布进行纠正,使得其位于非饱和区域,有利于学习
    • 同时,Normalization也有一定的抗过拟合作用,使训练过程更加平稳。

    2 Layer Normalization 和Batch Normalization的原理和区别

    • 归一化公式
      在这里插入图片描述
    • 区别:看图说话
      以下图为例,这里的batch_size为5(行数),也就是这里有五条数据。每一条数据的特征维度是5(列数)。
      Batch Normalization就是对所有的样本的同一个特征维度进行归一化,下图圈中的是对五个样本里的第一个特征进行归一化。然后依次对所有五个样本的第二个特征进行归一化…。这样做的好处是对保留了不同样本同一个特征之间的多样性。
      Layer Normalization就是对同一个样本的所有特征进行归一化处理。这样做的好处是保留同一个样本的特征之间的多样性。
      数据分布的问题

    3 使用场景

    在BN和LN都能使用的场景中,BN的效果一般优于LN,原因是基于不同数据,同一特征得到的归一化特征更不容易损失信息。但是有些场景是不能使用BN的,例如batch size较小或者序列问题中可以使用LN。这也就解答了RNN 或Transformer为什么用Layer Normalization?

    4 使用BN和LN注意的地方

    LN针对的是单独一个样本,在训练和预测阶段的使用并无差别;BN是针对一个batch进行计算的,训练时自然可以根据batch计算,但是预测时有时要预测的是单个样本,此时要么认为batch size就是1,不进行标准化处理,要么是在训练时记录标准化操作的均值和方差直接应用到预测数据,这两种解决方案都不是很完美,都会存在偏差。

    参考连接:
    参考1
    参考2

  • 相关阅读:
    Verilog开源项目——百兆以太网交换机(三)Hash模块设计
    JAVA基础(十四)
    Debezium系列之:2.0.0.Beta1的重大变化和新特性
    [笔记] FragmentVC(2021)
    在VS Code中进行Java的单元测试
    Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤
    14.MongoDB导出备份
    WPF控件3
    Roson的Qt之旅 #120 QNetworkCacheMetaData详细介绍
    Linux安装Redis数据库,无需公网IP实现远程连接
  • 原文地址:https://blog.csdn.net/qq_42256930/article/details/132816376