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模型进行了优化。
相关推荐
许彰午1 小时前
我手写了一个 Java 内存数据库(二):B+ 树的插入与分裂
java·开发语言·面试
weisian1516 小时前
基础篇--概念原理-2-参数是什么?——从原理到实战,一篇讲透
面试·职场和发展·模型参数·7b和70b·参数=规则,不是原始数据
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题】【Java基础篇】第26题:Java的抽象类和接口有哪些区别
java·开发语言·面试
逻辑驱动的ken9 小时前
Java高频面试考点场景题20
java·开发语言·深度学习·面试·职场和发展
Wect10 小时前
深度剖析浏览器跨域问题
前端·面试·浏览器
刀法如飞11 小时前
Java数组去重的20种实现方式——指导AI解决不同问题的思路
java·算法·面试
ayqy贾杰11 小时前
Cursor SDK发布!开发者可直接搬走其内核
前端·vue.js·面试
JAVA面经实录91720 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
小程故事多_801 天前
[大模型面试系列] 多轮对话 Agent 设计实战(含窗口优化 + 工具调用精髓)
人工智能·面试·职场和发展
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征
java·开发语言·后端·面试