神经网络正则化之BN/LN/GN的原理

news2024/12/23 8:46:26

1. BN层原理

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True,device=None,dtype=None)

  • 为什么用BN?
    加速训练。之前训练慢是因为在训练过程中,整体分布逐渐往非线性函数的取值区间的上下限端靠近(参考sigmoid函数,大的正值或负值),链式求导导致低层的神经网络梯度消失。BN就是将越来越偏的分布强行拉回(标准)正态分布,使得激活值落在非线性函数对输入比较敏感的区域,这样输入小的变化就会导致损失函数较大变化,让梯度变大,避免梯度消失问题。

  • 为什么要给BN的分布乘以可学习参数 γ \gamma γ β \beta β?
    如果强行归一化为标准正态分布,则之前该层学习到的分布也丢失信息。引入这两个重构参数,来使得我们的网络中可以学习恢复出原始网络要学习的特征分布.

  • 公式(torch):
    y = x − E [ x ] V a r [ x ] + ϵ × γ + β y = \frac{x-E[x]}{\sqrt{Var[x]+\epsilon}}\times \gamma + \beta y=Var[x]+ϵ xE[x]×γ+β
    在这里插入图片描述

  • 反向传播.
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6uCO3wH-1689670017182)(:/b9265fb96a1348ee97121a7aba9a92be)]

  • 均值和方差是在mini-batch的每一个维度上分别计算的

  • 因为是再 C C C维上做的BN,在 ( N , H , W ) (N,H,W) (N,H,W) slices, 也就是 计算(N,H,W) 的均值和方差, 因此学术上称为Spatial Batch Normalization.

  • γ \gamma γ β \beta β可学习的参数,尺寸等于input size. 默认 γ \gamma γ设置为1, β \beta β设置为0.

  • 标准差是有篇估计, 跟torch.var(input, unbiased=False)相同. 1 m \frac{1}{m} m1

  • 训练时, 运行一个计算均值和方差的估计器, 然后再验证阶段做归一化.

  • 推断阶段:

    • γ \gamma γ, β \beta β直接用训练好的.
    • 使用均值与方差的无偏估计. 即统计训练中每一个batch的每个维度的均值和方差,然后计算在训练集上的期望:
      E [ x ] ← E B [ μ B ] E[x]\leftarrow E_\mathcal{B}[\mu_\mathcal{B}] E[x]EB[μB]
      V a r [ x ] ← m m − 1 E B [ σ B 2 ] Var[x] \leftarrow \frac{m}{m-1}E_\mathcal{B}[\sigma_\mathcal{B}^2] Var[x]m1mEB[σB2]
      最终(只是将均值和方差替换,推导一小步即可):
      y = γ V a r [ x ] + ϵ x + ( β − γ E [ x ] V a r [ x ] + ϵ ) y = \frac{\gamma}{\sqrt{Var[x]+\epsilon}}x+(\beta-\frac{\gamma E[x]}{\sqrt{Var[x]+\epsilon}}) y=Var[x]+ϵ γx+(βVar[x]+ϵ γE[x])
  • BN优点汇总:

      1. 大大提升训练速度,加快收敛
      1. 提高网络泛化能力,解释是类似于dropout的一种防止过拟合的正则化表达方法,可舍弃dropout
      1. 调参简单,对初始化要求没那么高,可以加大学习率
      1. 可以打乱样本训练顺序. 可以提高精度
      1. BN本质上是一个归一化网络层,可以替代局部响应归一化层(LRN)层
  • 为什么BN层一般用在线性层和卷积层后面,而不是放在非线性单元后
    因为非线性单元的输出分布形状会在训练过程中变化归一化无法消除他的方差偏移,相反的,全连接和卷积层的输出一般是一个对称,非稀疏的一个分布,更加类似高斯分布,对他们进行归一化会产生更加稳定的分布。其实想想也是的,像relu这样的激活函数,如果你输入的数据是一个高斯分布,经过他变换出来的数据能是一个什么形状?小于0的被抑制了,也就是分布小于0的部分直接变成0了,这样不是很高斯了。

  • 缺点:
    需要一个足够大的批量,小的批量会导致对批统计数据的不准确性提高,显著增加模型错误率。即BN收到batch影响很大. 例如检测和分割任务.

2. LayerNorm原理(LN)

torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None)

  • 公式:
    在这里插入图片描述

  • 均值和方差的计算与BN相似,只是维度由normalized_shape决定,例如为(3,5),则在最后两个维度.
    在这里插入图片描述

  • 一个图像的例子,在C,H,W上做归一化
    在这里插入图片描述

在CV中,沿着 ( C , H , W ) (C,H,W) (C,H,W)做归一化.

3. Instance Normlization (IN)和 Group Normalization (GN)

  • IN: 沿着 ( H , W ) (H, W) (H,W)轴计算,每个样本单独计算,每个channel单独计算
  • GN: 对channel分组进行计算, C/G为每组的通道数,沿着 ( X / G , H , W ) (X/G, H, W) (X/G,H,W)来计算
    • 当G=1时,变成了LN。GN比LN受限制更少,因为假设每组通道(而不是所有通道)都受共享均值和方差的影响; 该模型仍然具有为每个群体学习不同分布的灵活性。这导致GN相对于LN的代表能力提高。
    • 当G=C时,变成了GN. 但是IN只能依靠空间维度来计算均值和方差,并且错过了利用信道依赖的机会。

4. 汇总

  • BN: 在batch方向做归一化,计算 N ∗ H ∗ W N*H*W NHW的均值
  • LN: 在channel方向做归一化, 计算 C ∗ H ∗ W C*H*W CHW的均值
  • IN: 在一个channel内做归一化, 计算 H ∗ W H*W HW的均值
  • GN: 先将channel方向分group,然后每个group内做归一化,计算 ( C / / G ) ∗ H ∗ W (C//G)*H*W (C//G)HW的均值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10.6.5 【Linux】分区命令: split

如果你有文件太大,导致一些携带式设备无法复制的问题,split可以将一个大文件,依据文件大小或行数来分区,可以将大文件分区成为小文件,快速有效。 将文件分区的话,使用-b size来将一个分区的文件限制其大小&…

软件测试岗位之我所思我所见

从业以来,见过很多人,看过很多事。唯独“测试”我觉得是我自己选的路。所以现在这个时间点,我想分享下我对测试的看法: 1、测试 :“轻松” “劳累” 作为一个测试,你可以轻松的没有下限,也可…

重写equals为什么要重写hashCode(配合源码分析)

目录 一、hashCode的概念 二、为什么要有hashCode 三、为什么重写equals要重写hashCode 四、HashSet源码分析 五、容易记混的点 一、hashCode的概念 hashCode()是Object定义的方法,它将返回一个整型值,这个方法通常用来将对象的内存地址转换为整数之…

postman批量执行请求,通过json传参

1、创建请求 "authUid":"{{authUid}}", 加粗为需要替换的参数 2、组装JSON 可通过Excel自动填充功能构造数据 [ {"authUid":"18700000001"}, {"authUid":"18725929202"} ] 3、批量执行请求配置 4、然后start r…

「网络编程」传输层协议_ UDP协议学习_及原理深入理解

「前言」文章内容大致是传输层协议,UDP协议讲解。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、传输层二、UDP协议2.1 再谈端口号2.2.1 端口号范围划分2.2.2 认识知名端口号2.2.3 端口号注意问题2.2.4 netstat命令和pidof命令 2.2 UD…

实时数据集成的完美搭档:CDC技术与Kafka集成的解决方案

目录 一、实时数据同步 二、可靠的数据传输 三、灵活的数据处理 四、解耦数据系统 五、主流免费CDC工具介绍 六、Flink CDC安装使用步骤: 七、ETL CDC安装使用步骤 八、写在最后 一、实时数据同步 随着企业数据不断增长,如何高效地捕获、同步和…

如何将视频音频提取出来?这几个方法真的实用!

在视频制作和后期处理中,有时我们需要将视频中的音频提取出来,以便单独处理,如剪辑、增强声音等,而不影响视频内容。为了帮助您实现这一目标,下面将介绍几种常用的方法来提取视频音频。 方法一:记灵在线工…

SSH服务(二十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 二、特点 三、身份验证机制 四、验证过程 五、加密机制 六、基本参数 ​七、 身份验证机制 八、基本操作 1. ssh 2. scp 3. sftp 4. 密钥对验证 总结 前…

vue或react当中canvas实现电子签名组件和使用canvas进行图片压缩

<template><div><h1>vue3</h1><canvas id"canvasWrite"> 浏览器不支持Canvas,请升级浏览器 </canvas><div><button class"submit" click"submitWrite">提交签名</button><button clas…

DOM学习

1.DOM 简介 1.1 什么是 DOM 文档对象模型&#xff08;Document Object Model&#xff0c;简称 DOM&#xff09;&#xff0c;是 W3C 组织推荐的处理可扩展标记语言&#xff08;HTML 或者XML&#xff09;的标准编程接口。 W3C 已经定义了一系列的 DOM 接口&#xff0c;通过这些…

Spring项目创建与Bean的存储与读取(DL)

文章目录 一. Spring项目的创建1. 创建Maven项目2. 配置国内源3. 添加spring依赖4. 创建启动类 二.储存或读取Bean对象1. 添加spring配置文件2. 创建Bean对象3. 读取Bean对象 一. Spring项目的创建 1. 创建Maven项目 第一步&#xff0c;创建 Maven 项目&#xff0c;Spring 也…

LAZYSYSADMIN1靶机详解

LAZYSYSADMIN1靶机复盘 一个五分钟就能结束的靶机&#xff0c;非常快。 下载地址&#xff1a;https://download.vulnhub.com/lazysysadmin/Lazysysadmin.zip nmap对这个ip进行单独扫描后发现开启的服务挺多。 就直接枚举了一下这个服务器的内容&#xff0c;发现了一个用户名…

试验数据管理平台解决方案-MDM

试验是汽车研发、生产制造和售后保障过程中必不可少的重要环节。试验员曾到过寒区、热区、高原、沙漠和山路等恶劣环境下的场地来对试验车辆进行相关试验。这是因为汽车在不同的道路、地理和气候条件下行驶时&#xff0c;其性能、效率、可靠性和耐久性等技术特性也会发生变化。…

2023四大进销存软件推荐,第一款适合中小商户使用!

在当今竞争激烈的商业环境中&#xff0c;企业或商户迫切需要使用进销存管理软件&#xff0c;来优化库存控制、提高运营效率、降低成本&#xff0c;并加强与供应链合作伙伴之间的协作和沟通。 为了帮助企业选择适合自己需求的进销存软件&#xff0c;我们特别整理了2023年市面上比…

选择适合的接口测试工具,助力高效在线接口测试

选择适合的接口测试工具&#xff0c;助力高效在线接口测试 接口测试工具在软件开发中扮演着重要的角色。本文将重点介绍不同类型的接口测试工具&#xff0c;特别是在线接口测试工具&#xff0c;探讨其优势和适用场景&#xff0c;帮助您选择适合的工具&#xff0c;提高接口测试…

4、深入理解ribbon

一、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请求会到我们的的nginx上去&#xff0c;nginx作为反向代理&#xff0c;然后路由给后端的服务器&#xff0c;由于负载均衡算法是nginx提供的&#xff0c;而nginx是部署到服务器端的&#xff0c;所以这种方式又被称为…

【Linux】多线程(二)

文章目录 生产者消费者模型为何要使用生产者消费者模型生产者消费者模型优点基于BlockingQueue的生产者消费者模型条件变量条件变量代码 POSIX信号量基于环形队列的生产消费模型 生产者消费者模型 为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生产者和…

qt与opencv学习记录

qtopencv开发入门&#xff1a;4步搞定环境配置-1_哔哩哔哩_bilibili qtopencv开发入门&#xff1a;4步搞定opencv环境配置2_哔哩哔哩_bilibili 文章内容来自上面两个视频&#xff0c;感谢创作者。 ps&#xff1a;配置环境的过程中&#xff0c;遇到了很多问题&#xff0c;我…

UML 图

统一建模语言&#xff08;Unified Modeling Language&#xff0c;UML&#xff09;是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 UML 从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图…

网络流量监控分析

网络管理员是维护健全网络基础设施的关键&#xff0c;这通常是一项艰巨的任务&#xff0c;因为管理员需要 24x7 全天候监控和管理网络和服务器。但是&#xff0c;即使进行全天候监控&#xff0c;每个网络也容易受到带宽占用的影响&#xff0c;如果导致关键业务应用程序变慢&…