跳到主要内容

激活函数

问题

激活函数的作用是什么?常见的激活函数有哪些?为什么 ReLU 取代了 Sigmoid?LLM 中为什么使用 GELU/SwiGLU?

答案

激活函数为神经网络引入非线性——没有激活函数,多层线性变换仍是线性,网络表达能力等同于单层。

一、常见激活函数对比

激活函数公式输出范围特点
Sigmoidσ(x)=11+ex\sigma(x) = \frac{1}{1+e^{-x}}(0, 1)经典,但梯度消失严重
Tanhtanh(x)=exexex+ex\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}(-1, 1)零中心,但仍有梯度消失
ReLUmax(0,x)\max(0, x)[0, +∞)简单高效,深度学习默认
Leaky ReLUmax(αx,x)\max(\alpha x, x)(-∞, +∞)解决 ReLU "死神经元"
GELUxΦ(x)x \cdot \Phi(x)(-0.17, +∞)Transformer/BERT 默认
Swishxσ(x)x \cdot \sigma(x)(-0.28, +∞)Google 搜索发现,效果好
SwiGLUGLU 门控 + Swish-LLaMA/GPT 等 LLM 使用

二、为什么 ReLU 取代了 Sigmoid?

问题SigmoidReLU
梯度消失严重(梯度最大 0.25,多层累乘趋近 0)正区间梯度恒为 1
计算开销指数运算,较慢只需比较和取值,极快
零中心输出全为正,导致梯度偏移正区间保持,负区间为 0
稀疏性所有神经元都"激活"约 50% 为 0——稀疏激活
ReLU 的问题——Dead Neurons

如果某个神经元的输入始终为负,它的输出永远为 0,梯度也永远为 0——这个神经元"死了",永远不会更新。

解决方案

  • Leaky ReLU:负区间给一个小斜率(如 0.01x)
  • Parametric ReLU(PReLU):负区间斜率可学习
  • ELU:负区间指数衰减

三、GELU——Transformer 的默认激活

GELU(x)=xΦ(x)0.5x(1+tanh[2/π(x+0.044715x3)])\text{GELU}(x) = x \cdot \Phi(x) \approx 0.5x(1 + \tanh[\sqrt{2/\pi}(x + 0.044715x^3)])

GELU 是 BERT、GPT 等 Transformer 模型的标准激活函数。它的特点:

  • 平滑版 ReLU:不像 ReLU 在 0 处有"尖角"
  • 概率解释Φ(x)\Phi(x) 是标准正态分布的累积分布函数,GELU 可以理解为"以概率 Φ(x)\Phi(x) 保留 xx"
  • 效果更好:在 NLP 任务上比 ReLU 一致性地更好

四、SwiGLU——LLM 的最新选择

SwiGLU 是 LLaMA、PaLM、GPT-4 等现代 LLM 使用的激活函数,结合了 Swish 激活门控线性单元(GLU)

SwiGLU(x)=Swish(xW1)(xW2)\text{SwiGLU}(x) = \text{Swish}(xW_1) \otimes (xW_2)

相比 GELU 的优势:门控机制让模型可以学习性地控制信息流通,在相同参数量下效果更好。

五、不同场景的选择建议

场景推荐激活函数
CNN 隐藏层ReLU(或 Leaky ReLU)
Transformer 隐藏层GELU
现代 LLM(FFN)SwiGLU
二分类输出层Sigmoid
多分类输出层Softmax
回归输出层无激活(线性)

常见面试问题

Q1: Softmax 的作用是什么?温度参数有什么影响?

答案

Softmax(zi)=ezi/Tjezj/T\text{Softmax}(z_i) = \frac{e^{z_i / T}}{\sum_j e^{z_j / T}}

Softmax 将一组实数转换为概率分布(和为 1)。温度参数 T 控制分布的"尖锐"程度:

  • T → 0:输出趋近 one-hot(最大值对应概率 → 1,其余 → 0)
  • T = 1:标准 Softmax
  • T → ∞:输出趋近均匀分布

在 LLM 中,Temperature 控制生成的随机性——低温更确定、高温更多样。

Q2: 为什么 Sigmoid 不适合做隐藏层的激活函数?

答案

  1. 梯度消失:Sigmoid 的导数最大值仅 0.25,多层累乘后梯度趋近 0
  2. 非零中心:输出都是正数,导致后一层权重梯度要么全正要么全负(zig-zag 更新)
  3. 指数运算慢:相比 ReLU 的 max 操作,计算成本高

但 Sigmoid 在输出层(二分类概率)和门控结构(LSTM 的遗忘门)中仍然适用。

Q3: 什么是 GLU(Gated Linear Unit)?为什么它对 LLM 有效?

答案

GLU(x)=(xW1+b1)σ(xW2+b2)\text{GLU}(x) = (xW_1 + b_1) \otimes \sigma(xW_2 + b_2)

GLU 将输入分成两部分:一部分做线性变换,另一部分经过 Sigmoid 作为"门控"——决定哪些信息通过、哪些被抑制。

对 LLM 有效的原因:

  • 选择性信息过滤:门控机制让模型可以动态地选择保留哪些特征
  • 梯度流动更好:门控结构提供了额外的梯度路径
  • 实验验证:PaLM 论文发现 SwiGLU 在同参数量下比 GELU FFN 效果更好

相关链接