什么是激活函数
在神经元的数学表达式 (y = h(wx+b)) 中,h、w、b 分别代表激活函数、权重参数、偏置参数,三者是构成单个神经元的核心要素,共同实现对输入信号的加权变换与非线性映射
其中h则为激活函数
本质:一个非线性函数,用于对线性变换结果 (wx+b) 进行映射,让神经元具备非线性表达能力。核心作用:如果没有激活函数,无论神经网络有多少层,最终输出都是输入的线性组合(多层线性变换等价于单层线性变换),无法拟合复杂的非线性任务(如图像分类、语音识别)。
为什么要选用非线性函数?
仅靠线性变换的多层网络等价于单层线性模型,无法拟合复杂的非线性任务。线性变换的局限性直接限制了网络的表达能力,具体分析如下:
线性变换的本质缺陷:多层等价于单层
假设神经网络中没有激活函数(即 h(z)=zh(z)=zh(z)=z,恒等映射),那么无论堆叠多少层,最终的输出都只是输入的线性组合。
1. 单层线性网络的表达式
对于单层全连接网络,输出为:
y=w1x+b1y = w_1x + b_1y=w1x+b1
其中 w1w_1w1 是权重,b1b_1b1 是偏置,这是一个典型的线性模型(如线性回归)。
2. 两层线性网络的等价性
如果堆叠第二层线性层,输出为:
z1=w1x+b1z_1 = w_1x + b_1z1=w1x+b1
y=w2z1+b2=w2(w1x+b1)+b2=(w2w1)x+(w2b1+b2)y = w_2z_1 + b_2 = w_2(w_1x + b_1) + b_2 = (w_2w_1)x + (w_2b_1 + b_2)y=w2z1+b2=w2(w1x+b1)+b2=(w2w1)x+(w2b1+b2)
令 w′=w2w1w'=w_2w_1w′=w2w1,b′=w2b1+b2b'=w_2b_1 + b_2b′=w2b1+b2,则两层线性网络的输出可简化为:
y=w′x+b′y = w'x + b'y=w′x+b′
这和单层线性网络的形式完全一致。
3. 推广到任意多层
同理,无论堆叠 nnn 层线性变换,最终都可以合并为一个等价的单层线性模型:
y=wn(wn−1(...(w1x+b1)...)+bn−1)+bn=Wx+By = w_n(w_{n-1}(...(w_1x + b_1)...)+b_{n-1}) + b_n = Wx + By=wn(wn−1(...(w1x+b1)...)+bn−1)+bn=Wx+B
其中 WWW 是所有层权重的乘积,BBB 是所有偏置的线性组合。
结论:纯线性多层网络的表达能力和单层线性模型完全相同,无法突破线性模型的局限性。
线性模型的核心局限性
现实世界中的绝大多数任务都是非线性的,而线性模型只能拟合变量之间的线性关系,存在以下致命缺点:
-
无法拟合非线性决策边界
- 例如分类任务中,两类样本的分布可能是环形、螺旋形等非线性结构,线性模型只能用直线/平面划分,无法正确分类。
- 例:异或(XOR)问题是经典的非线性任务,线性模型无法解决,而加入非线性激活函数的神经网络可以轻松拟合。
-
无法捕捉复杂特征关系
- 例如图像识别中,"猫"的特征是"耳朵+眼睛+胡须"的组合,这种特征之间的关联是非线性的,线性模型无法对其进行抽象和整合。
- 线性变换只能对输入特征做加权求和,无法实现特征之间的交互(如特征A和特征B的乘积、嵌套关系)。
-
泛化能力极差
- 线性模型的拟合能力有限,面对复杂数据时,要么欠拟合(无法捕捉数据规律),要么无法适应数据的非线性波动。
非线性激活函数的核心作用
激活函数 h(z)h(z)h(z) 是一个非线性函数 (如 ReLU、Sigmoid),其核心价值是打破线性叠加的等价性,让网络具备分层抽象特征的能力。
1. 引入非线性后,多层网络的表达能力指数级提升
以两层网络为例,加入非线性激活函数 hhh 后:
z1=h(w1x+b1)z_1 = h(w_1x + b_1)z1=h(w1x+b1)
y=w2z1+b2=w2h(w1x+b1)+b2y = w_2z_1 + b_2 = w_2h(w_1x + b_1) + b_2y=w2z1+b2=w2h(w1x+b1)+b2
此时 yyy 不再是 xxx 的线性组合,而是非线性复合函数 。随着网络层数增加,非线性变换的次数增多,网络可以拟合任意复杂的非线性函数(这就是万能逼近定理:一个足够深的前馈神经网络,只要包含非线性激活函数,就能以任意精度逼近任意连续函数)。
2. 实现特征的分层抽象
- 浅层网络通过非线性激活提取低级特征(如图像的边缘、纹理);
- 深层网络将低级特征通过非线性组合,抽象为高级特征(如物体的部件、轮廓);
- 最终全连接层基于高级特征完成分类/回归任务。
线性变换 vs 非线性变换 对比表
| 特性 | 线性变换(无激活函数) | 非线性变换(有激活函数) |
|---|---|---|
| 多层等价性 | 多层等价于单层 | 多层≠单层,表达能力逐层增强 |
| 拟合能力 | 仅能拟合线性关系 | 可拟合任意非线性关系 |
| 特征抽象能力 | 无分层抽象能力 | 支持低级→高级特征的抽象 |
| 适用任务 | 简单线性任务(如线性回归) | 复杂任务(图像分类、NLP等) |
常用函数:
经典激活函数(传统浅层网络)
1. Sigmoid 函数
- 数学表达式
σ(z)=11+e−z\sigma(z)=\frac{1}{1+e^{-z}}σ(z)=1+e−z1 - 核心特性
- 输出范围:(0,1)(0,1)(0,1),适合将输出映射为概率值。
- 导数特性:σ′(z)=σ(z)(1−σ(z))\sigma'(z)=\sigma(z)(1-\sigma(z))σ′(z)=σ(z)(1−σ(z)),导数最大值为 0.25。
- 优点:输出平滑,可直接作为二分类任务的概率输出。
- 缺点
- 严重的梯度消失 :当 ∣z∣|z|∣z∣ 较大时,导数趋近于 0,深层网络训练困难。
- 输出非零均值:导致下一层输入偏移,收敛速度慢。
- 适用场景 :二分类任务的输出层(不推荐用于隐藏层)。
2. Tanh 函数(双曲正切函数)
- 数学表达式
tanh(z)=ez−e−zez+e−z\tanh(z)=\frac{e^z - e^{-z}}{e^z + e^{-z}}tanh(z)=ez+e−zez−e−z - 核心特性
- 输出范围:(−1,1)(-1,1)(−1,1),零均值特性,解决了 Sigmoid 的均值偏移问题。
- 导数特性:tanh′(z)=1−tanh2(z)\tanh'(z)=1-\tanh^2(z)tanh′(z)=1−tanh2(z),导数最大值为 1(优于 Sigmoid)。
- 优点:收敛速度比 Sigmoid 快,适合传统浅层网络的隐藏层。
- 缺点 :仍存在梯度消失 问题,∣z∣|z|∣z∣ 较大时导数趋近于 0。
- 适用场景:循环神经网络(RNN)的隐藏层、传统全连接网络的隐藏层。
现代激活函数(深层网络主流)
ReLU 函数(修正线性单元)
- 数学表达式
ReLU(z)=max(0,z)={zz>00z≤0\text{ReLU}(z)=\max(0,z)=\begin{cases}z & z>0 \\ 0 & z\le0\end{cases}ReLU(z)=max(0,z)={z0z>0z≤0 - 核心特性
- 输出范围:[0,+∞)[0,+\infty)[0,+∞),非负区间。
- 导数特性:ReLU′(z)={1z>00z<0\text{ReLU}'(z)=\begin{cases}1 & z>0 \\ 0 & z<0\end{cases}ReLU′(z)={10z>0z<0(z=0z=0z=0 处导数工程上设为 0/1)。
- 优点
- 解决梯度消失:正区间导数恒为 1,梯度可无衰减传递到浅层。
- 计算效率极高:仅需比较操作,无指数/除法运算。
- 稀疏激活:负区间神经元静默,减少冗余计算和过拟合风险。
- 缺点
- 死亡 ReLU 问题:学习率过高时,部分神经元长期输出 0,权重无法更新。
- 输出非零均值:需搭配 Batch Normalization 缓解。
- 适用场景 :卷积神经网络(CNN)、深度全连接网络(DNN)、Transformer 的隐藏层(当前最主流)。
ReLU 变体(解决死亡 ReLU 问题)
ReLU 的变体通过在负区间引入非零输出,避免神经元永久死亡,是深层网络的常用优化选择。
| 变体名称 | 数学表达式 | 核心改进 | 适用场景 |
|---|---|---|---|
| Leaky ReLU | max(αz,z)\max(\alpha z, z)max(αz,z)(α\alphaα 通常取 0.01) | 负区间保留小斜率 α\alphaα,防止神经元死亡 | 深层 CNN、容易出现死亡 ReLU 的网络 |
| PReLU(参数化 ReLU) | max(αz,z)\max(\alpha z, z)max(αz,z)(α\alphaα 为可训练参数) | 让网络自主学习负区间斜率,适应性更强 | 高精度图像识别、语义分割任务 |
| ELU(指数线性单元) | {zz>0α(ez−1)z≤0\begin{cases}z & z>0 \\ \alpha(e^z-1) & z\le0\end{cases}{zα(ez−1)z>0z≤0 | 负区间用指数函数平滑过渡,输出均值更接近 0 | 对训练稳定性要求高的深层网络 |
| Swish | z⋅σ(βz)z \cdot \sigma(\beta z)z⋅σ(βz)(β\betaβ 通常取 1) | 平滑的非线性函数,无硬阈值,实验效果优于 ReLU | Transformer、轻量级网络 |
输出层专用激活函数
这类激活函数针对分类/回归任务的输出特性设计,直接输出任务所需的结果形式。
1. Softmax 函数
- 数学表达式
Softmax(zi)=ezi∑j=1nezj\text{Softmax}(z_i)=\frac{e^{z_i}}{\sum_{j=1}^n e^{z_j}}Softmax(zi)=∑j=1nezjezi - 核心特性
- 输出范围:(0,1)(0,1)(0,1),所有类别输出的和为 1,可直接作为多分类的概率分布。
- 适用场景 :多分类任务的输出层(如 ImageNet 分类、手写数字识别)。
2. Linear 函数(恒等映射)
- 数学表达式
Linear(z)=z\text{Linear}(z)=zLinear(z)=z - 核心特性 :无非线性变换,输出与输入一致,范围为 (−∞,+∞)(-\infty,+\infty)(−∞,+∞)。
- 适用场景 :回归任务的输出层(如预测房价、物体尺寸)。
常用激活函数综合对比表
| 激活函数 | 输出范围 | 梯度消失风险 | 计算效率 | 核心适用场景 |
|---|---|---|---|---|
| Sigmoid | (0,1)(0,1)(0,1) | 高 | 低 | 二分类输出层 |
| Tanh | (−1,1)(-1,1)(−1,1) | 中 | 中 | 浅层 RNN 隐藏层 |
| ReLU | [0,+∞)[0,+\infty)[0,+∞) | 低(仅负区间) | 极高 | 深层 CNN/DNN/Transformer 隐藏层 |
| Leaky ReLU | (−∞,+∞)(-\infty,+\infty)(−∞,+∞) | 极低 | 极高 | 深层网络(解决死亡 ReLU) |
| Softmax | (0,1)(0,1)(0,1)(和为 1) | - | 中 | 多分类输出层 |
| Linear | (−∞,+∞)(-\infty,+\infty)(−∞,+∞) | - | 极高 | 回归任务输出层 |
选择激活函数的核心原则
- 隐藏层优先选 ReLU 及其变体:计算快、梯度稳定,适合深层网络。
- 输出层按任务选择 :
- 二分类 → Sigmoid;
- 多分类 → Softmax;
- 回归 → Linear。
- 避免在深层网络用 Sigmoid/Tanh:梯度消失问题会导致训练停滞。
- 死亡 ReLU 高发场景选 Leaky ReLU/ELU:如学习率较高、数据分布偏置的任务。