大语言模型的终极之路
  • 大语言模型的终极之路
  • 更新计划
  • 大语言模型时代的NLP
    • 任务与评测
    • 参考资料
  • 基础知识
    • 负对数似然
    • Transformer
      • Cross Attention
      • 向量流动视角
      • Layer Normalization
      • Attention Block
    • 优化算法
      • 牛顿法
      • 梯度下降
  • 大语言模型
    • 大模型理论
      • Scaling Law
      • The Bitter Lesson
      • 思考,快与慢
    • 模型结构
      • MLP
      • Rotary Embedding
      • RMSNorm
      • Encoder-decoder
      • Decoder-only
      • MOE
      • 常见大模型
        • T5
        • GPT2
        • LLaMA
        • LLaMA 2
        • Mistral
        • GLM
        • Mixture
    • 如何训练一个ChatGPT
    • 微调
      • Instruction Tuning 指令微调
      • Domain Finetune 领域微调
    • 解码
      • 温度采样
      • Beam Search Decoding
  • Prompt 工程
    • Prompt, 一种技术路线
    • Prompt 写作规范
    • In-Context Learning
    • Chain-of-Thought
    • Generate Rather than Read
    • Program-of-Thought
    • Tree-of-Thought
    • 参考资料
  • 知识与幻觉
    • 知识边界
  • 大规模预训练
    • 计算资源消耗
    • Deepspeed
    • Megatron
    • 大规模数据处理
    • CUDA 算子优化
  • 强化学习
    • RLHF
      • RLHF
  • 大模型轻量化
    • 蒸馏
      • 黑盒蒸馏
      • 白盒蒸馏
        • KL 散度
    • 轻量化微调
      • LoRA
    • 量化
    • 剪枝
    • 推理加速
    • 参考资料
  • RAG-大模型检索
    • Page 3
  • 多智能体
    • Page 6
  • 多模态大模型
    • Page 1
  • 大模型安全与鲁棒
由 GitBook 提供支持
在本页
  1. 基础知识
  2. Transformer

Layer Normalization

Layer Normalization(层归一化)是一种正则化技术,它在神经网络处理中用于改善训练的稳定性和加速收敛。它应用于每一层的输入,在每一层上进行归一化。此外,它与批归一化(Batch Normalization)不同,不依赖于batch的大小。因此,它在小batch甚至是单个样本时也能很好地工作。

Layer Normalization 的公式如下:

假设输入为 x=[x1,x2,…,xH] \mathbf{x} = [x_1, x_2, \ldots, x_H]x=[x1​,x2​,…,xH​] ,其中 (H) 是隐藏单元的数量,那么:

  1. 首先计算输入的均值和方差: μ=1H∑i=1Hxi][σ2=1H∑i=1H(xi−μ)2\mu = \frac{1}{H} \sum_{i=1}^H x_i ] [ \sigma^2 = \frac{1}{H} \sum_{i=1}^H (x_i - \mu)^2 μ=H1​∑i=1H​xi​][σ2=H1​∑i=1H​(xi​−μ)2

  2. 然后使用计算出来的均值和方差对输入进行归一化: x^i=xi−μσ2+ϵ\hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} x^i​=σ2+ϵ​xi​−μ​ 这里的 ( ϵ\epsilonϵ ) 是一个非常小的常数,用于防止除零错误。

  3. 最后,进行线性变换(可选的尺度和偏移参数): [ yi=γx^i+βy_i = \gamma \hat{x}_i + \beta yi​=γx^i​+β] 其中 ( γ\gamma γ ) 和 ( β\betaβ ) 是可学习参数,分别是尺度和偏移。

总结一下,Layer Normalization 的步骤可以归纳为:

这种归一化方法会独立地对每个样本进行操作,与其他样本无关,因此在处理序列或单个数据点时具有优势。

Transformer为什么要使用 LayerNorm 而不是 BatchNorm

在Transformer架构中,通常使用Layer Normalization(层归一化)而不是Batch Normalization(批归一化),这主要是由于以下几个原因:

  1. 序列数据及变长特性:Transformer主要用于处理序列数据,如自然语言处理中的句子。Batch Normalization依赖于批次内的统计信息(如均值和方差),这在固定大小的图像数据处理中效果很好。然而,对于变长的序列数据,批次内样本之间的长度差异使得统计信息的获取和应用比较复杂。

  2. 并行化需求:Transformer经常需要在序列的多个位置并行执行操作,尤其是自注意力机制中。Batch Normalization需要集合一批样本进行统计计算,而Layer Normalization是针对单个样本的,不依赖其他样本,因此更适合这种并行处理。

  3. 递归依赖问题:在语言模型中,处理序列的每一步可能依赖先前的步骤。Batch Normalization在这种情况下可能会引入复杂的依赖关系和不稳定性,而Layer Normalization直接在单个样本的维度上进行归一化,可以避免这些问题。

  4. 简化训练过程:Layer Normalization对于不同的输入和批量大小具有更好的鲁棒性,简化了训练过程。它仅对单个序列的特征进行标准化,所以不会因批次间的变化而受到影响。

总的来说,Layer Normalization在处理变长序列和自注意力机制中表现出更好的兼容性和稳定性,因此在Transformer架构中更为常用。

上一页向量流动视角下一页Attention Block

最后更新于10个月前