基础算法:BN与LN算法区别

本文探讨了批量归一化(BN)和层归一化(LN)在深度学习中的区别,BN对大batchsize需求高且内存消耗大,适用于大batch训练;而LN无需批训练,适用于batchsize为1和RNN中的输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网址:https://blog.csdn.net/Miracle_520/article/details/105429456?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162814815816780271581681%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162814815816780271581681&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-105429456.first_rank_v2_pc_rank_v29&utm_term=BN%E4%B8%8ELN%E7%AE%97%E6%B3%95%E5%8D%B4%E5%88%AB&spm=1018.2226.3001.4187

BN算法有一个很大的缺点:在比较大的batchsize情况下,才可以合理的估计训练数据的均值和方差,这导致内存很可能不够用,同时也很难运用在训练数据长度不同的RNN模型中。

原因:因为BN算法在计算的过程中方差和均值是在一个batch上的,所以如果太小就没有说明性。

LN算法有一个优势,不需要批训练,在单条数据内部就能归一化。

对于数据x∈ℝN×𝐶×𝐻×𝑊,LN对每个样本的C,H,W维度上的数据求均值和标准差,保留N维度

𝜇𝑛𝑥=1CHWc=1Ch=1𝐻𝑤=1𝑊𝑥𝑛𝑐𝑤h

𝜎𝑛𝑥=1CHWc=1Ch=1𝐻𝑤=1𝑊(𝑥𝑛𝑐𝑤h−𝜇𝑛𝑥)2+∈

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

BN中则针对不同神经元输入计算均值和方差,同一个batch中的输入拥有相同的均值和方差。 所以,LN不依赖于batch的大小和输入sequence的深度,因此可以用于batchsize为1和RNN中对边长的输入sequence的normalize操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值