常见激活函数及其求导相关知识

本文详细介绍了Sigmoid、tanh、ReLU和Softmax这四种常见的激活函数,包括它们的函数形式、图像、优缺点以及求导过程。Sigmoid在深层网络中易导致梯度消失,tanh解决了平均值问题但仍有梯度消失,ReLU因其非零梯度在现代神经网络中广泛使用,而Softmax常用于多分类任务的概率输出。同时,文章还讨论了激活函数的作用,指出非线性变换对于提升模型表达能力的重要性,并提出了激活函数选择的建议。

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

Sigmoid函数

Sigmoid函数介绍

Sigmoid 是常用的非线性的激活函数,公式如下:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1
函数图像如下:

在这里插入图片描述

从图像可以看出,它能够把连续实值映射为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。

Sigmoid 函数有很多局限性:

第一点,在数值的绝对值非常大的情况下,对应的函数图像的部分几乎是一条水平线。这意味着梯度几乎为0,不利于深层网络中梯度的反向传播,容易造成梯度消失。

第二点,Sigmoid 的输出不是0均值,导致梯度的更新要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。具体的解释,在文末讨论。

第三点,式子包含幂运算,计算量很大。

Sigmoid函数求导

求导过程及结果如下:
σ ′ ( x ) = ( 1 1 + e − x ) ′ = e − x ( 1 + e − x ) 2 = 1 + e − x − 1 ( 1 + e − x ) 2 = σ ( x ) ( 1 − σ ( x ) ) \begin{aligned} \sigma^{\prime}(x) &=\left(\frac{1}{1+e^{-x}}\right)^{\prime} \\ &=\frac{e^{-x}}{\left(1+e^{-x}\right)^{2}} \\ &=\frac{1+e^{-x}-1}{\left(1+e^{-x}\right)^{2}} \\ &=\sigma(x)(1-\sigma(x)) \end{aligned} σ(x)=(1+ex1)=(1+ex)2ex=(1+ex)21+ex1=σ(x)(1σ(x))
函数图像如下:

在这里插入图片描述

求导的结果可以看出,导数的最大值为0.25,小于1 ,很容易造成梯度消失。

tanh 函数

tanh 函数介绍

tanh 函数公式如下:
tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh (x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanh(x)=ex+exexex
图像如下:

在这里插入图片描述

tanh 函数决了Sigmoid函数的输出不是0均值,然而,梯度消失和幂运算的问题仍然存在。

tanh 函数求导

求导过程如下:
t a n h ( x ) ′ = ( e x + e − x ) 2 − ( e x − e − x ) 2 ( e x + e − x ) 2 = 1 − ( t a n h ( x ) ) 2 tanh(x)^{\prime}=\frac{(e^{x}+e^{-x})^{2}-(e^{x}-e^{-x})^{2}}{(e^{x}+e^{-x})^{2}}=1-(tanh(x))^{2} tanh(x)=(ex+ex)2(ex+ex)2(exex)2=1(tanh(x))2
求导后的图像:

在这里插入图片描述

Relu函数

Relu函数介绍

Relu函数公式如下:
R e L U ( x ) = { 0 , x ⩽ 0 x , x > 0 ReLU(x)=\begin{cases}{0,} & {x \leqslant 0} \\ {x,} & {x>0}\end{cases} ReLU(x)={ 0,x,x0x>0
函数图像如下:

在这里插入图片描述

Relu 函数在输出值大于 0 的部分的导数值都大于0,并且不趋近于0,因而梯度下降速度较快。

Relu 函数在输出值小于 0 的部分的导数值都等于0,此时神经元就不会得到训练,能对网络产生稀疏性,降低过分拟合的概率。

但是也存在以下问题:

  1. 输出不是0均值
  2. Dead ReLU Problem:因梯度等于0导致失效的神经元不会再被激活

注:为了解决第二个问题,有人提出了Leaky ReLU激活函数: L e a k y    R e L U ( x ) = m a x ( 0.01 x , x ) Leaky \; ReLU(x) = max(0.01x, x) LeakyReLU(x)=max(0.01x,x),使得小于0的部分有些许梯度。

尽管ReLU存在这两个问题,ReLU目前仍是最常用的激活函数,在搭建模型的时候推荐优先尝试。

Relu函数求导

求导结果如下:
R e L U ( x ) ′ = { 0 , x ⩽ 0 1 , x > 0 ReLU(x)^{\prime}=\begin{cases}{0,} & {x \leqslant 0} \\ {1,} & {x>0}\end{cases} ReLU(x)={ 0,1,x0x>0
函数图像如下:

在这里插入图片描述

Softmax函数

Softmax函数介绍

对于多分类任务,常用的激活函数是 Softmax 激活函数。使用了Softmax函数的神经网络对应多个输出层神经元 ,如下图所示;

在这里插入图片描述

每个输出单元的数值代表该类别的概率 p i p_i pi,数值越大,说明属于该类别可能性越大。

具体而言,假设倒数第二层的输出值为:
z i = w i x + b i z_i = w_i x + b_i zi=wix+bi
假设有K个类别,Softmax函数定义如下:
S o f t m a x ( z i ) = e z i ∑ i = 1 K e z i ∀ i ∈ 1 … K Softmax(z_i)=\frac{e^{z_i}}{\sum_{i=1}^{K} e^{z_i}} \quad \forall i \in 1 \ldots K Softmax(zi)=i=1Keziezii1K
则在最后一层使用 Softmax 激活函数后的输出值为:
h w ( x ) = [ p 1 p 2 ⋮ p K ] = 1 ∑ i = 1 K e z i [ e z 1 e z 2 ⋮ e z K ] h_w(x) = \begin{bmatrix}p_1\\p_2 \\ \vdots \\p_{K} \end{bmatrix} = \frac{1}{\sum_{i=1}^K e^{z_i}} \begin{bmatrix}e^{z_1}\\e^{z_2 } \\ \vdots \\e^{z_K} \end{bmatrix} hw(x)=p1p2pK=i=1Kezi1

<think>好的,我现在需要回答用户关于BP神经网络中误差函数及其作用的问题。首先,我得先理解用户的需求。用户想了解BP神经网络中常用的误差函数有哪些,以及这些误差函数的具体计算方法和作用。同时,用户还提到了参考的引用内容,我需要结合这些引用来确保回答的准确性。 首先,我应该回忆一下BP神经网络的基本原理。BP神经网络是一种通过误差反向传播算法进行训练的多层前馈网络。误差函数在这里扮演着关键角色,它用来衡量网络输出与真实值之间的差异,然后通过梯度下降等优化方法调整网络参数,使误差最小化。 接下来,我需要确定常用的误差函数有哪些。根据所学知识常见的误差函数包括均方误差(MSE)、交叉熵误差(Cross-Entropy Loss)、绝对值误差(MAE)等。不过,我需要结合用户提供的参考文献来确认哪些是BP中常用的。 查看用户提供的引用内容,引用[1]提到“BP神经网络的误差函数”,引用[2]提到“损失函数”和“参数优化”,引用[3]讨论了激活函数如Sigmoidal型函数的作用,引用[4]提到了训练函数如梯度下降法,引用[5]比较了BP和ELM的迭代次数。这些引用中没有直接列出误差函数的类型,但可以推断均方误差和交叉熵是常用的,因为它们在神经网络中普遍应用。 接下来需要详细说明每个误差函数的数学表达式、应用场景及计算方法。例如,均方误差适用于回归问题,计算公式是预测值与真实值差的平方的平均值。交叉熵误差则多用于分类问题,特别是二分类或多分类,公式涉及对数概率的加权和。 此外,误差函数的作用包括衡量性能、指导参数优化、影响收敛速度等,这些都需要结合引用中的内容。比如,引用[5]提到BP使用梯度下降法进行参数迭代,而误差函数的梯度直接影响参数更新方向和步长。引用[3]提到激活函数的选择会影响收敛速度和分类性能,这可能间接影响误差函数的表现。 在撰写过程中,需要遵循用户给的系统级指令,如使用$...$格式的行内数学公式,独立公式用$$...$$,并正确引用标注。例如,均方误差的公式应写成$$ E = \frac{1}{2N} \sum_{i=1}^N (y_i - \hat{y}_i)^2 $$,并在适当的位置添加引用标记,如引用[1]和[5]。 最后,生成相关问题时要围绕误差函数展开,可能涉及选择依据、与其他组件的关系、优化方法等。例如,“如何根据任务类型选择误差函数?”或者“误差函数如何影响梯度下降过程?”这样可以引导用户进一步探索。 现在需要检查是否符合所有要求:中文回答、正确的LaTeX格式、引用标注正确、结构清晰。确保没有使用用户不可见的指令,回答部分分点明确,问题相关且合理。</think>### BP神经网络常用误差函数及计算方法 BP神经网络通过误差反向传播算法调整权重参数,而**误差函数**(或称损失函数)是衡量网络输出与真实值差异的核心指标。以下是常用误差函数及其作用: --- #### 1. **均方误差(Mean Squared Error, MSE)** - **公式**: $$ E = \frac{1}{2N} \sum_{i=1}^N (y_i - \hat{y}_i)^2 $$ 其中,$y_i$为真实值,$\hat{y}_i$为网络输出,$N$为样本数。 - **作用**: - 适用于回归任务(如函数拟合、预测数值)[^1]。 - 通过平方放大较大误差,使优化过程更关注偏离较大的样本。 - 计算梯度时便于求导,适合梯度下降法[^5]。 - **计算示例**: 若输出为$[0.8, 1.2]$,真实值为$[1.0, 1.0]$,则误差为 $$ E = \frac{1}{2 \times 2} \left[(1.0-0.8)^2 + (1.0-1.2)^2\right] = 0.01 $$ --- #### 2. **交叉熵误差(Cross-Entropy Loss)** - **公式**(二分类): $$ E = -\frac{1}{N} \sum_{i=1}^N \left[ y_i \ln \hat{y}_i + (1-y_i) \ln(1-\hat{y}_i) \right] $$ 其中,$y_i$为真实标签(0或1),$\hat{y}_i$为预测概率。 - **作用**: - 适用于分类任务(如二分类、多分类)[^3]。 - 与Sigmoid/Softmax激活函数配合时,梯度计算更高效,避免均方误差的饱和问题[^3]。 - **计算示例**: 若输出概率为$[0.9, 0.1]$,真实标签为$[1, 0]$,则误差为 $$ E = -\frac{1}{2} \left[1 \times \ln 0.9 + 0 \times \ln 0.1 + 0 \times \ln 0.1 + 1 \times \ln 0.9 \right] \approx 0.105 $$ --- #### 3. **绝对值误差(Mean Absolute Error, MAE)** - **公式**: $$ E = \frac{1}{N} \sum_{i=1}^N |y_i - \hat{y}_i| $$ - **作用**: - 对异常值不敏感,适合存在噪声数据的回归任务。 - 梯度恒定,但收敛速度可能较慢。 --- #### 误差函数的核心作用 1. **性能衡量**:量化模型预测的准确性,如引用[1]中提到的误差函数是训练过程的基础。 2. **指导参数优化**:通过梯度下降法反向传播误差,调整权重(如引用[4]中的`traingd`、`trainlm`等算法)。 3. **影响收敛性**:不同误差函数激活函数(如Sigmoidal函数)的配合影响收敛速度和稳定性[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值