BN LN

1. BN的优势总结

  • 通过解决ICS的问题,使得每一层神经网络的输入分布稳定,在这个基础上可以使用较大的学习率,加速了模型的训练速度
  • 起到一定的正则作用,进而减少了dropout的使用。当我们通过BN规整数据的分布以后,就可以尽量避免一些极端值造成的overfitting的问题
  • 使得数据不落入饱和性激活函数(如sigmoid,tanh等)饱和区间,避免梯度消失的问题

2. LN优势总结

在Transformer模型中,Layer Normalization(LN,层归一化)是一种常用的归一化技术。Pre - LN(Pre - Layer Normalization)是对传统LN使用方式的一种改进,以下是关于Pre - LN的介绍及其原因: ### 1. Pre - LN的定义 在传统的Transformer架构中,Layer Normalization通常应用在残差连接之后,即"先计算注意力机制和前馈神经网络,再进行层归一化",其计算流程可以表示为: [ \begin{align*} \text{Attention Output}&=\text{Attention}(\text{Input})\ \text{FFN Output}&=\text{FFN}(\text{Attention Output})\ \text{Output}&=\text{LN}(\text{Attention Output}+\text{Input}+\text{FFN Output}) \end{align*} ] 而Pre - LN则是将Layer Normalization应用在每个子层(注意力子层和前馈神经网络子层)之前,计算流程变为: [ \begin{align*} \text{LN - Input - Attention}&=\text{LN}(\text{Input})\ \text{Attention Output}&=\text{Attention}(\text{LN - Input - Attention})\ \text{LN - Input - FFN}&=\text{LN}(\text{Input}+\text{Attention Output})\ \text{Output}&=\text{FFN}(\text{LN - Input - FFN}) \end{align*} ] ### 2. 使用Pre - LN的原因

  • 在learning rate schedular上,Pre-LN不需要采用warm-up策略,而Post-LN必须要使用warm-up策略才可以在数据集上取得较好的Loss和BLEU结果。
  • 在收敛速度上,由于Pre-LN不采用warm-up,其一开始的learning rate较Post-LN更高,因此它的收敛速度更快。
  • 在超参调整上,warm-up策略带来了两个需要调整的参数: (最大学习率)和 (warmup过程的总步数)。这两个参数的调整将会影响到模型最终的效果。而由于transformer模型的训练代价是昂贵的,因此多引入超参,也给模型训练带来了一定难度。
  • 缓解梯度消失问题:在传统的Transformer中,随着网络层数的增加,深层网络的梯度在反向传播过程中容易逐渐变小,导致模型难以训练。Pre - LN使得每层的输入都被归一化到相近的分布,使得梯度在反向传播时更加稳定,避免了梯度消失, 从而使得模型能够训练更深的网络结构。
  • 加快训练收敛速度:归一化后的输入数据能让神经网络中的参数更容易学习,因为数据分布的稳定性减少了参数更新时的波动,使得模型能够更快地找到最优解。实验表明,使用Pre - LN的Transformer模型在训练过程中收敛速度更快, 可以减少训练所需的时间和计算资源。
  • 增强模型的泛化能力:Pre - LN使得模型在训练过程中更加稳定,不容易出现过拟合现象。因为它对输入数据的分布进行了约束,使得模型在不同的训练样本上表现更加一致,从而提高了模型在未见数据上的泛化能力。
  • 降低训练过程中的不稳定性:传统的Transformer架构中,当输入数据的规模较大或者变化较剧烈时,经过多个子层的计算后,可能会导致数值不稳定,比如某些层的输出值过大或过小。Pre - LN通过在每个子层前对输入进行归一化,有效降低了这种不稳定性,让模型训练过程更加平稳。 总的来说,Pre - LN通过改变Layer Normalization的应用位置,在训练效率、模型稳定性和泛化能力等方面对Transformer模型进行了优化。
相关推荐
yanlele3 分钟前
我用爬虫抓取了 25 年 6 月掘金热门面试文章
前端·javascript·面试
追逐时光者1 小时前
面试第一步,先准备一份简洁、优雅的简历模板!
后端·面试
古希腊被code拿捏的神4 小时前
【Flutter】面试记录
flutter·面试·职场和发展
小飞悟5 小时前
那些年我们忽略的高频事件,正在拖垮你的页面
javascript·设计模式·面试
嘻嘻哈哈开森6 小时前
技术分享:深入了解 PlantUML
后端·面试·架构
爱学习的茄子6 小时前
JavaScript闭包实战:解析节流函数的精妙实现 🚀
前端·javascript·面试
Dgua6 小时前
🚀Promise 从入门到手写:核心方法实现全指南
前端·面试
Hilaku7 小时前
我为什么放弃了“大厂梦”,去了一家“小公司”?
前端·javascript·面试
然我7 小时前
React 事件机制:从代码到原理,彻底搞懂合成事件的核心逻辑
前端·react.js·面试
豆苗学前端7 小时前
从零开始教你如何使用 Vue 3 + TypeScript 实现一个现代化的液态玻璃效果(Glass Morphism)登录卡片
前端·vue.js·面试