zjx
zjx
发布于 2025-10-23 / 7 阅读
0
0

引入激活层的原因

在深度学习中,激活函数是网络层的核心组成部分之一,添加激活层的主要原因并不是为了“好求偏导数”,而是为了引入非线性、增加网络的表达能力等。下面详细解释为什么需要激活层,以及它与偏导数的关系。


1.网络层为什么需要激活函数

1.1引入非线性

如果没有激活函数,网络层的输出只是输入和权重的线性组合,例如:

z=w\cdot x+b

这种线性运算即使通过多层堆叠,也仍然是线性变换。无论堆叠多少层,这种网络的表示能力都相当有限,无法解决非线性问题。

激活函数能够引入非线性,将线性变换变为非线性映射,例如:

a=f(z)

通过激活函数 f(z),网络可以学习复杂的非线性关系,从而具有更强的表达能力。这是解决分类问题、回归问题等复杂任务的关键。

举例:

如果没有激活函数,整个神经网络等价于一个单一的线性函数:

y=Wk⋅(Wk−1⋅(…W1⋅x))
y = W_k \cdot (W_{k-1} \cdot (\dots W_1 \cdot x))

这本质上还是一个线性映射。

  • 有了激活函数后,非线性层的叠加使网络能够逼近任意复杂的函数(这是“万能近似定理”的核心思想)。


1.2 增加网络表达能力

激活函数的非线性特性使得神经网络能够学习:

  • 高维数据的复杂模式。

  • 非线性决策边界,例如在分类任务中区分不同类别的数据分布。

没有激活函数,网络只能解决简单的线性问题;有了激活函数,网络可以建模复杂的非线性现象。


1.3 激活函数与层之间的作用分工

  • 线性层(全连接层、卷积层等):负责线性变换,提取特定方向的特征。

  • 激活函数:引入非线性,增强网络的表达能力。

这种分工让网络可以通过叠加线性层和激活层,逐步从输入特征中提取更高级的特征。


2. 激活层与偏导数的关系

虽然激活函数的主要目的是引入非线性,但在设计激活函数时,可微性(易求偏导数)是一个重要的考虑因素。激活函数是否容易求导,直接影响反向传播的计算效率和稳定性。

2.1 激活函数的可导性

在反向传播中,需要计算损失函数 L对权重 w 的梯度:

\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w}

其中,激活函数的导数\frac{\partial a}{\partial z} 是关键部分。

  • 若激活函数不可导(或导数很复杂),反向传播的梯度计算将变得困难甚至不可行。

  • 常用激活函数(如 Sigmoid、ReLU、Tanh 等)都设计为连续可导,以便梯度能够通过链式法则顺利传播。

2.2 激活函数的导数性质

不同激活函数的导数性质影响反向传播的效率和效果:

  • Sigmoid 函数

    f(z) = \frac{1}{1 + e^{-z}}
f’(z) = f(z)(1 - f(z))

其导数与输出值 $f(z)$ 有简单关系,因此易于计算。

  • 问题:当 z 非常大或非常小时,导数接近 0,容易导致梯度消失。

  • ReLU 函数

    f(z) = \max(0, z)

计算简单,但当 z≤0 时,导数为 0,可能导致“死亡 ReLU”问题。

Tanh 函数

f(z) = \tanh(z), \quad f’(z) = 1 - f(z)^2

导数公式简单,但可能也会出现梯度消失问题。

这些激活函数的设计兼顾了引入非线性和便于求导的需求。


3. 激活层的其他功能

除了引入非线性和便于计算梯度,激活层还有以下作用:

3.1 压缩输出范围

激活函数常将输入压缩到特定范围内,例如:

  • Sigmoid:将输出压缩到 (0,1),适合概率表示。

  • Tanh:将输出压缩到 (−1,1),对对称性要求较高的任务有优势。

这种压缩特性有助于稳定训练,避免数值溢出。


3.2 稀疏化输出

某些激活函数(如ReLU)具有稀疏化效果,即使得一部分神经元的输出为 0。这种稀疏性能够提高模型的计算效率,并增强模型的泛化能力。


3.3 梯度流动

不同激活函数对梯度流动的影响不同:

  • 激活函数的导数大小会影响梯度更新的速度。

  • 如果激活函数的导数接近 0(如 Sigmoid 在饱和区间),会导致梯度消失。

  • 如果激活函数的导数非常大,可能导致梯度爆炸。

激活函数需要在表达能力和梯度稳定性之间取得平衡。


4. 总结

激活层在网络中的作用不仅仅是为了“好求偏导数”,而是为了:

  1. 引入非线性,提高网络的表达能力,使其能够建模复杂的非线性关系。

  2. 分工明确,结合线性层的特性,逐步提取特征。

  3. 支持反向传播,在设计时考虑到导数的可计算性和效率。

  4. 其他功能,如输出范围压缩、稀疏化等。

因此,激活层的存在是深度学习网络中不可或缺的一部分。它不仅实现了非线性变换,还确保网络能够通过梯度下降优化参数,逐步减小误差。


评论