归一化公式会强行把每一层的数据都变成均值为0、方差为1的分布。然而,对于某些层来说,数据原本的分布(比如均值是5,方差是10)才是最有用的、最能帮助模型做出正确预测的分布。强行把它"拉平",可能会削弱模型的表达能力,甚至让某些激活函数(如Sigmoid)落入饱和区。

  1. 方差大 → 权重值大
    当你使用较大的方差初始化权重时(比如标准差为1或更大),初始权重值会大概率落在远离0的区域(比如 -2, 3, -4 等)。
  2. 权重值大 → 线性组合输出大
    神经元的输出是:

如果输入是标准正态分布(均值为0,方差为1),而权重 的方差也很大,那么 的方差会更大(因为方差是累加的)。

  1. 输出大 → 激活函数进入饱和区
    sigmoid 为例:
  • 当,
  • 当 ,
    这些区域称为饱和区,因为:
  • 输出几乎不再变化(梯度接近0)
  • 反向传播时,梯度几乎为0,导致梯度消失

常用的归一化手段

BatchNorm(批归一化)以及 LayerNorm(层归一化) 还有大模型用得比较多的

  • BatchNorm(批归一化)横向对比。把一个批次里所有样本的同一个特征放在一起,求平均和标准差,然后标准化。
  • 比如:收集全班50个同学的语文成绩,一起标准化。
  • LayerNorm(层归一化)纵向自省。把一个样本的所有特征放在一起,求平均和标准差,然后标准化。
  • 比如:只看小明一个人的语数外理化生所有成绩,一起标准化。
归一化的区别

"平均值"和"标准差"是怎么算出来的?
假设你的数据是一个表格,行是样本(一个学生)列是特征(科目成绩)

语文 数学 英语
学生A(样本1) 90 80 70
学生B(样本2) 60 50 40
  • BatchNorm (BN) 的计算方式
  • 竖着看(按列)
  • 计算"语文"这列的平均值:(90 + 60) / 2 = 75
  • 然后用这个平均值和标准差去标准化"语文"这列的所有成绩(学生A和B的语文成绩)。
  • 对"数学"、"英语"列重复同样操作。
  • 总结:按特征(科目)维度处理,依赖同批次的其他样本。
  • LayerNorm (LN) 的计算方式
  • 横着看(按行)
  • 计算"学生A"这行的平均值:(90 + 80 + 70) / 3 = 80
  • 然后用这个平均值和标准差去标准化"学生A"自己的所有成绩(他的语数外成绩)。
  • 对"学生B"行重复同样操作。
  • 总结:按样本处理,不依赖其他样本,自己管自己。

简单记住
BN - 横向比(和别人比)
LN - 纵向比(和自己比)

BatchNorm 方法

假设:

  • 批次数据:,其中每个样本 特征维度为 的向量,可以表示为
  • 批次大小:
  • 小常数:(通常为 ,防止除零)

计算步骤

  1. 在某个特征维度上,比如k1的特征维度, 计算均值向量

    其计算是每个批次的数据,把这些数据对应的k1特征维度求平均。

  2. 同样计算方差向量,也是计算是每个批次的数据,把这些数据对应的k1特征维度求方差

  • 是每个特征维度上的方差向量
  • 平方运算为逐元素操作
  1. 输入的维度的标准化(归一化)
  • 对每个样本进行标准化处理
  1. 同样如果有k个维度特征就,每个维度都计算他们对应的均值与方差。

由于CV的输入shape规范一致,batchNorm进行归一化非常有效,能加速训练并提供一定的正则化效果。而不适用于序列模型:在 NLP 任务中,序列长度通常是变化的,BatchNorm 在处理变长序列时非常棘手。

LayerNorm 方法

与BatchNorm方法使用的变量保持一致:

  • 批次数据:,其中每个样本 特征维度为 的向量,可以表示为
  • 批次大小:
  • 小常数:(通常为 ,防止除零)

i表示样本维度,k表示一个样本中的特征维度

1. 对每个样本计算均值
对于每个样本 ,计算其所有特征维度的均值:

⚠️ 注意:这里是每个样本内部求均值,而不是像 BatchNorm 那样跨样本。

2. 对每个样本计算方差
同样,在每个样本内部计算方差:

3. 对每个样本进行标准化
对每个样本的每个特征维度进行归一化:

对 batch size 不敏感,尤其适合处理变长序列和不同大小的 batch,广泛应用于 RNN 和 Transformer 中。

RMSNorm 方法

说到LayerNorm,这里不得不提RMSNorm,源自于论文"Root Mean Square Layer Normalization",被很多主流大模型所采用。

RMSNorm 不计算传统意义的均值 μ 和方差 σ²,而是只计算一个均方根(Root Mean Square, RMS) 值。具体步骤如下:

同样假设:

  • 批次数据:,其中每个样本 特征维度为 的向量,可以表示为
  • 批次大小:
  • 小常数:(通常为 ,防止除零)
  • 单个样本向量:
  1. 计算 RMS(等价于"标准差"但无去均值)

注意:这里没有减去均值,直接用原始值平方。

  1. 完整批次数据的 RMS(整个矩阵的均方根)
    如果需要计算整个批次数据 ( 矩阵)的 RMS(即所有元素的均方根):
  2. 单个样本的归一化

RMSNorm 仅保留均方根,参数量减半,更适合大模型的应用。并且其去掉均值后梯度噪声减小,深层网络梯度消失现象减轻,训练的稳定性更好。

归一化的可学习参数

归一化公式会强行把每一层的数据都变成均值为0、方差为1的分布。然而,对于某些层来说,数据原本的分布(比如均值是5,方差是10)才是最有用的、最能帮助模型做出正确预测的分布。强行把它"拉平",可能会削弱模型的表达能力,甚至让某些激活函数(如Sigmoid)落入饱和区。

我们引入两个可学习的参数 γβ,让网络自己来决定:
BatchNorm 和 LayerNorm 都用同一个公式,但计算范围不同:

输出 = γ * (输入 - 平均值) / 标准差 + β

  • γβ 是可学习的参数,让网络自己决定是否需要恢复一些原始分布。

具体学习如下:

  1. 初始化参数:首先,γβ 被定义为模型的可训练参数。在模型初始化时,γ 通常初始化为全1(这样开始时不做缩放),β 通常初始化为全0(这样开始时不做平移)。
  2. 前向传播:在前向传播过程中,它们会参与计算,影响最终的输出和模型的预测结果。
  3. 反向传播:在反向传播过程中,损失函数的梯度会通过链式法则一直回溯,同样也会计算到损失对 γβ 的梯度
  • d(Loss)/dγ
  • d(Loss)/dβ
  1. 优化器更新:在优化器更新模型所有权重参数的那一步,γβ 也会根据计算出的梯度进行更新
  • γ = γ - learning_rate * d(Loss)/dγ
  • β = β - learning_rate * d(Loss)/dβ

全局移动平均和移动方差

  • 训练阶段:使用当前批次的统计量( 和 )
  • 测试阶段:通常使用训练过程中计算的移动平均(running mean)和移动方差(running variance)

由于在训练阶段,我们使用当前mini-batch的数据来计算均值()和方差()。这为模型引入了噪声,因为每个批次的统计量都略有不同。这种噪声实际上有助于模型的正则化,提升泛化能力。

然而,在推理(测试)阶段,我们通常一次只处理一个样本(或少量样本),或者需要得到确定性的、一致的结果。如果我们仍然使用单个样本的统计量,会出现两个问题:

  • 方差会非常小,甚至为0,导致分母爆炸。
  • 输出结果会高度依赖于最后一个样本,非常不稳定。

因此,我们需要一种能代表整个训练数据集的、稳定的统计量。这就是移动平均和移动方差的用武之地。

移动平均和移动方差,是在训练过程中逐步计算和更新的,但它们不参与反向传播

更新过程通常采用指数移动平均(Exponential Moving Average, EMA) 算法,公式如下: 在每一步训练(处理一个batch)后,执行以下更新:

这里需要区分全局和当前批次移动:

  • running_mean, running_var: 我们要追踪的全局移动平均和移动方差。初始值通常为 0 和 1。
  • batch_mean, batch_var: 当前训练批次计算出的均值和方差。
  • momentum: 一个超参数(通常设为 0.9、0.99 或 0.999),用于控制历史信息与当前批次信息的权重。
  • momentum 越接近 1,running_meanrunning_var 的变化越缓慢,对最新一个批次的"反应"越不敏感,更依赖于历史值,结果更平滑。
  • momentum 越接近 0,则更依赖于当前批次的值。

根据公式3可得,推理阶段的公式为

我们可以想象一个温度计在记录全年的每日平均温度:

  • 训练阶段(batch_mean:就像只看今天一天的温度,然后说"今天是夏天/冬天"。这个结论波动很大。
  • 移动平均(running_mean:就像计算过去30天的平均温度。它能更平滑、更稳定地反映季节变化的趋势,而不会被某一天的极端天气所过度影响。
  • 推理阶段:当有人问你"现在大概是什么温度?"时,你会根据那个平滑的"30天平均趋势"来回答,而不是仅根据今天这一天的温度。这个答案更可靠、更具代表性。

前归一化(PreNorm)与后归一化(PostNorm)

如下图所示:

PreNorm 将输入 先进行归一化操作,然后再将经过多头注意力层或前馈神经网络层运算后的输出进行残差连接,这一过程可以通过以下公式表示:

PostNorm 将输入 经过多头注意力层或前馈神经网络层运算后的输出进行残差连接,然后再进行归一化操作,这一过程可以通过以下公式表示:

这里的 为Muti-head Attention 或者 FFN 网络结构。

残差连接的理解

残差公式如下:H(x) = F(x) + x,+ x 就是跳跃连接,它将输入 x 直接"跳跃"到输出端,与残差映射 F(x) 进行逐元素相加。允许梯度直接反向传播(避免梯度消失),但也可能导致每层的输出幅度逐渐增大(尤其是深层网络),使得训练不稳定。

  • 残差连接:原始残差块的计算为 ,其中 是输入, 是某一层(如Transformer中的Attention或FFN)的输出。恒等分支(即 )允许梯度直接反向传播,缓解梯度消失。
  • PostNorm 在残差之后进行归一化,将每层的输出重新缩放为中心化、标准化的分布,从而抑制了幅度累积增长,使训练过程更稳定。

原本残差连接中的恒等分支是,即第n层的输出与输入相同,但是引入PostNorm后,恒等分支的权重被削弱了。同样,对于第n-1层、第n-2层,每靠近模型输入端一层,恒等分支的权重就会被削弱一次。具体推导公式如下:

  • PostNorm:在残差连接之后进行层归一化(LayerNorm),即 。
方差假设与归一化的作用
  • 假设 的方差为, 的方差为(即输入和输出的方差都被初始化为1)。
  • 那么残差和 的方差为 (假设 和 独立)。
  • PostNorm(LayerNorm)会强制将激活值的方差重新缩放为1。因此,它需要将 除以 来将方差从2降为1(因为方差具有平方尺度:,所以令 时,方差变为 )。

因此,PostNorm操作后输出为:

恒等分支被削弱

在原始残差连接中,恒等分支(即 )的系数是1。但这里由于除以了 ,恒等分支的权重从1变成了 :

这意味着:

  • 输入 的贡献被削弱了(乘以因子 )。
  • 同样,的贡献也被削弱了。

越靠近输入的层,削弱越严重:因为每一层都会进行这样的归一化,所以第 层的输入 实际上已经经历了多次除以 的操作(假设每层方差类似)。例如,第1层的输入在传到第2层时被除以,再传到第3层时又被除以(即累计除以 ),以此类推。因此,较早层的输入信号在向前传播时会被持续缩小,导致梯度不稳定(因为梯度反向传播时也会经过同样的缩放)。

PreNorm 推导
  • PreNorm(先归一化):将LayerNorm放在残差连接之前,即。
  • PreNorm不会改变恒等分支的权重(始终为1),因此梯度更稳定,但训练可能更慢(因为梯度主要走恒等分支,优化器需要更努力地更新参数)。
  • PostNorm在训练初期更不稳定,但某些研究表明其最终性能可能更好(需要精细调参)。

公式:

是PostNorm为了控制方差而做的重新缩放操作。它削弱了残差连接中恒等分支(输入)的贡献(乘以 ),并且这种削弱会逐层累积,导致模型底层梯度不稳定。这是PostNorm相比PreNorm的主要缺点之一

总结

归一化技术是现代深度学习中的核心组件,通过稳定训练过程、缓解梯度消失/爆炸问题,显著提升了深层网络的训练效果。BatchNorm、LayerNorm和RMSNorm分别适用于不同的场景:BatchNorm在CV领域的卷积网络中表现出色但对batch size敏感;LayerNorm对batch size不敏感,广泛应用于NLP任务;RMSNorm则通过简化计算和减少参数量,在大模型中显示出优势。此外,PreNorm和PostNorm的选择会影响训练稳定性和性能,需要根据具体任务进行调整。理解这些归一化技术的原理、计算方式和适用场景,对于设计和优化深度学习模型至关重要。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

在这里插入图片描述

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

02.大模型 AI 学习和面试资料

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐