【机器学习】【深度学习】批量归一化(Batch Normalization)

概念简介

img

归一化指的是将数据缩放到一个固定范围内,通常是 [0, 1],而标准化是使得数据符合标准正态分布。归一化的作用是使不同特征具有相同的尺度,从而使模型训练更加稳定和快速,尤其是对于使用梯度下降法的算法。而标准化的作用加快模型收敛速度,提高模型的性能。

批量归一化用于加速神经网络的训练并提高模型的稳定性。它在每个批次的数据上进行标准化,通过对每层的输入进行归一化处理,使得网络中间层的激活值保持在一个较小的范围内,有助于加速模型的收敛,同时减少了梯度消失和爆炸的问题。所以批量归一化特别适合深层网络。

为什么需要归一化

img

例如上边这个例子,右图神经网络有两个输入,分别是从3-34和从0-1000的范围。

输入范围的巨大差异会导致在前向传播和反向传播过程中,激活函数的输出也会有很大的波动。如果激活函数是非线性的,大范围输入可能会导致梯度消失或梯度爆炸问题。

输入范围的巨大差异也会导致损失函数在不同维度上的梯度变化不一致,使得优化算法难以有效收敛。

对输入使用归一化可以缓解以上问题,但是在训练后期仍可能出现梯度消失或梯度爆炸问题。这时我们就需要使用批量归一化了。

批量归一化层

img

批量归一化所做的是仅标准化输入,然后将数据输入到网络中,在网络中所有层的所有输出进行标准化,也就是每层之间都有批量归一化层。它所做的就是标准化数据并做一些其他的工作,然后输出给下一层。

img

加入批量归一化层的优点

稳定和加速训练过程:归一化减少了不同层之间输入数据分布的变化。

减少梯度消失和爆炸问题:保持零均值和单位方差。

起到轻微正则化的效果:每个小批量的均值和方差略有不同,微小随机性类似于Dropout正则化。

降低对权重初始化的敏感性:减少了调参的难度。

适用于更深的神经网络:深度神经网络往往面临梯度消失或爆炸的问题。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-05 19:40:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-05 19:40:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-05 19:40:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-05 19:40:05       20 阅读

热门阅读

  1. 【C language】两个数的交换

    2024-06-05 19:40:05       6 阅读
  2. ML307R OpenCPU UDP使用

    2024-06-05 19:40:05       7 阅读
  3. 华为欧拉 EulerOS V2.0 SP5 一键安装 Oracle 19C 单机

    2024-06-05 19:40:05       8 阅读
  4. 代码随想录算法训练营第20天|二叉树

    2024-06-05 19:40:05       8 阅读
  5. ORACLE 查询SQL优化

    2024-06-05 19:40:05       9 阅读
  6. 在Spring Boot中集成H2数据库:完整指南

    2024-06-05 19:40:05       9 阅读
  7. 注册windows系统服务

    2024-06-05 19:40:05       9 阅读
  8. [蓝桥杯 2021 省 AB2] 负载均衡

    2024-06-05 19:40:05       8 阅读
  9. 低代码开发:企业OA低成本数字化转型的新引擎

    2024-06-05 19:40:05       8 阅读
  10. Docker - Kafka

    2024-06-05 19:40:05       6 阅读
  11. Ubuntu 22.04 .NET8 程序 环境安装和运行

    2024-06-05 19:40:05       10 阅读
  12. Docker

    2024-06-05 19:40:05       8 阅读
  13. 通过SDKMan来安装各种版本的JDK

    2024-06-05 19:40:05       10 阅读