零基础认识大语言模型(LLM)工作原理(5.Transformer的FFN模块到底是什么?)
FFN(前馈神经网络) 到底是什么在上一章中我们已经知道,Attention的作用是让模型能够在生成每个 Token 时回看并加权所有历史信息。这解决了一个关键问题,“上下文相关性”但如果我们就草率的认为Attention 智能, 那就错了。因为仅靠 Attention其实模型还是做不到,把得到的“信息”变成“推理能力”所以其实在 Transformer 里有两个核心模块Attention负责“找关系”FFN负责“加工信息”很多人看到这里会产生一个误解,Attention 是核心FFN 是辅助?不对,这完全弄反了.在真实模型里FFN 才是参数量最大、最“像知识”的部分而Attention 更像“信息路由系统”。所以我们先从Attention的局限性开始讲起5.1 Attention 的局限性我们先回到最早这句话小明昨天去北京出差今天他回来了。Attention 能很好解决“他”是谁北京指代什么时间关系但是我们换一个任务把这句话改写成正式邮件或者总结这段话的核心意思或者推理小明的行程逻辑Attention 马上就会遇到一个问题,它只能“关联信息”但不能“加工信息”。以做一个简单的比喻Attention,它就像一个“资料整理员”.它很擅长找相关内容做信息匹配拼接上下文但却它不擅长“加工、抽象、归纳”所以 Transformer 需要第二个模块FFN前馈神经网络,那么FFN到底是什么呢?5.2 FFN真正的“加工工厂”我们直接让Attention和FFN对比一下.Attention vs FFN模块做什么Attention找信息FFN处理信息可以用后厨做一个比喻Attention后厨采购员他会查看所有食材决定买什么决定买多少FFN大厨他会将买回的食材信息加工炒至成菜肴高级特征回到模型Attention 输出的是“相关信息集合”.但 FFN 做的是把这些信息归纳总结后重新“加工成新的表达”.我们还是找到小明~输入小明昨天去北京出差今天他回来了Attention 可能输出小明 北京 出差 时间关系FFN 则会进一步加工成小明完成了一次北京出差行程所以关键区别就在于Attention 不创造信息FFN 才负责“生成新的表达能力”5.3 FFN 的基本结构在 Transformer 里它长这样输入向量 ↓ 线性变换升维 ↓ 激活函数ReLU / GELU ↓ 线性变换降维 ↓ 输出向量用一句通俗的话讲解的话,实际上FFN 把信息“放大 → 变形 → 压缩”的加工器这是一个比较关键的点.Attention 是多个 Token 之间的信息交互FFN 则是每个 Token 自己内部的“脑内处理”大概就是这样模块作用范围AttentionToken 之间交流FFNToken 自己思考5.4 举个例子理解 FFN我们继续用小明~,小明昨天去北京出差Attention 做的是小明 ↔ 他指代关系北京 ↔ 地点关系但 FFN 做的是“这句话整体是什么意思”把FFN 的工作方式比喻为人类学习方式的话我们可以理解为Attention---你在查资料FFN---你在理解资料继续请出我们的老演员,小明~~同一条信息小明昨天去北京出差Attention 看到的是小明北京出差时间关系但 FFN 会则会抽象和重组整个信息把这些“碎片信息”组合成一个新的表达例如一次商务出行事件注意这一步不是纯“检索”而是有计算压缩 抽象 重组5.5 FFN 的本质逐点“非线性变换”FFN 做的事情:对每一个 Token 向量单独做一次“非线性加工”什么叫非线性线性 机械加减例如小明 1 小明北京 2 北京没有意义非线性 产生新语义例如输入“小明 出差 北京”输出“商务活动” FFN 的作用就是把“简单叠加的信息”变成“新的语义结构”5.6 FFN 的关键结构升维 → 压缩这是 FFN 最核心的设计。Step 1升维Expand把一个向量768维扩展成3072维为什么要升维因为升维之后才能存储更多信息.空间变大 → 可以表达更多“组合关系”我们可以理解为原来只有一块钱,升维之后, 你就有了5块钱, 你可以购买和组合购买更多的东西.Step 2非线性变换ReLU / GELU这一层只做一件事筛选 激活 抑制我们可以简单理解为,通过算法将有用的信息放大,将没用的信息压缩.Step 3降维Project back再从3072维压回768维最终的结果就是已经不是原来的向量了而是“加工后的语义”5.7 为什么说 FFN 是“知识存储器”这是一个非常关键的现代观点。研究发现,在大模型里面FFN 参数量远远大于 Attention 参数量这说明模型大部分“知识”不在 Attention而在 FFN我们可以这样理解Attention查询系统类似搜索引擎FFN数据库本体真正存知识举个例子你问大模型Redis 是什么模型不是去“想”而是FFN 中已经学到Redis → 缓存Redis → KV storeRedis → 高性能所以反而FFN 更像“隐式的知识库”5.8 总结一下FFN 的真实作用写了这么多,其实我们可以总结一下FFN的真实作用.Attention 负责“连接信息”FFN 负责“理解信息”Transformer则是用多层 FFN 逐步构建抽象能力。本章总结① FFN 是什么两层线性变换 非线性激活的“信息加工器”② FFN 和 Attention 的区别模块功能Attention找关系FFN做理解③ FFN 的本质对每个 Token 做“非线性语义变换”④ 为什么 FFN 很重要因为它才是模型“知识和语义能力”的主要来源也正是这个看似简单的“升维-激活-降维”三步曲赋予了Transformer深度思考的能力使其从简单的信息收集器变成了真正的理解者和创造者。当然在现代大模型中FFN 已经发展出多种不同的实现范式而不仅仅是传统的两层前馈结构。SwiGLU FFN通过门控机制Gating替代传统激活函数使模型能够在特征维度上进行选择性放大与抑制从而提升表达能