【LLM】深入理解FFN
为什么要:4096 ↓ 11008 ↓ 4096为什么不是:4096 ↓ 4096为什么:GeLU?为什么:SiLU?为什么:SwiGLU?一、如果没有 FFN,会发生什么?假设Transformer 没有 FFN,只有:Token │ Attention │ Attention │ Attention会发生什么?我们知道,Attention 负责每个 Token 从其他 Token 获取信息。例如:The animal didn't cross the street because it was tired.Attention 可以让:it去看:animal获得:“它指的是 animal”但 Attention 没有创造新的特征。假设:animalEmbedding:[0.2,0.5,0.8]Attention 最后大概就是:0.9 × animal + 0.1 × street也就是说,Attention 的输出其实还是:Value 的加权平均。数学就是:Output=∑iαiVi\text{Output}=\sum_i \alpha_iV_iOutput=∑i​αi​Vi​Attention 没有创造新的东西,它只是重新组合已有的信息(输出已有Token的线性组合)。这里有一个数学上的观点(以后会学):多层线性变换的组合,本质上仍然是线性变换;真正提升表达能力的是非线性(这里来自 FFN 中的 GeLU)。当然,由于 Attention 的权重 α 是由输入动态计算出来的,它本身并不是一个固定线性层,所以严格来说 Attention 整体不是线性的。但它输出的形式始终是 Value 的加权组合,这就是为什么仍然需要 FFN 去做更丰富的特征变换。而FFN负责创造新知识。FFN最简单的形式为:Linear ↓ GeLU ↓ Linear公式:FFN(x)=W2(GeLU(W1x))FFN(x)=W_2(\text{GeLU}(W_1x))FFN(x)=W2​(GeLU(W1​x))这其中,GeLU是最重要的,因为如果没有GeLU,W2(W1x)=(W2W1)xW_2(W_1x) = (W_2W_1)xW2​(W1​x)=(W2​W1​)x所以,真正让 FFN 有意义的是 GeLU,因为它引入了非线性。因此,Attention负责【找信息】,FFN负责【加工信息】。Transformer 最重要的一句话:Attention 负责 Token 与 Token 的交互;FFN 负责每个 Token 自身的表示变换。所以,Transformer其实是在交替进行两种计算。第一步:大家:聊天。(Attention)第二步:每个人回去,自己消化。(FFN)然后,再聊天。再消化。…为什么 FFN 参数这么多?为什么FFN要先升维。例如:4096 ↓ 11008 ↓ 4096为什么不是:4096 ↓ 2048 ↓ 4096因为,FFN 真正做的是:把一个 Token 投影到一个更大的特征空间,在那个空间里完成复杂的非线性变换,再投影回来。这一句话非常重要。升维多少合适?答案先说:升维不是一个数学推导出来的数字,而是"理论 + 工程 + GPU硬件"共同权衡的结果。最早的Transformer(2017)论文规定:modeldff=4×dmodelmodeld_{ff}=4\times d_{model}modeldff​=4×dmodel​为什么是 4?其实论文没有证明。就是大量实验发现:2 倍不够,8 倍收益不明显,4 倍是一个很好的折中。注意:这不是数学结论,而是经验规律。为什么不是越大越好?因为升维越大,参数量增长越快,带来的边际收益却可能递减。为什么 Llama 不是 4×?Llama Hidden为4096。如果 4 倍,应该16384。但是实际是11008。为什么?因为Llama已经不用普通 FFN。而是:SwiGLU。SwiGLU 和普通 FFN 有什么区别?普通 FFN:Linear ↓ GeLU ↓ Linear只有两层Linear。SwiGLU 实际上有三个矩阵。可以写成:SwiGLU(x)=(W1x)⊙SiLU(W3x)\text{SwiGLU}(x) = (W_1x) \odot \text{SiLU}(W_3x)SwiGLU(x)=(W1​x)⊙SiLU(W3​x)然后再乘 W2。也就是说,它不是两个矩阵,而是三个。参数天然变多。所以,如果还保持16384。参数是不是比原来大很多?我们算一下普通 FFN:参数大约:2×d×4d=8d22\times d\times4d = 8d^22×d×4d=8d2SwiGLU:参数有三个矩阵。总共:3×d×dff3\times d\times d_{ff}3×d×dff​如果希望参数量和普通 FFN差不多。应该令:3d×dff≈8d23d\times d_{ff} \approx 8d^23d×dff​≈8d2约掉d,得到:dff≈83dd_{ff} \approx \frac{8}{3}ddff​≈38​d注意:83=2.67\frac{8}{3} = 2.6738​

相关新闻

3步掌握Reloaded-II:告别游戏模组冲突的终极解决方案

3步掌握Reloaded-II:告别游戏模组冲突的终极解决方案

3步掌握Reloaded-II:告别游戏模组冲突的终极解决方案 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 还在为游戏模组安装繁琐、频繁…

2026/9/23 3:28:43 阅读更多 →
JavaSE 基础语法 - 方法的使用 - ①

JavaSE 基础语法 - 方法的使用 - ①

在实际开发中,一个完整的程序往往由成千上万个方法组成。 例如,我们每天使用的微信、支付宝、淘宝等应用,每点击一个按钮、发送一条消息、完成一次支付,背后都会调用不同的方法来完成相应的功能。 那么,什么是方法&…

2026/9/14 23:09:52 阅读更多 →
掌握1对1与1对多数据库关系

掌握1对1与1对多数据库关系

1.1对1何为1对1 2个表互相对照对方 没有其他的表 在生活中常见的1对1关系有作者和作者信息 一个作者只有一个信息 这个信息只能是这个作者作者 李白 信息 朝代、年龄、笔名如果将作者删除那么 信息也会跟着一起删除 两个表是关联的关系然后是操作1.查所有的作者 作者下带着资…

2026/9/18 20:37:18 阅读更多 →

最新新闻

整除分块入门:从签到题看算法思维跃迁

整除分块入门:从签到题看算法思维跃迁

1. 这道题不是“签到”,是算法新人的第一道认知分水岭“Quailty and CCPC”——光看标题,你大概率会以为这是某场高校编程竞赛的花絮报道,或是某个社团活动的趣味命名。但如果你在2019年暑期刷过杭电多校联合训练(HDU Multi-Unive…

2026/9/23 22:59:10 阅读更多 →
OpenLayers 贡献指南:从提问、提 Bug 到提交高质量 Pull Request 的完整流程

OpenLayers 贡献指南:从提问、提 Bug 到提交高质量 Pull Request 的完整流程

前端GIS数据可视化 【免费下载链接】openlayers OpenLayers 项目地址: https://gitcode.com/gh_mirrors/op/openlayers 点击查看 免费下载 本篇指南以仓库根目录的 CONTRIBUTING.md 为骨架,系统讲解向 OpenLayers 项目贡献代码的完整工作流:…

2026/9/23 22:59:10 阅读更多 →
教学问题响应系统:三层定位与四维方法论

教学问题响应系统:三层定位与四维方法论

1. 项目概述:这不是一本“成功学”手册,而是一套可拆解、可复用的教学问题响应系统“方法总比问题多”这句口头禅,几乎刻在每位一线教师的教案本扉页上。但现实里,它常沦为自我安慰的空话——当学生持续走神、家长质疑教学进度、公…

2026/9/23 22:59:10 阅读更多 →
GetX 依赖管理实战指南:Get.put / Get.lazyPut / Get.create 与 Bindings 智能生命周期的完整解析

GetX 依赖管理实战指南:Get.put / Get.lazyPut / Get.create 与 Bindings 智能生命周期的完整解析

前端 【免费下载链接】getx Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get. 项目地址: https://gitcode.com/gh_mirrors/ge/getx 点击查看 免费下载 本篇技术指南围绕 Get(Get…

2026/9/23 22:59:10 阅读更多 →
cytoscape.js 集合构建指南:深入解析 `cy.collection()` 的用法与实现原理

cytoscape.js 集合构建指南:深入解析 `cy.collection()` 的用法与实现原理

数据可视化 【免费下载链接】cytoscape.js Graph theory (network) library for visualisation and analysis 项目地址: https://gitcode.com/gh_mirrors/cy/cytoscape.js 点击查看 免费下载 cy.collection() 是 cytoscape.js 中用于构建元素集合(colle…

2026/9/23 22:59:10 阅读更多 →
Apache DolphinScheduler 文档贡献完整指南:环境搭建、本地构建验证与文档 Pull Request 提交规范

Apache DolphinScheduler 文档贡献完整指南:环境搭建、本地构建验证与文档 Pull Request 提交规范

任务调度大数据后端前端 【免费下载链接】dolphinscheduler Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code 项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler 点击查…

2026/9/23 22:58:10 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →