1.2 激活函数
从函数逼近与梯度传播角度系统分析激活函数的作用、机制与常见形式
一、什么是激活函数
神经网络中每一层的基本计算形式为:
z=Wx+ba=ϕ(z)$z$ 为线性变换结果(logits)
$\phi(\cdot)$ 为激活函数
$a$ 为该层输出
若网络中所有 $\phi(\cdot)$ 均为线性函数,则多层网络可整体合并为一次线性映射:
WL⋯W2W1x因此,激活函数存在的根本原因在于引入非线性,使模型具备表达复杂函数的能力
从优化角度看,激活函数并不仅决定前向表达能力,还直接控制反向传播中的梯度结构
反向传播的链式法则为:
∂W∂L=∂a∂L⋅∂z∂a⋅∂W∂z∂z∂a=ϕ′(z)由此可见,在链式求解过程中,激活函数的导数会影响梯度
若长期接近 0 → 梯度消失
若数值不受控 → 梯度爆炸
一个“良好”的激活函数通常需要在以下方面取得平衡:
提供足够的非线性表达能力
在常见输入范围内保持梯度可传播
避免输出长期处于饱和区
计算形式足够简单,适合大规模训练
激活函数并非局部技巧,而是对函数逼近能力、梯度传播稳定性、优化可行性的统一设计
不同激活函数的演化,本质是围绕深层可训练性展开的
二、Sigmoid / Tanh
2.1 Sigmoid
输出范围为 $(0, 1)$,可直接解释为概率
其导数为:
当 $|x|$ 较大时:
在深层网络中,梯度在多层相乘后迅速衰减,从而会导致梯度消失问题
2.2 Tanh
输出范围为 $(-1,1)$,相较 Sigmoid 为零中心
其导数为:
tanh′(x)=1−tanh2(x)在 $|x|$ 较大时同样进入饱和区:
tanh2(x)≈1⇒tanh′(x)≈0仍然无法从根本上解决深层网络的梯度传播问题
三、ReLU
3.1 ReLU
ReLU(Rectified Linear Unit)系列激活函数用于解决“能不能训”的问题(梯度是否存在)
其导数为:
正区间梯度恒定,使梯度能够在深层网络中传播,从而缓解梯度消失问题
激活稀疏,即部分神经元输出为零,有助于特征选择,有隐式正则化效果
计算简单高效,适合大规模训练
但当神经元长期落在负区间时,梯度会恒为 0,参数无法再更新,这种现象被称为 死亡 ReLU
3.2 Leaky ReLU / PReLU
缓解死亡 ReLU 问题
为负区间保留非零梯度,从机制上缓解死亡 ReLU
同时仍保持 ReLU 的梯度稳定优势
$\alpha$ 可为固定小值(如 0.01)或可学习参数(PReLU)
但引入了额外的超参数,需要调优
整体上,Leaky ReLU 在保持 ReLU 优势的同时,提升了负区间的梯度流动性,因此 Leaky ReLU 成为实际应用中的常用选择
四、Softmax
多分类任务要求模型输出各类别的相对置信度,且能够被解释为概率分布,即输出需满足:
pi≥0,i∑pi=1Softmax 正是为满足这一建模目标而引入的映射
Softmax(xi)=∑j=1nexjexi指数函数保证输出为正
归一化保证概率和为 1
本质上,Softmax 将 logits 映射为相对权重
4.1 指数放大效应
由于指数函数的性质(指数放大效应):
xi−xj 的差异 ⇒exi/exj 的指数级差异若存在 $x_k \gg x_j$:
因此,Softmax 天然倾向于产生近似 one-hot 的输出
然而,当 $x_i$ 较大时:
工程上必须进行等价变换,以在数值层面修正指数的放大副作用:
4.2 Jocobian 矩阵
由于 Softmax 公式的分母中包含所有 $x_k$,所以:
$p_1$ 依赖 $x_1, x_2, \dots$
$p_2$ 依赖 $x_1, x_2, \dots$
……
这说明 Softmax 的归一化导致任一 logit 的变化都会影响全部输出,其输出各分量之间相互耦合
而在链式法则中求解时:
∂xi∂L其结构为:
x;Softmax;p;Loss;L而 $L$ 是 所有 $p_j$ 的函数,每个 $p_j$ 又是 所有 $x_i$ 的函数,故
∂xi∂L=j∑∂pj∂L⋅∂xi∂pj其中,$\frac{\partial p_j}{\partial x_i}$ 的具体形式即为 Jocobian 矩阵:
∂xj∂pi={pi(1−pi),−pipj,i=ji=j
4.3 引入交叉熵
根据 4.2 所述,Softmax 的梯度这么复杂、各类别还彼此耦合,那为什么它还能在深度网络中稳定训练?
这是因为交叉熵刚好“对齐”了 Softmax 的 Jacobian 结构
交叉熵损失:
L=−i∑yilogpi对交叉熵损失求偏导:
∂xi∂L∂pj∂L=j∑∂pj∂L⋅∂xi∂pj=−pjyj将其与 Softmax 的 Jacobian 结合:
当 $j = i$ 时:
−piyi⋅pi(1−pi)=−yi(1−pi)当 $j \ne i$ 时:
−pjyj⋅(−pipj)=yjpi将所有项合并,有:
∂xi∂L=−yi(1−pi)+j=i∑yjpi提取公共因子 $p_i$,并利用 $\displaystyle\sum_j y_j = 1$:
∂xi∂L=−yi+yipi+pi(1−yi)=pi−yi
可以看到,Softmax 在前向传播中引入的指数放大与全量耦合,在与交叉熵组合后,于反向传播中被完全抵消
最终梯度只保留为:
∂xi∂L=pi−yi这一结果不再包含指数、归一化或 Jacobian 矩阵,梯度形式极其简洁稳定
这是 Softmax 能在深度学习中成立的决定性原因
4.4 Softmax 的“梯度消失”
当模型预测过于自信:
梯度自然趋于 0:
这不是数值问题,而是概率模型已“自认为收敛”,这也说明,不是所有梯度消失都意味着训练失败
五、GELU
5.1 ELU
ELU(Exponential Linear Unit) 和 SELU(Scaled ELU)均用于解决“训练过程中分布会不会崩”的问题(保证均值、方差稳定)
ELU 的基本形式:
ELU(x)={x,α(ex−1),x>0x≤0其核心思想并不只是“给负半轴一点梯度”:
以指数形式组织负区间,使得负区间的输出 有界且平滑
使激活输出的 均值更接近 0,输出方差更稳定
小负输入会被“软压缩”,而不是简单缩放
降低了 ReLU 中“全部非负 → 偏移累积”的问题
5.2 SELU
SELU 定义为对 ELU 的线性缩放:
SELU(x)=λ{x,α(ex−1),x>0x≤0$\alpha, \lambda$ 并非可调超参数,而是通过固定点分析精确选定
核心思想:
如果输入分布的均值和方差略有偏移
经过 SELU + 随机连接后
输出会被自动拉回到一个稳定区间,从而提高统计稳定性
这意味着激活函数本身承担了“归一化”的角色,在特定条件下(全连接、特定初始化、无 BN),可以不使用 BatchNorm
5.3 GELU
GELU(Gaussian Error Linear Unit)的定义:
GELU(x)=x⋅Φ(x)其中 $\Phi(x)$ 是标准正态分布的累积分布函数:
Φ(x)=∫−∞x2π1e−t2/2dt常用近似形式(便于计算):
GELU(x)≈0.5x(1+tanh(π2(x+0.044715x3)))GELU 的核心思想转变——解决“表示是否足够细腻、是否与概率建模假设一致”的问题
ReLU 系列的问题设定是:“这个神经元要不要被激活?”
GELU 的问题设定是:“这个神经元 以多大概率 被保留下来?”
具体解释:
假设输入 $x$ 是带噪声的(近似高斯)
$\Phi(x)$ 表示:$x$ 在噪声扰动下仍为正的概率
激活输出:
x⋅P(被保留)
因此小正值不会被硬性通过,小负值也不会被直接抹零,其激活是 连续、概率化、平滑的
为什么 GELU 特别适合 Transformer?
Transformer 的中间表示(尤其是 FFN 层):维度极高,其表示接近连续分布,对“细微差异”高度敏感
而 GELU 的优势正好对应这些特性:
无硬阈值 → 梯度始终连续,使得梯度更为平滑
小信号被“部分保留”而非直接抹除,表示能力更细腻
不会引入明显分布偏移,与 LayerNorm、残差结构天然兼容
因此 GELU 成为 BERT、GPT、ViT 等 Transformer 架构中的默认激活函数
从 ReLU 到 ELU / SELU,再到 GELU,是从几何可导性 → 统计稳定性 → 表示与建模假设的一致性的演变过程
Last updated
Was this helpful?