深度学习中的激活函数详细介绍以及优缺点分析

本文详细介绍了深度学习中常用的非线性激活函数,如Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish和SoftMax,分析了它们的优缺点。激活函数在神经网络中起到决定信号是否传递的关键作用,非线性激活函数能处理非线性可分数据,使得神经网络能逼近复杂函数。ReLU因其计算效率高和防止梯度消失而广泛使用,但存在死ReLU问题,Leaky ReLU和PReLU尝试解决此问题。Swish作为新提出的激活函数,表现优于ReLU。SoftMax则常用于多分类任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文首先介绍了什么是激活函数,然后重点讲解了在深度学习中所使用的几类非线性激活函数:Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish、SoftMax,并详细介绍了这些函数的优缺点。

1. 激活函数

我们知道生物神经网络启发了人工神经网络的发展。但是,ANN 并非大脑运作的近似表示。所以在我们了解为什么在人工神经网络中使用激活函数之前,我们需要先了解一下生物神经网络与激活函数的相关性。

典型神经元的物理结构包括细胞体(cell body)、向其他神经元发送信号的轴突(axon)和接收其他神经元发送的信号或信息的树突(dendrites)。如下图所示:
在这里插入图片描述
上图中,红色圆圈代表两个神经元交流的区域。神经元通过树突接收来自其他神经元的信号。树突的权重叫作突触权值(synaptic weight),将和接收的信号相乘。来自树突的信号在细胞体内不断累积,如果信号强度超过特定阈值,则神经元向轴突传递信息。如未超过,则信号被该神经元「杀死」,无法进一步传播。

激活函数决定是否传递信号。在这种情况下,只需要带有一个参数(阈值)的简单阶梯函数。现在,当我们学习了一些新的东西(或未学习到什么)时,一些神经元的阈值和突触权值会发生改变。这使得神经元之间产生新的连接,大脑学会新的东西。

让我们再次理解这一概念,不过这次要使用人工神经元。
在这里插入图片描述

上图中(x_1, …, x_n)是信号向量,它和权重(w_1, …, w_n)相乘。然后再累加(即求和 + 偏置项 b)。最后,激活函数 f 应用于累加的总和。

注意: 权重(w_1, …, w_n)和偏置项 b 对输入信号进行线性变换。而激活函数对该信号进行非线性变换,这使得我们可以任意学习输入和输出之间的复杂变换。

过去已经出现了很多种函数,但是寻找使神经网络更好更快学习的激活函数仍然是活跃的研究方向。

2. 神经网络

我们有必要对神经网络如何学习有一个基本了解。假设网络的期望输出是 y(标注值),但网络实际输出的是 y’(预测值)。预测输出和期望输出之间的差距(y - y’)可以转化成一种度量,即损失函数(J)。神经网络犯大量错误时,损失很高;神经网络犯错较少时,损失较低。训练目标就是找到使训练集上的损失函数最小化的权重矩阵和偏置向量。

在下图中,损失函数的形状像一个碗。在训练过程的任一点上,损失函数关于梯度的偏导数是那个位置的梯度。沿偏导数预测的方向移动,就可以到达谷底,使损失函数最小化。使用函数的偏导数迭代地寻找局部极小值的方法叫作梯度下降。
在这里插入图片描述

人工神经网络中的权重使用反向传播的方法进行更新。损失函数关于梯度的偏导数也用于更新权重。从某种意义上来说,神经网络中的误差根据求导的链式法则执行反向传播。这通过迭代的方式来实施,经过多次迭代后,损失函数达到极小值,其导数变为 0。

### 不同激活函数深度学习中的优缺点 #### Sigmoid 激活函数 Sigmoid 函数是一个经典的激活函数,其输出范围为 (0, 1),能够将任意实数值映射到这个区间内。然而,它存在梯度消失的问题,在反向传播过程中可能导致训练困难。 - **优点**: 输出值被压缩至固定范围内,适合用于概率预测场景下的二分类问题[^1]。 - **缺点**: 当输入较大或较小时,导数接近于零,容易引发梯度消失现象;计算指数运算较为耗时[^2]。 #### Tanh 激活函数 Tanh 是另一个常用的激活函数,可以看作是 Sigmoid 的变体,输出范围为 (-1, 1)。相比 Sigmoid,它的均值更接近于零,有助于中心化数据分布。 - **优点**: 能够更好地处理负值输入,并且通常收敛速度比 Sigmoid 更快[^3]。 - **缺点**: 同样面临梯度消失问题,尤其是在极端输入条件下表现不佳。 #### ReLU (Rectified Linear Unit) 激活函数 ReLU 定义简单直观:f(x) = max(0, x)。它是目前许多神经网络架构中最受欢迎的选择之一。 - **优点**: 计算效率高,因为只需判断输入是否大于零即可完成前向传播;有效缓解了梯度消失问题,促进了深层网络的学习能力。 - **缺点**: 对于小于零的部分会完全抑制信号传递,可能造成部分神经元“死亡”,即永远不再响应任何输入。 #### Leaky ReLU 激活函数 为了克服标准 ReLU 存在的死区问题,提出了改进版本——Leaky ReLU。该方法允许少量负斜率通过,即使当输入为负时也有微弱反应。 - **优点**: 避免了传统 ReLU 中可能出现的大规模神经元失活情况,保留了一定程度上的非线性特性。 - **缺点**: 参数调整敏感性强,如果设置不当可能会引入额外噪声或者影响最终性能。 #### ReLU6 激活函数 这是专门为移动设备优化设计的一种特殊形式的ReLU ,主要用于轻量级模型如MobileNet系列中 。ReLU6 将最大输出限定为6而不是无限大。 - **优点**: 特别适用于资源受限环境下的高效实现,同时保持良好的表达力。 - **缺点**: 可能限制某些特定应用场景下潜在的表现上限,特别是在需要非常宽泛动态范围表示的任务里。 ```python import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def tanh(x): return np.tanh(x) def relu(x): return np.maximum(0, x) def leaky_relu(x, alpha=0.01): return np.where(x >= 0, x, alpha * x) def relu6(x): return np.minimum(np.maximum(0, x), 6) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值