激活函数

神经网络中引入非线性的关键组件。没有激活函数,多层网络等价于单层线性变换;有了它,网络才能学会复杂模式。常见的有 ReLU、Sigmoid、GELU 等。

一句话理解

激活函数是神经网络中每个神经元的"开关逻辑"——它决定这个神经元的信号要不要往下传、怎么传。

为什么需要激活函数

线性变换的叠加仍然是线性的:

W2(W1x+b1)+b2=Wx+bW_2(W_1 x + b_1) + b_2 = W' x + b'W2(W1x+b1)+b2=Wx+b

无论叠多少层,最终效果和一层没有区别。激活函数在每层之间插入非线性变换,打破了这个限制,使得深层网络能拟合任意复杂的函数关系。

常见激活函数一览

名称公式特点主要用途
ReLUmax(0,x)\max(0, x)max(0,x)计算快,正区间梯度恒为 1隐藏层(最常用)
Sigmoid11+ex\frac{1}{1+e^{-x}}1+ex1输出 (0,1),可作概率二分类输出、门控
Tanhexexex+ex\frac{e^x - e^{-x}}{e^x + e^{-x}}ex+exexex输出 (-1,1),零中心RNN 隐藏层
GELUxΦ(x)x \cdot \Phi(x)xΦ(x)平滑,概率性保留负值Transformer FFN
Softmaxeziezj\frac{e^{z_i}}{\sum e^{z_j}}ezjezi输出概率分布多分类输出层

如何选择

TIP

实用选择指南

  • 隐藏层默认选 ReLU(或其变体 Leaky ReLU),简单高效
  • Transformer 架构选 GELU,已成为行业标准
  • 二分类输出层选 Sigmoid,将 logit 转为概率
  • 多分类输出层选 Softmax,将 logit 转为概率分布
  • RNN/LSTM 隐藏层选 Tanh,零中心有助于训练稳定性

激活函数的本质

从几何角度看,激活函数对空间进行"折叠"和"扭曲"。单层线性变换只能画直线分界面,加入激活函数后,网络可以画出任意复杂的曲面来区分不同类别的数据。层数越多,能表达的曲面就越复杂。