LLM_Transformer的神经网络

LLM:Large Language Mode

Transformer 完整工作原理、底层单元拆解

先澄清一个关键点:Transformer 依然是人工神经网络,但它不是传统感知机那种单个神经元堆叠的视角,它的基础单元是向量、矩阵运算、多头注意力、MLP;但里面依然包含神经元、权重连接、激活函数。

传统神经网络(MLP/CNN):最小单元 = 神经元 ,神经元做加权求和 + 激活。

Transformer:最小计算单元依然是神经元 ,只是大量神经元被组织成线性层(矩阵乘法),再搭配自注意力机制,不再是卷积或者时序循环。

论文:Attention Is All You Need (2017)

核心:不再依靠循环结构,依靠自注意力建模序列内全部位置之间的依赖关系。


一、先回顾基础:人工神经元(感知机)

所有神经网络的原子单元:神经元

y=σ(∑i=1nwixi+b)y = \sigma\left(\sum_{i=1}^n w_i x_i + b\right)y=σ(∑i=1nwixi+b)

  • xix_ixi:输入(来自上一层神经元输出)
  • wiw_iwi:神经连接权重(可训练参数)
  • bbb:偏置
  • σ\sigmaσ:激活函数(你说的阈值函数,感知机是阶跃阈值;深度学习一般不用阶跃,用非线性激活 ReLU/GELU)

一层全连接层 nn.Linear(in_dim, out_dim) 本质就是一堆神经元并行:

输入向量 x\boldsymbol xx,维度为 in;权重矩阵 W\boldsymbol WW,维度 out×in;偏置向量 b\boldsymbol bb,维度 out

y=Wx+b\boldsymbol y = \boldsymbol W \boldsymbol x + \boldsymbol by=Wx+b

矩阵的每一行,对应一个神经元的权重 wiw_iwi;输出向量的每一个元素,就是一个神经元的输出。

所以:线性层 = 并行的一组神经元,神经连接保存在权重矩阵 W 中 。

Transformer 里几乎所有可学习参数,都存放在各个线性层的权重矩阵里。


二、Transformer 整体结构总览

原始 Transformer = Encoder 堆栈 + Decoder 堆栈

  • Encoder:双向自注意力,看到整段输入序列;用于理解(BERT 只用 Encoder)
  • Decoder:掩码自注意力 + 交叉注意力;自回归生成(GPT 只用 Decoder)

数据流顺序:

  1. 输入 Token → Embedding 层(查找表,本质也是线性层)
  2. 加上位置编码 Positional Encoding
  3. 送入 N 层堆叠 Encoder(可选)
  4. Decoder 输入(已经生成的 token)→ Embedding + 位置编码
  5. 送入 N 层堆叠 Decoder
  6. Decoder 输出 → 线性层 + Softmax,预测下一个 token 概率

每一层 Encoder / Decoder Block 内部都有残差连接 + LayerNorm。

2.1 Embedding 嵌入层(词嵌入)

Embedding 层 nn.Embedding(vocab_size, d_model)

  • 输入:token 整数索引(单词编号)
  • 参数:嵌入矩阵 E∈Rvocab_size×dmodel\boldsymbol E \in R^{vocab\size \times d{model}}E∈Rvocab_size×dmodel
  • 作用:查表,把离散单词编号映射为连续向量 e∈Rdmodel\boldsymbol e \in R^{d_{model}}e∈Rdmodel
  • 本质:一个特殊的线性层,没有偏置,输入是 one-hot 编码

e=E⊤⋅onehot(token_idx)\boldsymbol e = \boldsymbol E^\top \cdot \text{onehot(token\_idx)}e=E⊤⋅onehot(token_idx)

dmodeld_{model}dmodel:模型维度,向量长度,代表每个 token 用多少个神经元表示(例如 512)

每个 token,最终用一个长度为 (d_{model}) 的向量表示,向量里每一个元素,对应一个神经元的激活值。

2.2 位置编码 Positional Encoding

Transformer没有时序感知能力 ,注意力机制本身对位置是置换不变的。

必须手动注入位置信息,原始论文用三角函数位置编码:

PE(pos,2i)=sin⁡(pos100002i/dmodel)PE(pos,2i+1)=cos⁡(pos100002i/dmodel) \begin{aligned} PE_{(pos,2i)} &= \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)\\ PE_{(pos,2i+1)} &= \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right) \end{aligned} PE(pos,2i)PE(pos,2i+1)=sin(100002i/dmodelpos)=cos(100002i/dmodelpos)

  • pos:token 在序列中的位置

  • pos:token 在序列中的位置

  • i:向量维度下标

    将 PE 和 embedding 向量逐元素相加。

⚠️ 位置编码没有可训练权重 ,没有神经元,只是固定函数。

现在很多模型改用可学习位置编码:就是一个 Embedding 层,参数可训练。


三、Encoder Block 详细拆解(核心单元)

Encoder 由 N 个完全相同的 Block 堆叠。每个 Block 包含两个子层:

  1. 多头自注意力层 Multi-Head Self-Attention
  2. 前馈网络 FFN(两层 MLP)

每一个子层都遵循:

SubLayerOutput=LayerNorm(x+Sublayer(x))\text{SubLayerOutput} = \text{LayerNorm}(x + \text{Sublayer}(x))SubLayerOutput=LayerNorm(x+Sublayer(x))

也就是:残差连接 + 层归一化(Pre-LN / Post-LN,原始论文是 Post-LN)

3.1 多头自注意力 Multi-Head Self-Attention

3.1.1 单头自注意力 Single-Head Attention

输入:序列矩阵 X\boldsymbol XX,维度 L×dmodelL \times d_{model}L×dmodel,L 序列长度。

用 3 个独立线性层(3 组神经元权重矩阵),投影得到 Q, K, V:

Q=XWQ,WQ∈Rd_model×dkK=XWK,WK∈Rd_model×dkV=XWV,WV∈Rd_model×dv \begin{aligned} Q &= X W_Q,\quad W_Q \in R^{d\_model \times d_k}\\ K &= X W_K,\quad W_K \in R^{d\_model \times d_k}\\ V &= X W_V,\quad W_V \in R^{d\_model \times d_v} \end{aligned} QKV=XWQ,WQ∈Rd_model×dk=XWK,WK∈Rd_model×dk=XWV,WV∈Rd_model×dv

(W_Q,W_K,W_V) 就是神经连接权重矩阵,里面全是可训练的连接权重;每一列 / 行对应神经元。

注意力计算公式:

Attention(Q,K,V)=softmax(QK⊤d_k)V\text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^\top}{\sqrt{d\_k}}\right)VAttention(Q,K,V)=softmax(d_k QK⊤)V

分步解释:

  1. QK⊤QK^\topQK⊤:计算每一个 token(Q)和所有 token(K)之间相似度,得到相似度矩阵 L×LL\times LL×L。矩阵元素代表两个 token 的关联强度。
  2. /d_k/\sqrt{d\_k}/d_k :缩放因子。维度 d_kd\_kd_k 越大,内积值越大,softmax 输出会变得极度尖锐,梯度消失。缩放用来稳定梯度。
  3. softmax\text{softmax}softmax:激活函数,把相似度转为概率权重,所有权重和为 1。

softmax(zi)=ezi∑jezj\text{softmax}(z_i)=\frac{e^{z_i}}{\sum_j e^{z_j}}softmax(zi)=∑jezjezi

softmax 不是单个神经元阈值函数,是对一组输出做归一化。

  1. 和 V 相乘:对 value 向量做加权求和,权重就是注意力分数。得到每个 token 融合全局信息后的新向量。

3.1.2 多头注意力 Multi-Head

把 (Q,K,V) 在特征维度切分成 h 个头(head)

headi=Attention(QWQi,KWKi,VWVi)MultiHead(Q,K,V)=Concat(head1,...,headh)WO\begin{aligned} \text{head}i &= \text{Attention}(Q W{Q_i}, K W_{K_i}, V W_{V_i}) \\ \text{MultiHead}(Q,K,V) &= \text{Concat}(\text{head}_1,\dots,\text{head}_h) W_O \end{aligned}headiMultiHead(Q,K,V)=Attention(QWQi,KWKi,VWVi)=Concat(head1,...,headh)WO

  • h:头数,原始论文 h=8,d_model=512h=8, d\_model=512h=8,d_model=512,每个头维度 d_k=d_model/h=64d\_k = d\_model/h = 64d_k=d_model/h=64
  • 每个头拥有独立的 WQ_i,WK_i,WV_iW_{Q\i},W{K\i},W{V\_i}WQ_i,WK_i,WV_i 权重,各自在不同语义子空间学习依赖关系
  • 拼接所有头输出,再乘输出投影矩阵 WOW_OWO(又是一组神经元权重)

多头注意力内部的参数本质:全部是线性层权重(神经连接),没有卷积,没有循环单元。

掩码注意力 Masked Attention(Decoder 里):在 softmax 之前,给未来位置加上 −∞-\infty−∞,softmax 之后对应权重变成 0,保证 token 看不到未来位置。

masked score matrix=QK⊤/d_k+M\text{masked score matrix} = QK^\top/\sqrt{d\_k} + Mmasked score matrix=QK⊤/d_k +M

M 是掩码矩阵,上三角为 −∞-\infty−∞,下三角和对角线为 0。

3.2 FFN 前馈网络 Feed Forward Network(Transformer 里的 MLP)

这部分最贴近传统神经元堆叠!

原始论文 FFN:

FFN(x)=max⁡(0,xW1+b1)W2+b2\text{FFN}(x) = \max(0, x W_1 + b_1) W_2 + b_2FFN(x)=max(0,xW1+b1)W2+b2

两层全连接网络:

  1. 第一层线性层:W1∈Rd_model×d_ffW_1 \in R^{d\_model \times d\_ff}W1∈Rd_model×d_ff,把维度从 d_modeld\_modeld_model 放大到 d_ffd\_ffd_ff(论文 d_ff=2048d\_ff=2048d_ff=2048)
    z1=xW1+b1z_1 = x W_1 + b_1z1=xW1+b1
    输出 z1z_1z1 的每个元素 = 一个神经元加权求和结果
  2. 激活函数:max⁡(0,z1)\max(0,z_1)max(0,z1),也就是 ReLU(你说的阈值函数:小于 0 直接置 0,大于 0 原样输出)

现代模型 GPT、LLaMA 换成 GELU,平滑版 ReLU。

  1. 第二层线性层:W2∈Rd_ff×d_modelW_2\in R^{d\_ff\times d\_model}W2∈Rd_ff×d_model,映射回原始维度 d_modeld\_modeld_model
    out=z1W2+b2\text{out} = z_1 W_2 + b_2out=z1W2+b2
    FFN 特点:对序列中每个 token,独立计算,token 之间互不干扰。注意力是 token 之间互相交换信息;FFN 是单独对每个 token 内部特征做非线性变换。

FFN 的参数:W1,b1,W2,b2W_1,b_1,W_2,b_2W1,b1,W2,b2,全部是神经元连接权重与偏置。

3.3 残差连接 Residual Connection

xout=x+Sublayer(x)x_{\text{out}} = x + \text{Sublayer}(x)xout=x+Sublayer(x)直接把输入原样加到子层输出。

目的:解决深层网络梯度消失 ,让梯度可以沿着直连通路直接回传。

残差连接没有参数,没有神经元,只是向量加法。

3.4 Layer Normalization 层归一化

原始论文:Post-LN(子层输出 + 残差之后做 LN);现在主流大模型用 Pre-LN(先 LN 再送入子层)。

LayerNorm(x)=γ⋅x−μσ2+ϵ+β\text{LayerNorm}(\boldsymbol x)=\gamma \cdot \frac{\boldsymbol x - \mu}{\sqrt{\sigma^2+\epsilon}} + \betaLayerNorm(x)=γ⋅σ2+ϵ x−μ+β

  • μ\muμ:样本向量均值;σ2\sigma^2σ2:方差
  • γ,β\gamma,\betaγ,β:可训练缩放、偏移参数(两个向量,属于可学习参数,简单理解为一组神经元参数)
  • ϵ\epsilonϵ:极小常数防止除 0
    作用:把向量分布拉到均值 0 方差 1,稳定训练。

BatchNorm 是对 batch 维度归一化;LayerNorm 对单个 token 的特征维度归一化,Transformer 用 LN。


四、Decoder Block 详细拆解

Decoder Block 三层子层:

  1. 掩码多头自注意力 Masked Multi-Head Self-Attention:只能看到当前位置及之前 token,不能偷看未来。
  2. 交叉注意力 Cross-Attention :Q 来自 Decoder 上一层输出;K,V 来自 Encoder 输出。
    作用:让生成的每一步,读取输入序列(Encoder 的上下文)。
  3. FFN 前馈网络,和 Encoder FFN 完全一样。

同样:每一层子层都带残差连接 + LayerNorm。

Cross-Attention 交叉注意力公式

CrossAttention(Q,K,V)=softmax(QK⊤d_k)V\text{CrossAttention}(Q,K,V)=\text{softmax}\left(\frac{QK^\top}{\sqrt{d\_k}}\right)VCrossAttention(Q,K,V)=softmax(d_k QK⊤)V

  • Q:Decoder 侧当前生成序列
  • K,VK,VK,V:Encoder 输出的记忆向量

权重矩阵 WQ,WK,WV,WOW_Q,W_K,W_V,W_OWQ,WK,WV,WO 是 Decoder 交叉注意力自己独立的神经连接参数,不和 Encoder 共享。


五、输出层

Decoder 最后输出向量 x\boldsymbol xx,维度 d_modeld\_modeld_model

  1. 线性层:Wfinal∈Rd_model×vocab_sizeW_{final}\in R^{d\model\times vocab\size}Wfinal∈Rd_model×vocab_size,映射到词表大小维度
    z=xWfinal+bfinal\boldsymbol z = x W
    {final}+b
    {final}z=xWfinal+bfinal
  2. Softmax:把 z\boldsymbol zz 转为各个单词的概率分布。
  3. 预测概率最高 token 作为下一个词,自回归生成。

很多实现中,这个最终线性层权重和 Embedding 层权重共享,减少参数量。


六、Transformer 里的神经元、神经连接、阈值函数

6.1 神经元

  • 传统 MLP:画出一个个圆圈(神经元),每个神经元独立做加权求和 + 激活。

  • Transformer:所有线性层(投影矩阵、FFN)底层就是大量神经元并行计算。

  • 例如 FFN 第一层 d_model=512,d_ff=2048d\_model=512,d\_ff=2048d_model=512,d_ff=2048:这一层有2048 个神经元。每个神经元接收 512 个输入,对应 512 条神经连接权重。

  • 注意力机制不是神经元,是信息聚合操作;但是注意力内部 QKV 投影矩阵,依然是神经元构成的线性层。

一句话区分:

FFN、Embedding、QKV 投影、输出层:由神经元构成

自注意力、残差、LayerNorm、位置编码:不是神经元,是对神经元输出向量的运算。

6.2 神经连接

神经连接就是权重矩阵里每一个权重 w :

权重矩阵 W∈RM×N\boldsymbol W\in R^{M\times N}W∈RM×N,一共有 M×NM\times NM×N 个权重,对应 M×NM\times NM×N 条神经连接。

  • WQ,WK,WV,WOW_Q,W_K,W_V,W_OWQ,WK,WV,WO:注意力的神经连接权重
  • W1,b1,W2,b2W_1,b_1,W_2,b_2W1,b1,W2,b2:FFN 的神经连接权重 + 偏置
  • Embedding 矩阵:词嵌入的连接权重

训练过程:反向传播,不断更新这些权重(神经连接强度)。

6.3 阈值 / 激活函数

  1. ReLU :σ(z)=max⁡(0,z)\sigma(z)=\max(0,z)σ(z)=max(0,z)。经典阈值型激活,小于 0 直接截断,原始 Transformer FFN 使用。
  2. GELU:现代大模型(GPT、LLaMA)替换 ReLU,平滑非线性。
  3. Softmax:注意力分数、输出概率,归一化激活,不是单神经元阈值。
  4. LayerNorm:不是激活函数,是归一化。

老式感知机用阶跃阈值函数(大于阈值输出 1 否则 0),深度学习几乎不用阶跃函数,因为不可导,无法反向传播。


七、数据流完整例子(极简)

输入句子:我爱AI,token 序列长度 L=3,(d_{model}=512)

  1. token id → Embedding 得到 3×512 矩阵
  2. 加上位置编码 3×512
  3. Encoder 多头自注意力:
    • QKV 投影:3 个线性层,得到 Q,K,V(3×512)
    • 切分成 8 个头,分头计算注意力分数
    • 拼接 + 输出投影,得到注意力输出 3×512
  4. 残差 + LN → FFN:
    • 线性层升到 2048 维 → ReLU → 线性层回到 512 维
  5. 残差 + LN,得到 Encoder 输出。Decoder 读取这个输出做交叉注意力,循环生成。

八、结束语

常见误区:

  1. Transformer 的注意力是神经元 :不是。注意力是向量加权聚合;QKV 投影才是神经元线性层。
  2. 没有神经元 :错。Transformer 绝大部分参数,都在 FFN 和 QKV 线性层,本质就是大量神经元。
  3. 位置编码是可学习神经元:原始论文 PE 固定;现在很多模型 PE 是 Embedding(可学习神经元)。
相关推荐
陈嘿萌1 小时前
TPAMI 2026|武大 DuS-DiFuse:图像融合从“拼信息”走向“补语义”,兼顾真实退化鲁棒性
图像处理·人工智能·计算机视觉·图像融合·计算机科学与技术·学术研究与理论基础·顶级期刊会议
高洁011 小时前
AI赋能产业升级与中美未来经济赛道博弈
人工智能·python·深度学习·机器学习·transformer
AI HR研究社1 小时前
从“人工智能+人社”到企业HR落地:6项AI能力与系统架构清单
人工智能·人力资源软件
neoooo1 小时前
🚀Claude Code 小技巧(二):找回会话,撤销修改
前端·人工智能·后端
AIGCmagic社区1 小时前
多模态Jev专题:FastJEV剪掉45.83%候选层,0.8B平均分还留97.52%
人工智能·aigc·jev模型
鲜于言悠9051 小时前
RAG工程化实战:从玩具Demo进化成企业可用知识库
人工智能
吴佳浩2 小时前
“优化 KV Cache”到底在优化什么?vLLM、SGLang、Strata 优化的是三个不同的维度
人工智能
a努力。2 小时前
MCP只连工具,不直接连技能
人工智能
neoooo2 小时前
🚀Claude Code 小技巧(一):一键进入危险模式
前端·人工智能·后端