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模型进行了优化。
相关推荐
程序员Sunday7 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
小 黄 鸡8 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
程序员Sunday12 小时前
ES Module 和 CommonJS 有什么区别?循环依赖时会发生什么?
前端·javascript·面试
溯原的技术笔记13 小时前
JavaScript 闭包
面试
无敌贵点大王13 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
救救孩子把13 小时前
AI面试八股文-07_6-向量数据库索引详解
数据库·人工智能·面试·向量数据库·hnsw
程序 代码狂人13 小时前
数据开发面试【问答完整版|带深挖追问 + 扩展回答】
面试·职场和发展
江华森14 小时前
Web漏洞与中间件框架漏洞实战详解
面试
美味蛋炒饭.17 小时前
java八股面试(3)
java·开发语言·面试
考研保研资料分享17 小时前
2022食品跨申农业工程保研:中农、海大与华工考核复盘
面试