深度学习模型Transformer核心组件—前馈网络FFN

第一章:人工智能之不同数据类型及其特点梳理
第二章:自然语言处理(NLP):文本向量化从文字到数字的原理
第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码)
第四章:循环神经网络RNN、LSTM以及GRU 对比(附代码)
第五章:理解Seq2Seq的工作机制与应用场景中英互译(附代码)
第六章:深度学习架构Seq2Seq-添加并理解注意力机制(一)
第七章:深度学习架构Seq2Seq-添加并理解注意力机制(二)
第八章:深度学习模型Transformer初步认识整体架构
第九章:深度学习模型Transformer核心组件---自注意力机制
第十章:理解梯度下降、链式法则、梯度消失/爆炸
第十一章:Transformer核心组件---残差连接与层归一化
第十二章:Transformer核心组件---位置编码
第十三章:Transformer核心组件---前馈网络FFN

在Transformer模型中,前馈网络(Feed-Forward Network,FFN)是一个关键组件,其作用是对每个位置的表示进行非线性变换,增强模型的表达能力。

下面是Transformer 的架构图,可以看到前馈网络Feed-Forward,在编码器和解码器都存在。

一、前馈网络的结构

上图是一个 3 层线性层的例子,前馈网络由两个线性变换层和一个激活函数组成,公式表示为:
FFN ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 FFN(x)=ReLU(xW1+b1)W2+b2

  • 输入:每个位置的独立表示(如自注意力层的输出)。
  • 参数
    • W 1 ∈ R d model × d ff W_1 \in \mathbb{R}^{d_{\text{model}}} \times d_{\text{ff}} W1∈Rdmodel×dff:第一个线性层的权重矩阵, d model d_{\text{model}} dmodel是词向量的维度, d ff d_{\text{ff}} dff是第二个线性层的维度(通常 d ff = 2048 d_{\text{ff}} = 2048 dff=2048)。
    • b 1 b_1 b1:第一个线性层的偏置。
    • W 2 ∈ R d ff × d model W_2 \in \mathbb{R}^{d_{\text{ff}}} \times d_{\text{model}} W2∈Rdff×dmodel:第二个线性层的权重矩阵。
    • b 2 b_2 b2:第二个线性层的偏置。
  • 激活函数:ReLU(或其他如GELU)引入非线性。
示例 (假设 d model = 512 d_{\text{model}} = 512 dmodel=512):
  1. 输入向量 x ∈ R 512 x \in \mathbb{R}^{512} x∈R512。
  2. 通过 W 1 W_1 W1 映射到 R 2048 \mathbb{R}^{2048} R2048。
  3. 应用ReLU激活。
  4. 通过 W 2 W_2 W2 映射回 R 512 \mathbb{R}^{512} R512。

二、前馈网络的作用

(1) 引入非线性
  • 自注意力的局限性:自注意力层本质是线性变换的加权和(点积运算),缺乏非线性。
  • FFN的补充:通过ReLU激活函数,FFN为模型添加非线性,使其能拟合更复杂的函数。
(2) 独立的位置特征处理
  • 逐位置操作:FFN独立处理每个位置的表示,不涉及序列中其他位置的交互。
  • 局部特征增强:对每个位置的语义信息进行深度加工,例如提取词性、语义角色等局部特征。
(3) 升维与降维
  • 升维:通过中间层(如2048维)扩展表示空间,捕捉更细粒度的特征。
  • 降维:将高维特征压缩回原始维度,保持模型结构的一致性。
(4) 跨层特征融合
  • 分层抽象:不同层的FFN学习不同层次的特征,底层可能捕捉语法,高层可能捕捉语义。

三、前馈网络的设计意义

(1) 与自注意力机制互补
组件 核心功能 交互范围
自注意力机制 捕捉序列内长程依赖和全局关系 全局(所有位置)
前馈网络 增强单个位置的非线性表示能力 局部(单个位置)
(2) 参数规模与模型容量
  • 参数量占比 :在Transformer中,FFN的参数通常占全模型的60%以上(如 d model = 512 d_{\text{model}} = 512 dmodel=512 时,单层FFN参数量为 512 × 2048 + 2048 × 512 ≈ 2.1 M 512{\times}2048 + 2048{\times}512 \approx 2.1M 512×2048+2048×512≈2.1M)。
  • 模型深度:FFN的深度(两层线性变换)增强了单层的表达能力,减少所需的总层数。

四、示例说明

假设输入序列为"猫 吃 鱼",经过自注意力层后,每个位置的表示已包含上下文信息:

  • "猫"的表示:包含"吃"和"鱼"的上下文。
  • FFN处理
    1. 将"猫"的向量从512维映射到2048维,捕捉更细粒度特征(如"主语""动物")。
    2. 通过ReLU过滤非重要特征。
    3. 映射回512维,保留关键信息供下一层使用。

五、总结

若没有前馈网络

  • 模型退化:仅靠自注意力机制,模型退化为线性堆叠,无法拟合复杂模式。
  • 实验验证:移除FFN的Transformer在文本生成、翻译等任务上性能显著下降。
核心点 说明
结构 两层线性变换 + 激活函数,独立处理每个位置
作用 引入非线性、增强局部特征、升维/降维
与自注意力关系 全局交互(自注意力) + 局部深化(FFN) = 完整特征学习
必要性 避免模型表达能力受限,提升对复杂模式的拟合能力
相关推荐
Mintopia11 分钟前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮1 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬1 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区2 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两4 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪5 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232555 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
程序员打怪兽5 小时前
详解Visual Transformer (ViT)网络模型
深度学习