【NLP学习笔记1】BN、LN和WN区别与实现

一、BN(Batch Nomalization,批标准化)

1、为什么要做BN

个人觉得这篇文章讲的很好https://zhuanlan.zhihu.com/p/24810318

一般来说,如果模型的输入特征不相关且满足标准正态分布时,模型的表现一般较好。

但是当每层数据在经过激活函数后,数据值容易趋向于激活函数的饱和值,那么当经过多层的激活函数后,数据将趋于极点,从而丧失了数据原本的分布信息,这时候模型的表现将下降。

为了充分利用数据以及激活函数的的分布信息,我们在每一层后面都会做一个BN,重新将数据标准化。

2、BN的作用

https://zhuanlan.zhihu.com/p/26138673

贴出论文中的两张图,就可以说明BN层的作用

  1. 使得模型训练收敛的速度更快
  2. 模型隐藏输出特征的分布更稳定,更利于模型的学习

这图可以看出BN在更小的step时,就能趋近于收敛。且输出的数据波动性更小。

3、如何做BN

算法如下:

我们会发现最后有个反标准化的操作, 将 normalize 后的数据再扩展和平移。这是为了让神经网络自己去学着使用和修改这个扩展参数 gamma, 和 平移参数 β, 这样神经网络就能自己慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 gamma 和 belt 来抵消一些 normalization 的操作.

4、BN的限制

https://zhuanlan.zhihu.com/p/54171297

BN是深度学习调参中非常好用的策略之一(另外一个可能就是Dropout),当你的模型发生梯度消失/爆炸或者损失值震荡比较严重的时候,在BN中加入网络往往能取得非常好的效果。

BN也有一些不是非常适用的场景,在遇见这些场景时要谨慎的使用BN:

  • 受制于硬件限制,每个Batch的尺寸比较小,这时候谨慎使用BN;
  • 在类似于RNN的动态网络中谨慎使用BN;
  • 训练数据集和测试数据集方差较大的时候。

5、如何代码实现BN

https://blog.csdn.net/weixin_40123108/article/details/83509838

https://zhuanlan.zhihu.com/p/269465213

三、BN和LN的区别

https://zhuanlan.zhihu.com/p/74516930

https://blog.csdn.net/HUSTHY/article/details/106665809?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-1-106665809.pc_agg_rank_aggregation&utm_term=layer+normalization%E4%BD%9C%E7%94%A8&spm=1000.2123.3001.4430

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值