大模型基础--激活函数
1.概述
激活函数的存在是为神经网络引入了非线性,使得神经网络能够学习和表示复杂的非线性关系。
2. 阶跃(Binary step)函数



致命缺陷:导数恒为0,阻断梯度传播的通路。
3. Sigmoid函数


Sigmoid能将任意输入映射到区间(0,1)。常用于二分类的输出层。但因其涉及指数运算,计算量相对较高。
Sigmoid的导数范围为(0,0.25),梯度较小,特别是在[-6,6]之外时,梯度接近于0,在逐层反向传播时,梯度会呈指数级衰减,造成梯度消失。
4. Tanh函数


Tanh(双曲正切)的导数范围为(0,1],梯度较小,特别是在[-3,3]之外时,梯度接近于0,在逐层反向传播时,梯度会呈指数级衰减,造成梯度消失。
5. ReLU函数


ReLU 在正区间保持恒定梯度,使梯度能够高效传播,大大缓解了早期网络中的梯度消失问题,因而在浅层或中等规模神经网络中表现优异。然而,ReLU 对负区间进行“硬截断”,会导致梯度完全为零,从而引发“死亡神经元”现象,即神经元在训练过程中一旦进入负区间可能永久失活,丢失信息;此外,其非线性也较弱。
6. GELU
GELU(Gaussian Error Linear Unit)是早期Transformer预训练模型(例如Bert、GPT-2/3)中曾广泛采用的平滑非线性激活函数。
![]()
![]()
其中Φ(x)表示标准正态分布的累积分布函数。
随着x增大,Φ(x)趋向 1,输出趋近于x;随着x减小,Φ(x)趋向 0,输出则逐渐衰减为 0;对于接近 0 的输入,函数会在 0 与 之间进行平滑过渡。
相比 ReLU,GELU 在全域连续可导,能在深层网络中提供更稳定的梯度传播,且不会出现 “神经元死亡”问题。
7. SiLU和Swish
SiLU(Sigmoid Linear Unit)也是一种连续可导的激活函数,其基本思想是使用 sigmoid 函数对线性输入进行加权,从而得到一种柔和的非线性变换。
![]()
![]()

当x较大时,σ(x)趋近于1,输出接近x;当x较小时,接近于0,输入会被有效抑制;在接近0的区域,函数呈现平滑的过渡,而不是直接截断为零。
Swish 可视为 SiLU 的一般化形式。主流实现通常将β固定为 1。在工程实践中 Swish 与 SiLU 往往混用,不作严格区分。
8. GLU及其变体
与传统 ReLU、GELU 等单路激活不同,GLU 类结构采用 “主分支 × 门控分支” 的双分支设计,通过引入门控机制,使模型能够对信息流进行更加细致的筛选与调控。

门控结构的关键区别在于门控分支所采用的门控函数。不同的函数会导致门控行为、梯度特性和最终模型性能的差异,因此形成了多种 GLU 变体。常见的门控结构包括
GLU:使用 Sigmoid 作为门控函数;GEGLU:使用GELU作为门控函数;SwiGLU:使用SiLU作为门控函数
在众多变体中,SwiGLU在性能与训练稳定性方面表现最优,因此成为当前主流 LLM(LLaMA、Qwen、DeepSeek 等)的默认门控结构。
- 点赞
- 收藏
- 关注作者
评论(0)