首页 > 其他分享 >5. bn和ln

5. bn和ln

时间:2024-04-11 23:45:27浏览次数:19  
标签:缩放 ln bn 样本 self 特征 input BN

batchnormalization和layernormalization,主要区别在于 normalization的方向不同。

normalization

Normalization:规范化或标准化,就是把输入数据X,在输送给神经元之前先对其进行平移和伸缩变换,将X的分布规范化成在固定区间范围的标准分布。

Normalization 的作用很明显,把数据拉回标准正态分布,因为神经网络的Block大部分都是矩阵运算,一个向量经过矩阵运算后值会越来越大,为了网络的稳定性,我们需要及时把值拉回正态分布。

bn和ln的区别

Batchnorm 顾名思义是对一个batch进行操作。假设我们有 10行 3列 的数据,即我们的batchsize = 10,每一行数据有三个特征,假设这三个特征是【身高、体重、年龄】。那么BN是针对每一列(特征)进行缩放,例如算出【身高】的均值与方差,再对身高这一列的10个数据进行缩放。体重和年龄同理。这是一种“列缩放”。

而layer方向相反,它针对的是每一行进行缩放。即只看一笔数据,算出这笔所有特征的均值与方差再缩放。这是一种“行缩放”。

可以看出,layer normalization 对所有的特征进行缩放,这显得很没道理。我们算出一行这【身高、体重、年龄】三个特征的均值方差并对其进行缩放,事实上会因为特征的量纲不同而产生很大的影响。但是BN则没有这个影响,因为BN是对一列进行缩放,一列的量纲单位都是相同的。

BN抹杀了不同特征之间的大小关系,但是保留了不同样本间的大小关系;LN抹杀了不同样本间的大小关系,但是保留了一个样本内不同特征之间的大小关系。(理解:BN对batch数据的同一特征进行标准化,变换之后,纵向来看,不同样本的同一特征仍然保留了之前的大小关系,但是横向对比样本内部的各个特征之间的大小关系不一定和变换之前一样了,因此抹杀或破坏了不同特征之间的大小关系,保留了不同样本之间的大小关系;LN对单一样本进行标准化,样本内的特征处理后原来数值大的还是相对较大,原来数值小的还是相对较小,不同特征之间的大小关系还是保留了下来,但是不同样本在各自标准化处理之后,两个样本对应位置的特征之间的大小关系将不再确定,可能和处理之前就不一样了,所以破坏了不同样本间的大小关系)

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

Transformer为什么用layernorm

首先RNN或Transformer解决的是序列问题,一个存在的问题是不同样本的序列长度不一致,而Batch Normalization需要对不同样本的同一位置特征进行标准化处理,所以无法应用;当然,输入的序列都要做padding补齐操作,但是补齐的位置填充的都是0,这些位置都是无意义的,此时的标准化也就没有意义了。

其次上面说到,BN抹杀了不同特征之间的大小关系;LN是保留了一个样本内不同特征之间的大小关系,这对NLP任务是至关重要的。对于NLP或者序列任务来说,一条样本的不同特征,其实就是时序上的变化,这正是需要学习的东西自然不能做归一化抹杀,所以要用LN。

代码

batchnorm

class BatchNorm1d(_BatchNorm):
    def _check_input_dim(self, input):
        if input.dim() != 2 and input.dim() != 3:
            raise ValueError('expected 2D or 3D input (got {}D input)'
                             .format(input.dim()))

layernorm

class LayerNorm(torch.nn.Module):
    def __init__(self,
                 dimension: int,
                 eps: float = 1e-6) -> None:
        super().__init__()
        self.gamma = torch.nn.Parameter(torch.ones(dimension))
        self.beta = torch.nn.Parameter(torch.zeros(dimension))
        self.eps = eps

    def forward(self, tensor: torch.Tensor):  # pylint: disable=arguments-differ
        # 注意,是针对最后一个维度进行求解~
        mean = tensor.mean(-1, keepdim=True)
        std = tensor.std(-1, unbiased=False, keepdim=True)
        return self.gamma * (tensor - mean) / (std + self.eps) + self.beta

标签:缩放,ln,bn,样本,self,特征,input,BN
From: https://www.cnblogs.com/ratillase/p/18130267

相关文章

  • 卷积神经网络基础---批量归一化(BN层、 Batch Normalization)
    原文链接:https://blog.csdn.net/weixin_43972154/article/details/1201998331.BN层的作用BN层使得神经网络能够设定较高的初始学习率,加速模型收敛过程;将数据进行归一化处理,即在网络的每一层输入的时候,插入了一个归一化层,然后再进入网络的下一层。这样能提高网络的泛化能力,使得网......
  • UPnP/DLNA媒体服务器搭建
    UPnP/DLNA媒体服务器可以在家庭局域网中分享音乐、照片、视频等媒体资源,本文将讲述PC、路由器、NAS三种常见的搭建UPnP/DLNA媒体服务器分享音乐的方法。1.PC平台UniversalMediaServer是PC平台常用的媒体服务器,开放且免费,官网:https://www.universalmediaserver.com/。支持Windo......
  • ping,telnet,traceroute原理
    1pingping发送的是ICMP报文,ICMP报文是和tcp报文处在同一层次,嵌套在IP报文内(报文头中的Protocol=1,在IP报文中通过Protocol的值决定接下来应当将数据交给哪个协议层进行进一步处理,tcp协议Protocol=6,ICMP协议Protocol=1)tcp协议报文必须指定源端口和目的端口ICMP协议报文不需要指......
  • 5、Hackademic-RTB1(VulnHub)
    Hackademic-RTB1一、nmap扫全端口会爆炸,暂时使用默认先扫描出两个二、web渗透随便看看简单目录爆破/Hackademic_RTB1/根据界面提示,我们可以来到这个目录源码处发现框架再次目录爆破wscan扫描WordPress1.5.1searchsploit/wp-content/plugins/在目录爆破......
  • Seurat Dimplot, Vlnplot画图时报错,Error in setup_panel_guides(..., self = self) :
    SeuratDimplot,Vlnplot画图时报错,Errorinsetup_panel_guides(...,self=self):unusedargument(list(~features.plot,~id))pdf(paste0("EBV_GaC","_Marker_genes_Vln.png"),width=30,height=10)>DotPlot(object=subset_cells,featur......
  • 打靶:vulnhub中的SickOS1.1
    靶机下载链接:https://download.vulnhub.com/sickos/sick0s1.1.7z复现视频:【「红队笔记」靶机精讲:SickOS1.1-穿越Squid代理的CMS渗透】https://www.bilibili.com/video/BV1Em4y1A7XX?vd_source=09d322662ec63869ded6328cd2203029解法一靶机安装成功页面,靶机网络要设置成net......
  • sd+ebsynth_utility扩展+controlNet实现视频换风格
    1.安装sd,安装EbSynth(https://ebsynth.com/)2.安装扩展:https://github.com/Mikubill/sd-webui-controlnethttps://github.com/s9roll7/ebsynth_utility3.下载模型基础模型选用c站:https://civitai.com/models/104100?modelVersionId=155254 下载放置sd扩展path/to......
  • 深度探索:机器学习Deep Belief Networks(DBN)算法原理及其应用
    目录1.引言与背景2.定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景深度学习在近年来取得了显著进展,其在图像识别、语音识别、自然语言处理等多个领域的成功应用引发了广泛的关注。其中,DeepBeliefNetworks......
  • BNIP3作为识别实体瘤预后和诊断的潜在生物标志物
    介绍本文复现的是一篇单基因泛癌的文章,原文链接:BNIP3asapotentialbiomarkerfortheidentificationofprognosisanddiagnosisinsolidtumours视频链接:零代码复现1-BNIP3作为识别实体瘤预后和诊断的潜在生物标志物工具链接:http://www.sxdyc.com/zeroCodeTool本......
  • Vulnhub靶机——EMPIRE: BREAKOUT
    靶机地址Empire:Breakout~VulnHub渗透关键点(1)tar文件具有可执行权,并且具备跨目录读取任意文件的特殊权限(2)backups(备份文件)中存在信息敏感文件渗透思路总结(1)信息收集(端口信息,源码泄露,服务扫描)(2)利用tar文件的特殊权限实现任意文件读取(3)su登录失败则执行反弹shell......