Skip to content

大模型的模型内部参数,指的是:训练过程中会被更新、最终存进模型权重文件里的那些数值

平时说的:

text
7B、13B、70B、175B 参数

这里的 B = Billion,十亿,说的就是模型内部有多少个可训练参数。

以 Transformer 大模型为例,内部参数主要包括:

text
Embedding 参数
Attention 参数
FFN / MLP 参数
LayerNorm 参数
输出层参数
部分模型里的 MoE 参数
微调时的 LoRA / Adapter 参数

1. Embedding 参数:把 token 变成向量

大模型不能直接理解文字,它看到的是 token ID。

比如:

text
“我喜欢AI” → [1256, 893, 10293]

这些数字本身没有语义,所以模型需要一个 Embedding 矩阵,把 token ID 映射成向量。

假设:

text
词表大小 vocab_size = 50000
隐藏维度 hidden_size = 4096

那么 Embedding 矩阵大小就是:

text
50000 × 4096

也就是大约:

text
2.048 亿个参数

它的作用是:

text
token ID → 语义向量

例如:

text
“猫” → [0.12, -0.31, 0.87, ...]
“狗” → [0.10, -0.28, 0.83, ...]
“汽车” → [-0.55, 0.72, -0.16, ...]

训练之后,语义相近的词,它们的向量通常也更接近。

简单理解:

> Embedding 参数负责让模型“认识词”。


2. Attention 参数:让模型学会看上下文关系

Transformer 的核心是 Attention,尤其是 Self-Attention。

Attention 里面最重要的是四组矩阵:

text
WQ:Query 权重矩阵
WK:Key 权重矩阵
WV:Value 权重矩阵
WO:Output 权重矩阵

分别对应:

参数含义直观理解
WQ生成 Query我想找什么信息
WK生成 Key我能提供什么索引
WV生成 Value我真正携带的信息
WO输出映射把注意力结果整合回模型维度

假设当前 token 的隐藏向量是:

text
x

那么会被映射成:

text
Q = xWQ
K = xWK
V = xWV

然后模型通过 Q 和 K 计算注意力分数:

Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V

这一步决定:

> 当前 token 应该重点关注前文中的哪些 token。

比如句子:

text
小明把书放进书包,因为它很重。

模型需要判断“它”指的是“书”还是“书包”。

Attention 参数训练得好,模型就能根据上下文判断指代关系、语义关系、逻辑关系。

简单理解:

> Attention 参数负责让模型“理解上下文关系”。


3. Multi-Head Attention 参数:多个角度看一句话

大模型通常不是只有一个 Attention,而是多个 Attention Head。

比如:

text
hidden_size = 4096
num_heads = 32

每个 head 负责从不同角度理解文本。

有的 head 可能关注:

text
主语和谓语关系

有的 head 可能关注:

text
代词指代关系

有的 head 可能关注:

text
上下文主题关系

有的 head 可能关注:

text
代码括号、缩进、变量引用

所以 Multi-Head Attention 可以理解为:

> 让模型从多个视角同时理解一句话。

这些 head 背后的参数,本质上还是 WQ、WK、WV、WO,只是被拆分成多个头来计算。


4. FFN / MLP 参数:对信息进行深度加工

Transformer 每一层里,除了 Attention,还有一个非常重要的模块:

text
Feed Forward Network

也叫:

text
FFN / MLP

Attention 负责看上下文关系,而 FFN 负责对每个 token 的特征进行进一步加工。

常见结构是:

text
Linear → 激活函数 → Linear

在很多大模型里会写成:

text
Up Projection → Activation → Down Projection

例如:

text
hidden_size = 4096
intermediate_size = 11008

那么 FFN 里面通常有两个大矩阵:

text
W_up:4096 × 11008
W_down:11008 × 4096

这部分参数量非常大。

很多 Transformer 模型中,FFN 参数量往往比 Attention 参数量还多

简单理解:

> Attention 负责“看谁重要”,FFN 负责“想明白”。

比如模型读到:

text
苹果发布了新芯片。

Attention 可以帮助模型关注“苹果”和“芯片”的关系。

FFN 则进一步加工:

text
这里的“苹果”不是水果,而是 Apple 公司。

5. Gate 参数:控制信息通过多少

很多现代大模型的 FFN 不是普通的两层 MLP,而是使用带门控的结构,比如:

text
SwiGLU
GEGLU
Gated MLP

这种结构通常有三个矩阵:

text
W_gate
W_up
W_down

大致形式是:

FFN(x) = W_{down}(Activation(xW_{gate}) \odot xW_{up})

其中:

text
W_gate:控制哪些信息通过
W_up:扩展特征维度
W_down:压回原来的 hidden_size

门控结构的直观理解是:

> 不是所有信息都直接传下去,模型会学习“哪些信息该保留,哪些信息该抑制”。

这也是现代大模型效果更好的一个重要原因。


6. LayerNorm 参数:稳定每一层的输入输出

大模型层数很多,比如:

text
32 层
80 层
甚至更多

如果每一层输出的数据分布都很乱,训练会非常不稳定。

所以 Transformer 中通常有 LayerNorm。

LayerNorm 里面一般有两个可训练参数:

text
γ:缩放参数
β:偏移参数

也可以写成:

text
weight
bias

它的作用是:

text
先把数据归一化
再通过 γ 和 β 调整到合适范围

简单理解: > LayerNorm 参数负责让模型训练更稳定,不容易梯度爆炸、梯度消失或数值崩掉。

不过相对于 Attention 和 FFN,LayerNorm 的参数量很小。

比如 hidden_size = 4096,那么一个 LayerNorm 可能只有:

text
4096 或 8192 个参数

和几十亿参数相比非常小。


7. 输出层参数:把隐藏向量变成词表概率

大模型最后要做的事情是:

text
预测下一个 token

比如输入:

text
中国的首都是

模型要预测:

text
北京

所以最后需要一个输出层,把隐藏向量映射到整个词表上。

假设:

text
hidden_size = 4096
vocab_size = 50000

输出层矩阵大小通常是:

text
4096 × 50000

它的作用是:

text
hidden vector → 每个 token 的概率分布

比如:

text
北京:0.72
上海:0.08
中国:0.03
城市:0.02
...

然后模型根据解码策略,比如 greedy、temperature、top_p,选择最终输出哪个 token。

简单理解:

> 输出层参数负责把模型内部理解结果转成具体文字。

有些模型会让输入 Embedding 和输出层共享参数,这叫:

text
weight tying

这样可以减少参数量,也能让输入语义空间和输出语义空间保持一致。


8. 位置相关参数:让模型知道 token 顺序

Transformer 本身不像 RNN 那样天然知道顺序。

如果没有位置信息,模型看到:

text
我喜欢你

和:

text
你喜欢我

可能很难区分顺序差异。

所以需要位置编码。

早期模型可能使用可学习的位置 Embedding:

text
Position Embedding

这部分是可训练参数。

但很多现代大模型使用的是:

text
RoPE,旋转位置编码

RoPE 通常不是普通意义上的可训练参数,而是一种固定的数学位置编码方式。

所以要注意:

text
可学习 Position Embedding:属于模型内部参数
RoPE:通常不算可训练参数

简单理解:

> 位置相关机制让模型知道词语顺序和相对距离。


9. MoE 参数:多个专家网络

有些大模型使用 MoE,也就是:

text
Mixture of Experts

中文可以叫:

text
混合专家模型

普通 Transformer 每个 token 都经过同一个 FFN。

MoE 模型则有多个专家:

text
Expert 1
Expert 2
Expert 3
...
Expert N

每个 token 只选择其中几个专家来处理。

MoE 中主要有两类参数:

text
专家网络参数
路由器参数

专家网络参数就是很多个 FFN。

路由器参数负责判断:

text
当前 token 应该交给哪些专家处理

比如:

text
数学问题 → 数学专家
代码问题 → 代码专家
语言问题 → 语言专家

这只是直观比喻,真实模型不会这么明确命名专家,但会逐渐学出不同分工。

MoE 的特点是:

text
总参数量很大
每次推理激活的参数量较小

比如一个模型总共有 100B 参数,但每次只激活其中一部分,所以计算成本比全量激活低。


10. Bias 参数:偏置项

传统神经网络里,线性层通常有:

text
y = Wx + b

其中:

text
W 是权重
b 是偏置

但是很多现代大模型为了简化结构、提高效率,可能会减少甚至去掉部分 bias。

所以在大模型里:

text
权重矩阵 W 是主要参数
bias 有些模型有,有些模型没有

bias 的作用是:

> 让线性变换不一定必须经过原点,增强表达能力。

不过从参数量占比看,bias 通常非常小。


11. 微调参数:LoRA / Adapter / Prefix 参数

如果是预训练大模型本身,参数主要就是上面那些。

但如果做微调,可能不会更新全部参数,而是额外加入一些小参数。

常见方法有:

text
LoRA
Adapter
Prefix Tuning
Prompt Tuning

以 LoRA 为例,它不会直接大规模修改原来的 WQ、WK、WV、WO,而是在旁边加两个低秩矩阵:

text
A 矩阵
B 矩阵

原始更新是:

W=W+BA

LoRA 的好处是:

text
训练参数少
显存占用低
微调成本低
方便多个任务切换

简单理解: > 原模型参数不大动,只加一小部分可训练参数来适配新任务。

12. 一层 Transformer 里有哪些参数?

一层标准 Transformer 大致包含:

text
LayerNorm 参数
Attention 参数:WQ、WK、WV、WO
LayerNorm 参数
FFN 参数:W_up、W_down,或 W_gate、W_up、W_down

可以写成:

text
输入 x

LayerNorm

Self-Attention:WQ、WK、WV、WO

残差连接

LayerNorm

FFN / MLP:W_gate、W_up、W_down

残差连接

输出

一层一层堆起来,就形成了完整的大模型。

例如:

text
Embedding

Transformer Block × 32

Final LayerNorm

LM Head 输出层

13. 参数量大概怎么估算?

以一个 decoder-only Transformer 为例,一层的主要参数量可以粗略估算。

假设:

text
hidden_size = d
intermediate_size = f

Attention 参数:

text
WQ:d × d
WK:d × d
WV:d × d
WO:d × d

所以 Attention 大约是:

text
4d²

普通 FFN 参数:

text
W_up:d × f
W_down:f × d

所以 FFN 大约是:

text
2df

如果是带门控的 FFN:

text
W_gate:d × f
W_up:d × f
W_down:f × d

所以大约是:

text
3df

再乘以层数 num_layers,就能粗略估算主体参数量。

完整参数量还要加上:

text
Embedding 参数
输出层参数
LayerNorm 参数
bias 参数
MoE 专家参数

14. 参数、激活值、超参数的区别

这个很容易混。

参数 parameter

训练后保存在模型里的数值。

比如:

text
Embedding 矩阵
WQ、WK、WV、WO
FFN 权重
LayerNorm 的 γ 和 β
输出层权重

这些是模型真正学到的东西。


激活值 activation

模型运行过程中临时计算出来的中间结果。

比如:

text
某一层的 hidden states
Attention 分数
FFN 输出

这些不是固定保存的模型权重,而是每次输入不同,激活值也不同。


超参数 hyperparameter

训练前人为设置的配置。

比如:

text
层数
hidden size
attention heads
学习率
batch size
context length
训练轮数

这些不是模型自己学出来的,而是人设计的。


15. 最简单总结

大模型内部参数可以这样记:

text
Embedding:负责把 token 变成向量
Attention:负责理解上下文关系
FFN / MLP:负责深度加工特征
LayerNorm:负责稳定训练
输出层:负责预测下一个 token
位置参数:负责提供顺序信息
MoE 参数:负责专家分工
LoRA 参数:负责低成本微调

总结:

> 大模型的内部参数主要是训练过程中学习到的权重。以 Transformer 为例,首先有 Embedding 参数,用来把 token 映射成向量;然后每一层 Transformer 包含 Attention 参数,包括 WQ、WK、WV、WO,用来计算上下文注意力关系;还包括 FFN 或 MLP 参数,用来对特征进行非线性加工;LayerNorm 中有缩放和偏移参数,用来稳定训练;最后还有输出层参数,把隐藏向量映射到词表概率,用于预测下一个 token。部分模型还会有位置相关参数、MoE 专家参数,微调时还可能加入 LoRA 或 Adapter 参数。总体来说,这些参数共同决定了模型对语言、知识和上下文关系的表达能力。

评论区

欢迎留言、补充或勘误。

xiaoba.blog