激活函数

Activation Function
激活函数是用于人工神经网络中的一种函数,它决定了神经元的输出是否应该被激活,从而引入非线性因素,使神经网络能够学习和表示复杂的数据模式。

决定了神经元输出,给网络引入非线性能力
如果没有激活函数,深度网络只相当于线性变换堆叠,无法拟合复杂模式。

激活函数的主要作用是引入非线性,使得神经网络能够处理非线性问题。没有激活函数,神经网络只是线性模型的叠加,无法解决复杂的任务。激活函数使得神经网络能够逼近任何复杂的函数,从而在图像识别、自然语言处理等任务中取得优异的表现。

为什么需要激活函数?

如果没有激活函数(或者只使用线性激活函数),无论神经网络有多少层,整个网络都将退化为一个简单的线性模型。这意味着网络只能学习线性关系,无法处理非线性可分的数据。激活函数通过引入非线性,赋予了神经网络学习复杂模式的能力,使其能够逼近任何连续函数(根据通用近似定理)。

常见激活函数

Sigmoid (Logistic Sigmoid)

数学表达式:

σ(x)=11+ex(0,1)σ(x)=σ(x)(1σ(x))

早期神经网络(比如最早的多层感知机 MLP)
输出概率(如二分类模型最后一层)

优点: 将输出压缩到 (0,1),可解释为概率;平滑可导。

缺点

Tanh (Hyperbolic Tangent)

tanh(x)=exexex+ex(1,1)tanh(x)=1tanh2(x)

将输入值压缩到-1到1之间
Sigmoid和Tanh函数用于控制记忆单元的输入、输出和遗忘门,使模型能够捕捉长序列依赖关系。

同样存在梯度消失问题。

ReLU(Rectified Linear Unit )

ReLU(x)=max(0,x)ReLU(x)={1,x>00,x0

对于输入值为负时输出为0,正值时输出为该值本身。

缺点:死神经(Dead Neuron)问题:输入小于0时梯度为0,永远不会更新。

Leaky ReLU

{xif x0αxif x<0

为解决“死亡 ReLU”问题,提出了多种 ReLU 的变体:

Softmax 函数

激活函数的选择原则