首页 > 编程语言 >计算机视觉中各种归一化算法

计算机视觉中各种归一化算法

时间:2024-04-09 18:02:30浏览次数:17  
标签:方差 BN 均值 batch 算法 归一化 视觉 通道

归一化算法是对激活函数的输入进行归一化

将feature map shape设为[N,C,H,W],其中N表示batch size,C表示通道数,H、W分别表示特征图的高度、宽度

Batch Normalization

在batch上,对N、H、W做归一化,保留通道C的维度。对较小的batch size效果不好,BN适用于固定深度的前向神经网络,如CNN,不适用于RNN;

如果把特征图比作一摞书,这螺书总共有N本,每本有C页,每页有H行,每行有W个字符。

BN在求均值时,相当于将这些书按页码一一对应地加起来,再除以每个页码下的字符总数:N\times H\times W,可以将BN看成求“平均书”的操作(“平均书”每页只有一个字)

为什么要进行BN呢?

激活函数会改变各层数据的分布,随着网络的加深,这种差异会越来越大,使模型训练起来特别困难,收敛速度很慢,会出现梯度消失的问题。

BN的主要思想:针对每个神经元,使数据在进入激活函数之前,沿着通道计算每个batch的均值、方差,使数据保持均值为0,方差为1的正态分布,避免发生梯度消失。

把第1个样本的第1个通道,加上第2个样本第1个通道.....加上第N个样本第1个通道,求平均,得到通道1的均值(注意是除以N\times H\times W而不是单纯除以N,最后得到的是一个代表这个batch 第1个通道平均值的数字,而不是一个H×W的矩阵)。求通道1的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。

BN的使用位置:全连接层或卷积操作之后,激活函数之前

BN的算法过程:①沿着通道计算每个batch的方差;②沿着通道计算每个batch的方差;③做归一化;④加入缩放和平移变量(保证每一次数据经过归一化之后,还保留原来学习到的特征,完成归一操作,加速训练)

\mu =\frac{1}{m}\sum_{i=1}^{m}z^{(i)}\sigma ^{2}=\frac{1}{m}\sum_{i=1}^{m}(z^{(i)}-\mu)^{2}z^{(i)}_{Norm}=\frac{z^{(i)}-\mu }{\sqrt{\sigma ^{2}+\varepsilon }}z^{(i)}=\gamma z^{(i)}_{Norm}+\beta

BN的作用

缓解梯度消失,加速网络收敛速度。BN层可以让激活函数(非线性变化函数)的输入数据
落入比较敏感的区域,缓解了梯度消失问题。

简化调参的负担,网络更稳定。在调参时,学习率调得过大容易出现震荡与不收敛,BN层则抑制了参数微小变化随网络加深而被放大的问题,因此对于参数变化的适应能力更强,更容易调参。

防止过拟合。BN层将每一个batch的均值与方差引入到网络中,由于每个batch的这两个值都不相同,可看做为训练过程增加了随机噪音,可以起到一定的正则效果,防止过拟合

BN存在的问题

如果batch size太小,则计算的均值、方差不足以代表整个数据的分布

如果batch size太大,则会超过内存容量,需要跑更多的epoch,导致总训练时间变长,直接固定梯度下降的方向,导致很难更新

Layer Normalization

LN对深度网络中的某一层所有神经元的输入按以下公式进行正则化操作;

LN在通道方向上,对C、H、W做归一化,对RNN效果明显

LN求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C\times H\times W,即求整本书的“平均字”

\mu ^{l}=\frac{1}{H}\sum_{i=1}^{H}a^{l}_{i}

\sigma ^{l}=\sqrt{ \frac{1}{H}\sum_{i=1}^{H}(a^{l}_{i}-\mu ^{l})^{2}}

LN中同层神经元的输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差。

对于特征图,LN对每个样本的C、H、W维度上的数据求均值和标准差,保留N维度。

LN的优势点

不需要批训练,在单个数据内部就能完成归一化。

Instance Normalization

在图像像素上,对H、W做归一化,可以加速模型收敛,并且保持每个图像实例之间的独立

求均值时,相当于把一页书中的所有字加起来,再除以该页的总字数:H\times W

feature map的各个通道的均值和方差会影响到最终生成图像的风格,所以不能对整个batch做归一化。

IN对每个样本的H、W维度的数据求均值和标准差,保留N、C维度;只在通道内部求均值和标准差:y_{tijk}=\frac{x_{tijk}-\mu_{ti}}{\sqrt{\sigma ^{2}_{ti}+\varepsilon }}\mu _{ti}=\frac{1}{HW}\sum^{W}_{l=1}\sum^{H}_{m=1}x_{tilm}\sigma ^{2}_{ti}=\frac{1}{HW}\sum^{W}_{l=1}\sum^{H}_{m=1}(x_{tilm}-\mu_{ti})^{2}

Group Normalization

将channel 分组,然后再做归一化;把一本C页的书平均分成G份,每份成为有C/G页的小册子

GN是为了解决BN对较小的mini-batch size效果差的问题。GN适用于占用显存比较大的任务,例如图像分割。对这类任务,可能batch size 只能是个位数,再大显存就不够用了。而当batch size是个位数时,BN的表现很差,因为没办法通过几个样本的数据量,来近似总体的均值和标准差。GN也是独立于batch 的,它是 LN和IN的折中。

标签:方差,BN,均值,batch,算法,归一化,视觉,通道
From: https://blog.csdn.net/qq_47896523/article/details/137558320

相关文章

  • 说说你对算法中时间复杂度,空间复杂度的理解?如何计算?
    一、前言算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别衡量不同算法之间的优劣主要是通过时间和空间两个维度去考量:时间维度:是指执行当前算法所消耗的时间,我......
  • 使用SPI+DMA控制算法驱动WS2812
    1、ws2812b是一款集控制电路与发光电路于一体的智能外控LED光源,采用单线归0码协议,每个像素点的三基色颜色可实现256级亮度显示。速率能达到1024pixel×30fps/s,故被广泛用于各种需要大量使用RGB灯的场合。2、不同厂商生产的ws2812存在不同的时序要求,下图是一款最常见的ws2812b......
  • 20天【代码随想录算法训练营34期】第六章 二叉树part07 ( ● 530.二叉搜索树的最小绝对
    530.二叉搜索树的最小绝对差#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:deftraversal(self,......
  • 面试中数据结构与算法——知识点最全总结(学完可应对一线大厂)
    各大厂历年高频面试题系列,以下为部分内容不包括全部:双指针类面试题括号类面试题回文类面试题递推类面试题树型dp类面试题区间dp类面试题背包dp类面试题排序相关面试题常见贪心面试题常见图算法面试题子数组类面试题子序列类面试题二分类面试题bfs与dfs类面试......
  • 1. 通信软件基础-移动通信中的算法问题-实验
    目录简介 任务描述:关键词:无线信号强度排序算法相关检测无线信号强度计算 基站信号强度排序相关检测代码模块头文件定义:函数相关:快排:无限信号求和:主函数:变量定义主要流程一主要流程二(搭档写的)总结简介移动通信中的算法问题是指在移动通信系统中,为了实......
  • 深度探索:机器学习Deep Belief Networks(DBN)算法原理及其应用
    目录1.引言与背景2.定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景深度学习在近年来取得了显著进展,其在图像识别、语音识别、自然语言处理等多个领域的成功应用引发了广泛的关注。其中,DeepBeliefNetworks......
  • 深度探索:机器学习堆叠泛化(Stacked Generalization, Blending)算法原理及其应用
    目录1.引言与背景2.集成学习定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景机器学习领域中,模型性能的提升往往依赖于对数据特征的深入理解、恰当的模型选择以及有效的超参数调整。然而,在面对复杂且高度非线性......
  • 深度探索:机器学习多维尺度(MDS)算法原理及其应用
    目录1.引言与背景2.MDS定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景多维尺度分析(Multi-DimensionalScaling,MDS)是一种统计学方法,用于将复杂、高维的相似性或距离数据转化为直观的、低维的可视化表示。MD......
  • 冒泡排序的基本实现【数据结构与算法—TypeScript 实现】
    笔记整理自coderwhy『TypeScript高阶数据结构与算法』课程概念本质:相邻元素两两比较并交换位置,使整个序列按照特定的顺序排列特性复杂度分析时间复杂度:最好情况:O(n)最坏情况:O(n^2)平均情况:O(n^2)空间复杂度:O(1),原地排序使用场景因为时间复杂度为O(n^2)适......
  • 优先队列的基本实现【数据结构与算法—TypeScript 实现】
    笔记整理自coderwhy『TypeScript高阶数据结构与算法』课程特性效率比普通队列高每个出队元素拥有最高优先级可以用数组、链表等数据结构实现,但是堆结构是最常用的实现方式设计实现方式:基于堆结构实现,堆结构底层基于数组实现属性:heap:存放队列元素方法:enq......