为什么所有主流LLM都使用SwiGLU?

简介: 本文解析现代大语言模型为何用SwiGLU替代ReLU。SwiGLU结合Swish与门控机制,通过乘法交互实现特征组合,增强表达能力;其平滑性与非饱和梯度利于优化,相较ReLU更具优势。

本文的目标是解释为什么现代LLM架构在前馈部分使用

SwiGLU

作为激活函数并且已经放弃了

ReLU

神经网络本质上是一系列矩阵乘法,如果我们堆叠线性层而不使用任何激活函数:

无论你堆叠多少层,它仍然只是一个线性变换,网络只能学习线性关系。

激活函数引入了非线性,使网络能够逼近复杂的非线性函数,这是深度学习表达能力的基础。

ReLU有什么问题?

ReLU

确实彻底改变了深度学习:

它简单、快速,并且解决了

sigmoid

tanh

等函数存在的梯度消失等问题。

虽然人们通常会列出使用

ReLU

时可能遇到的问题,比如神经元死亡等等,但这些问题要么是理论上的,要么在大多数情况下可以通过现代神经网络技术(批量归一化、自适应学习权重等)很好的避免。

不过在进入SwiGLU之前,我们先来看一个激活函数 Swish,它是 SwiGLU 的组成部分。

Swish是一个"自门控"激活函数:输入 (x) 乘以其自身的sigmoid σ(x),它充当一个,控制有多少输入能够通过。

看看门的行为:

当x非常负时:σ(x) ≈ 0,所以门是关闭的(抑制输出)

当x非常正时:σ(x) ≈ 1,所以门是完全打开的(几乎原样通过输入)

尽管公式稍微复杂一些,

Swish

的行为与

ReLU

非常相似。

Swish比ReLU更好吗?

Swish

被发现比

ReLU

效果更好,但就像深度学习中的许多事情一样我们并不确切知道为什么

Swish

效果更好,不过倒是可以总结出以下的区别:

没有硬梯度截断

看上面的图,主要区别就是它们如何处理负输入:

ReLU:在零处硬截断

当x<0时:输出 = 0 且 梯度 = 0。这就是神经元死亡问题(尽管如前所述,通常可以通过BatchNorm等现代技术来避免)

Swish:平滑、渐进地趋近于零

对于负x:梯度渐近趋近于零,但对于有限值永远不会精确等于零/所以理论上神经元总是可以接收更新(尽管对于非常负的输入,更新可能可以忽略不计)

平滑性

ReLU

在x=0处有不连续性(导数从0跳到1)。

Swish

在任何地方都是无限可微的,这意味着梯度景观是平滑的。这种平滑性是否有助于

Swish

的性能还不是100%清楚但它可能有助于优化

什么是门控线性单元(GLU)?

下面就是

SwiGLU

的另外一个组件。让我们来谈谈 GLU

其中:

x是输入

W 和 V 是权重矩阵

b和c是偏置向量

是逐元素乘法

σ 是sigmoid函数

GLU

使用门控机制在这方面与

Swish

有些相似。而它们区别在于GLU不是对所有特征应用相同的变换(恒等变换)然后用固定函数(sigmoid)进行门控,而是使用两个独立的线性投影:

xW+ b 这只是取输入并对其进行变换。它通常被称为 内容路径

σ(xV + c):这第二部分说明每个特征的内容应该让多少通过,因此它被称为 门路径

所以GLU

实际上可以被认为是

Swish` 的泛化

逐元素乘法 允许选择内容的哪些元素可以通过。当 σ(xV + c) 接近0时,门可以完全抑制某些特征,而当 σ(xV + c) 接近1时则完全让其他特征通过。

门控的具体示例

假设我们有一个4维向量 x = [1.0, -0.5, 2.0, 0.3]

GLU对同一个输入应用2个变换:

  1. 通过内容路径对内容进行变换:xW + b。假设它产生 [2.0, -1.5, 3.0, 0.5]1. 第2个变换应该扮演门的角色: σ(xV + c)。假设它产生 [0.9, 0.1, 0.95, 0.05]

GLU输出是它们的逐元素乘积:

GLU output = [2.0 × 0.9, -1.5 × 0.1, 3.0 × 0.95, 0.5 × 0.05] = [1.8, -0.15, 2.85, 0.025]

得到的结果如下:

特征1:内容为正(2.0),门值高(0.9)→ 强烈通过(1.8)

特征2:内容为负(-1.5),门值低(0.1)→ 被阻挡(-0.15)

特征3:内容为正(3.0),门值非常高(0.95)→ 完全通过(2.85)

特征4:内容较小(0.5),门值非常低(0.05)→ 被抑制(0.025)

这样网络学习了复杂的决策规则:"对于像x这样的输入,放大特征1和3,但抑制特征2和4。"

那么SwiGLU是什么?

现在我们有了所有的组成部分,

SwiGLU

(Swish门控线性单元)简单地结合了Swish和GLU:

它不是像GLU那样使用sigmoid作为门,而是使用Swish。这就是为什么它被称为 Swish + GLU

那么公式的每个部分做什么呢?这与GLU的逻辑完全相同,改变的只是门控函数。

  • Swish(xW):门——决定每个特征有多少可以通过
  • xV:内容——正在传输的实际信息
  • :逐元素乘法——将门应用于内容

为什么SwiGLU效果这么好?

从经验上看,SwiGLU在LLM中优于其他激活函数(尽管目前还不确定VLM的情况)。但为什么呢?

乘法交互创建特征组合

考虑每种架构计算的内容:

标准FFN(ReLU/GELU):

output = activation(xW₁) @ W₂

每个输出维度是激活特征的加权和,激活是逐元素应用的——特征在激活内部不会相互交互。

SwiGLU FFN

output = (Swish(xW) ⊙ xV) @ W₂

逐元素乘法 在两条路径之间创建乘积。如果我们用 g = Swish(xW)c = xV 表示,那么在最终投影之前的输出维度 igᵢ × cᵢ

这就是为什么这很重要:gᵢcᵢ 都是输入特征的线性组合(在Swish之前)。它们的乘积包含像 xⱼ × xₖ 这样的交叉项。网络可以学习 WV,使得某些输入特征组合被放大或抑制。

这类似于为什么注意力机制很强大,注意力计算 softmax(QKᵀ)V,其中 QKᵀ 乘积捕获查询和键特征之间的交互。SwiGLU为FFN带来了类似的乘法表达能力。

为什么不在门中使用sigmoid而是使用Swish?

GLU使用sigmoid:σ(xW) ⊙ xV。sigmoid的问题在于它会饱和。对于大的正或负输入,σ(x) ≈ 1σ(x) ≈ 0,且梯度 ∂σ/∂x ≈ 0,门就会被“冻结”了。

Swish对于正输入不会饱和,它近似线性增长(就像

ReLU

)。这意味着:- 梯度通过门路径流动得更好 - 门可以调节而不仅仅是开/关切换

平滑性

另外就是SwiGLU是无限可微的,这种平滑性可能有助于优化稳定性。

总结

SwiGLU的强大来自于其门控机制和乘法交互。通过将输入分成两条路径并将它们相乘,网络可以学习哪些特征组合是重要的——类似于注意力机制如何通过 QKᵀ捕获交互。

结合Swish的非饱和梯度,这使得SwiGLU对于大型模型特别有效。

https://avoid.overfit.cn/post/3fa28c75fb0b4874aa297defa145ec4a
作者:Safouane Chergui

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AI时代的“义务教育”:深度拆解LLM预训练核心原理与PyTorch源码实现
本文深入解析大模型预训练核心,以Qwen2.5为例,从Tokenizer、RoPE位置编码到GQA注意力机制,拆解LLM如何通过海量数据“炼”成。涵盖架构演进、关键技术与代码实现,带你手把手理解大模型“义务教育”阶段的底层逻辑。
152 7
|
2月前
|
人工智能 自然语言处理 安全
Lux 上手指南:让 AI 直接操作你的电脑
Lux 是一款能直接操作计算机的AI基础模型,通过视觉理解与动作预测,实现自然语言指令下的自动化任务。它无需依赖API,可像真人一样点击、输入、滚动,完成浏览器操作等复杂工作,准确率超越主流模型,是迈向“意图即执行”的重要突破。(238字)
596 13
Lux 上手指南:让 AI 直接操作你的电脑
|
1月前
|
Rust 自然语言处理 Java
《跨语言协作效率提升:GraalPython互操作核心瓶颈攻坚手册》
本文聚焦GraalPython多语言互操作的性能瓶颈,结合实时流处理、边缘计算等场景,深度剖析类型语义转译、语境切换、内存语义协同、版本协同、动态优化边界限制等核心问题。揭示不同语言类型体系、内存模型、线程调度机制的本质差异,如何通过Polyglot API、Truffle框架的中间环节放大隐性性能损耗,以及高频调用场景下这些损耗的累积效应。
102 22
|
6天前
|
人工智能 测试技术
LLM创造力可以被度量吗?一个基于提示词变更的探索性实验
本文探讨提示词工程为何仍是“玄学”,并通过实验证明:加入明确指令(如“Be as creative as possible”)可显著、可量化地提升LLM输出多样性,效果甚至超过调高温度。研究以embedding距离为代理指标,覆盖13个主流模型,揭示提示词迭代可度量、可预测,为LLM应用从经验走向工程化提供新路径。
76 17
LLM创造力可以被度量吗?一个基于提示词变更的探索性实验
|
11天前
|
机器学习/深度学习
机器学习特征工程:分类变量的数值化处理方法
分类特征编码是机器学习关键却常被低估的环节。Ordinal Encoding适用于有序类别(如学历),One-Hot Encoding消除顺序假象但易致维度爆炸,Target Encoding则通过目标均值处理高基数特征,需配合平滑与交叉验证防过拟合与数据泄露。
69 5
|
27天前
|
机器学习/深度学习 编解码 算法
YOLO26改进 - C2PSA | C2PSA融合TSSA(Token Statistics Self-Attention)令牌统计自注意力,优化遮挡目标感知
本文提出Token统计自注意力(TSSA),通过动态分组与低秩投影实现线性复杂度注意力机制。基于MCR²目标推导,摒弃传统成对相似度计算,显著提升效率。集成于YOLO26的C2PSA模块后,实验验证其在目标检测中性能优越,代码已开源。
|
28天前
|
人工智能 运维 API
从 Coze API 到智能体系统落地:AI 智能体运营工程师的工程实践解析
在AI 2.0时代,Coze API推动智能体从技术走向生产力。本文聚焦西南实践,解析API调用到商业落地的全流程,揭秘“智能体来了”如何通过插件集成、工作流编排培养具备运营思维的AI工程师,助力开发者转型,抢占智能体时代新机遇。
119 11
|
1月前
|
传感器 数据可视化 算法
基于 YOLOv8 的多目标风力涡轮机、天线、烟囱、电力线检测识别项目 [目标检测完整源码]
基于YOLOv8的风电场多目标智能感知平台,实现对风力涡轮机、电力线、天线、烟囱等目标的高精度检测。融合PyQt5构建可视化桌面系统,支持图片、视频、摄像头等多种输入,具备模型可复现、系统可运行、功能可扩展优势,适用于新能源巡检、设施监测与教学研究,提供完整源码与数据集,助力AI工程化落地。
91 6
|
30天前
|
人工智能 机器人 测试技术
用提示工程让大模型自己检查自己:CoVe方法有效减少幻觉
Chain-of-Verification(CoVe)通过“起草-验证-修复”四步流程,让大模型自我纠错幻觉。关键在于隔离验证:隐去初稿,迫使模型独立核查事实,避免自我强化错误。适用于模型应知但易错的场景,与RAG互补。虽增加延迟与成本,却为高可靠性任务提供保障,是迈向“系统2思维”的重要一步。
216 33
用提示工程让大模型自己检查自己:CoVe方法有效减少幻觉
|
2月前
|
机器学习/深度学习 人工智能 监控
基于强化学习的量化交易框架 TensorTrade
TensorTrade 是一个基于强化学习的开源交易算法框架。它通过环境模拟、策略训练与奖励机制,让AI在历史数据中自主学习买卖时机,构建逻辑自洽的交易策略,助力量化研究。
270 9
基于强化学习的量化交易框架 TensorTrade

热门文章

最新文章