【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/10/19 18:57:55 阅读更多 →
JavaSE 基础语法 - 方法的使用 - ①

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

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

2026/10/18 13:12:48 阅读更多 →
掌握1对1与1对多数据库关系

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

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

2026/10/17 20:25:33 阅读更多 →

最新新闻

用原理图设计FPGA电子琴:分频表驱动蜂鸣器音乐

用原理图设计FPGA电子琴:分频表驱动蜂鸣器音乐

简介:通过Quartus原理图设计方法实现的电子琴FPGA工程包,面向数字电路、EDA与FPGA入门学习者,演示从音符频率生成、定时计数、数模转换到乐曲存储与播放的完整音乐合成系统。资源共413个文件,压缩包5.42MB,主要包含原理…

2026/10/20 13:14:06 阅读更多 →
多镜头视频生成一致性难题如何解?FilmWeaver框架与实操要点

多镜头视频生成一致性难题如何解?FilmWeaver框架与实操要点

做多镜头视频生成的人应该都有这种感觉:单镜头生成已经很顺手之后,最头疼的反而不是画质,而是“一致性”。你先生成一个人走进咖啡店的镜头,再换一个机位生成同一个人坐在窗边,十次有九次会得到两个长得完全不像的人。…

2026/10/20 13:14:06 阅读更多 →
FlashVSR-v1.1-bf16开发者进阶:从convert_weights.py权重转换到Metal稀疏注意力内核的二次开发路线

FlashVSR-v1.1-bf16开发者进阶:从convert_weights.py权重转换到Metal稀疏注意力内核的二次开发路线

【免费下载链接】FlashVSR-v1.1-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/FlashVSR-v1.1-bf16 点击查看 免费下载 FlashVSR-v1.1-bf16 是面向 Apple Silicon 的 FlashVSR v1.1 视频超分权重仓库:它把一步式、流式扩散 4 视频超…

2026/10/20 13:14:06 阅读更多 →
RAG生产级优化实战:从索引分块到评估迭代的完整链路

RAG生产级优化实战:从索引分块到评估迭代的完整链路

做了两年RAG相关的项目,说实话,最初能跑通demo的那点兴奋,很快就被线上badcase打没了。用户一句口语化的问题,检索模块经常召不回关键段落,大模型又一本正经地答非所问。后来我花了大把时间在检索链路和索引侧修补&…

2026/10/20 13:14:06 阅读更多 →
Git批量创建本地分支:克隆所有远程分支的实战指南

Git批量创建本地分支:克隆所有远程分支的实战指南

1. 为什么“git clone 所有分支”是个伪命题先把一个容易踩坑的认知掰正:git clone默认行为其实已经把所有分支的提交对象都拉到了本地。你打开.git目录,里面objects文件夹装的就是完整的提交历史,远端每一个分支指向的 commit 都在里面躺着。…

2026/10/20 13:14:06 阅读更多 →
电力-热力-算力三维协同:DQN强化学习实现数据中心节能优化

电力-热力-算力三维协同:DQN强化学习实现数据中心节能优化

数据中心这行当,这几年最卷的已经不是单纯的算力堆砌,而是“电费账单”和“散热瓶颈”的双重夹击。我陆续做过几个和智能调度相关的项目,其中“电力-热力-算力三维协同”这套思路,配合DQN(Deep Q-Network)深…

2026/10/20 13:13:05 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →