层归一化:解决批量归一化无法解决的问题

释放双眼,带上耳机,听听看~!
了解层归一化的原理和优势,解决批量归一化无法解决的问题,优化神经网络训练和测试过程。

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情

批量归一化的加入,让网络效果更好,收敛更快。但批量归一化并不是适合所有类型的网络,例如 RNN,这是我们今天为什么要去介绍 layer normalization 的动机, 他可以解决批量归一化无法解决问题。

批量归一化存在着很多问题,例如不适合于序列数据,这是因为序列数据长度是变化,这样计算可变长度序列的均值和方差变得非常复杂。还有就是也不适合小批量的数据,过小批量数据的均值和方差无法反应数据集整体样本的均值和方差。

除了以上问题,因为批量归一化很难对网络进行并行计算。以上 3 问题都是因为批量归一化是依赖于批量处理,那么层归一化中不存在对批量的依赖,通过基于层而不是基于批量进行归一化

用一句话快速概括层归一化,就是对同一层的所有神经元的输入值,也就是一个样本数据进行归一化处理。同一层的所有神经元都有相同的归一化项,所以有相同的平均值和相同的方差,让我们看看这在实践中是如何工作的。

层归一化:解决批量归一化无法解决的问题

input = torch.tensor([
    [5.,4,7,2],
    [1,6,2,3],
    [4,8,1,9]
])
mean,std = torch.mean(input,dim=0),torch.std(input,dim=0)
(input[:,] - mean)/std

层归一化:解决批量归一化无法解决的问题

在这样图中,通过2维空间来表示一个 batch, 每一列表示一个样本,每一行表示样本的特征,可以看出在左侧 BN 是在特征维度上进行归一化操作,而对于 LN 则是在列这个维度上进行归一化,也就是在输入神经网一层每一个样本进行归一化,这也就是为什么叫层归一化的原因。对于每一个样本来做归一化很好避免对了不同长度样本在特征维度做归一化带来问题。

由于层归一化是对每一个样本进行归一化,所以并不依赖于批量,所以可以做并行计算,也可以解决序列长短大小不一致的问题。同时因为是对于样本进行均值和方差,所以在训练和测试对于层归一化是没有区别的。

层归一化:解决批量归一化无法解决的问题

在上面图中列出当下一些归一化类型

  • BN 也就是我们
本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

GPT 系列模型及发展历程

2023-12-16 4:24:14

AI教程

YOLOv7模型结构及使用环境

2023-12-16 6:34:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索