专题 B · SwiGLU:模型怎样筛选信息
⏱ 8 分钟 | 可选专题
🎯 一句话
普通 FFN 是“把每个 token 放大加工再压回去”;SwiGLU 在中间多加了一扇可学习的门:不是所有加工结果都同样放行。
它真正解决什么问题
FFN 要把“当前 token 已经知道的东西”转成更有用的内部特征。普通激活函数像固定规则:超过某个范围就通过多少。SwiGLU 给模型一条额外支路,能根据当前输入动态决定“这类特征这次值不值得放大”。
这不是一个外部开关,也不是人规定“看到代码就开、看到中文就关”。门的参数和其他参数一起从数据中学出来。
为什么参数没有暴涨
SwiGLU 多了一条投影,但现代模型会把中间层宽度相应缩小。因此总参数量大致保持接近,换来更灵活的非线性加工。你只要记住:三个矩阵不代表白白多花一倍成本;尺寸已经重新平衡。
它和注意力的分工
| 零件 | 它问的问题 |
|---|---|
| 注意力 | 我该从哪些 token 那里取信息? |
| SwiGLU FFN | 拿到后,我自己的哪些特征值得放大? |
✅ 检查点
- SwiGLU 是 FFN 内部的门控激活,不是另一套模型。
- 它让每个 token 的“自己加工”更有选择性。
- 注意力负责 token 之间交流;FFN 负责 token 自己加工。
点开核对
SwiGLU 是 FFN 里面的门:一条支路产生内容,另一条支路决定放行多少。它不负责 token 之间的关系,那仍是注意力的任务。
🔗 想再深一层,去哪一套
| 去哪 | 为什么 |
|---|---|
| ML 基础 07 · 从线性到神经网络 | 第三节那张激活函数对照表:ReLU / Leaky ReLU / GELU 与 SwiGLU 各自在解什么 |
| 专题 D · MoE:怎样扩容 | 同一层的另一种改法:这一页让 FFN 更会筛,那一页让 FFN 变多但每次只开几个 |
🛑 可以停在这里
只用 API 或做应用时,知道它是“更会筛信息的 FFN”就足够。源码里的 gate_proj / up_proj / down_proj 是同一张图的代码名字。
⚡ 走神救援
SwiGLU 就是在 FFN 里加一扇会学习的门:信息不是全盘放大,而是根据当前 token 筛选。下一专题看模型如何知道词与词隔了多远。