LSTM 两个激励函数区别sigmoid 和tanh

本文深入探讨了三种常用的激活函数:sigmoid、tanh和ReLU的特点及应用。sigmoid常用于产生0~1之间的值,适合用于各种gate;tanh则常用于状态和输出处理,范围在-1到1之间;ReLU因其梯度不饱和和计算速度快的优势,在神经网络中得到广泛应用,能显著提高收敛速度。

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

1),sigmoid 用在了各种gate上,产生0~1之间的值,这个一般只有sigmoid最直接了。
2),tanh 用在了状态和输出上,是对数据的处理,这个用其他激活函数或许也可以。
1. sigmoid激活函数
sigmoid将一个实数输入映射到[0,1]范围内,如下图(左)所示。使用sigmoid作为激活函数存在以下几个问题:

梯度饱和。当函数激活值接近于0或者1时,函数的梯度接近于0。在反向传播计算梯度过程中:,每层残差接近于0,计算出的梯度也不可避免地接近于0。这样在参数微调过程中,会引起参数弥散问题,传到前几层的梯度已经非常靠近0了,参数几乎不会再更新。
函数输出不是以0为中心的。我们更偏向于当激活函数的输入是0时,输出也是0的函数。
因为上面两个问题的存在,导致参数收敛速度很慢,严重影响了训练的效率。因此在设计神经网络时,很少采用sigmoid激活函数。


è¿éåå¾çæè¿°

2. tanh激活函数
tanh函数将一个实数输入映射到[-1,1]范围内,如上图(右)所示。当输入为0时,tanh函数输出为0,符合我们对激活函数的要求。然而,tanh函数也存在梯度饱和问题,导致训练效率低下。

3.Relu激活函数
Relu激活函数(The Rectified Linear Unit)表达式为:。如下图(左)所示:

这里写图片描述

相比sigmoid和tanh函数,Relu激活函数的优点在于:

梯度不饱和。梯度计算公式为:。因此在反向传播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。
计算速度快。正向传播过程中,sigmoid和tanh函数计算激活值时需要计算指数,而Relu函数仅需要设置阈值。如果,如果。加快了正向传播的计算速度。
因此,Relu激活函数可以极大地加快收敛速度,相比tanh函数,收敛速度可以加快6倍(如上图(右)所示)。
 

<think>嗯,用户问的是sigmoid激活函数tanh区别以及它们的应用场景。首先我得回忆一下这两种激活函数的基本形式。sigmoid函数的数学表达式是$\sigma(x) = \frac{1}{1 + e^{-x}}$,输出范围在0到1之间。而tanh函数是双曲正切函数,表达式是$\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$,输出范围在-1到1之间。这两个都是S型曲线,饱激活函数,但输出范围不同,这点可能是主要区别之一。 接下来要比较它们的梯度情况。sigmoid的导数最大是0.25,而tanh的导数最大是1。所以在反向传播时,tanh可能梯度消失的问题比sigmoid轻一些,但两者都存在饱区梯度接近于零的问题。这可能影响训练深度网络时的收敛速度,用户提供的引用里提到ReLU这类非饱激活函数能解决梯度消失,但用户现在关注的是sigmoidtanh之间的对比。 然后应用场景,根据引用中的信息,sigmoid通常用于二分类的输出层,因为输出在0-1之间,可以表示概率。而tanh在隐藏层更好,因为输出以0为中心,有助于数据居中,可能加速收敛。比如在RNN中,tanh可能更常见。不过两者都可能因为梯度饱导致训练变慢,所以深层网络常用ReLU代替。 用户之前的问题是关于逻辑回归处理多分类,其中提到了softmax作为多分类的激活函数,而这里的问题是关于sigmoidtanh区别,可能需要联系之前的回答,说明逻辑回归中sigmoid的作用,而多分类用softmax,但这里的问题更集中在两种激活函数本身的比较。 需要检查引用中的内容,引用23提到sigmoid用于输出层,tanh在隐藏层优于sigmoid,但两者都有饱问题。引用5提到ReLU更快,但用户现在的问题不涉及ReLU,所以重点还是放在sigmoidtanh。 可能的遗漏点包括梯度计算的具体差异,比如tanh的梯度更大,是否更有利于训练;还有输出范围对后续层的影响,比如tanh的对称性是否有助于减少输入数据的偏移,加快收敛。 另外,用户可能想知道为什么tanh在某些情况下更好,比如数据居中,这样下一层的输入会以0为中心,可能让权重更新更有效。而sigmoid的输出全为正,可能导致后续层权重更新出现zig-zag现象,影响效率。 还需要考虑实际应用中的例子,比如在自然语言处理中,LSTM常用tanh作为激活函数,而sigmoid用于门控机制,这可能是一个应用场景的区别。 总结回答结构应该是:先数学表达式输出范围,梯度对比,应用场景,优缺点,最后给出选择建议。需要引用提供的资料中的观点,如引用23提到的使用场景,以及梯度消失的问题。</think>### SigmoidTanh激活函数的对比分析 --- #### 一、数学特性与输出范围 1. **Sigmoid函数** - **公式**: $$ \sigma(x) = \frac{1}{1 + e^{-x}} \quad \text{(输出范围:0 ~ 1)} $$ - **导数**: $$ \sigma'(x) = \sigma(x)(1 - \sigma(x)) \quad \text{(最大值为0.25)} $$ 2. **Tanh函数** - **公式**: $$ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \quad \text{(输出范围:-1 ~ 1)} $$ - **导数**: $$ \tanh'(x) = 1 - \tanh^2(x) \quad \text{(最大值为1)} $$ --- #### 二、核心差异对比 | **特性** | **Sigmoid** | **Tanh** | |-----------------|---------------------------|---------------------------| | **输出范围** | 0 ~ 1 | -1 ~ 1 | | **梯度特性** | 最大梯度0.25,易梯度消失 | 最大梯度1,梯度消失较慢 | | **数据分布** | 非零中心化(全正输出) | 零中心化(对称输出) | | **收敛速度** | 较慢 | 较快 | | **饱问题** | 端值梯度趋于0 | 端值梯度同样趋于0 | --- #### 三、应用场景与选择建议 1. **Sigmoid的典型场景** - **二分类输出层**:将输出映射为概率值(如逻辑回归的预测概率)[^2][^3] - **门控机制**:如LSTM中的遗忘门、输入门,控制信息保留比例[^4] - *示例*: ```python # 二分类输出层 model.add(Dense(1, activation='sigmoid')) ``` 2. **Tanh的典型场景** - **隐藏层激活**:零中心化输出加速收敛(如RNN、传统神经网络)[^2] - **特征归一化**:将输入数据压缩到对称范围,缓解梯度偏移问题 - *示例*: ```python # RNN隐藏层 model.add(SimpleRNN(64, activation='tanh')) ``` 3. **选择策略** - **优先使用Tanh**:隐藏层需要非线性且期望加速收敛时 - **必须使用Sigmoid**:输出层需要概率解释或门控机制时 - **避免两者**:深层网络优先选择ReLU(避免梯度消失问题)[^1][^5] --- #### 四、梯度消失问题的本质差异 - **Sigmoid**:由于导数最大值为0.25,反向传播时梯度逐层衰减更显著 例如:若网络有4层,梯度衰减为$(0.25)^4 = 0.0039$,几乎无法更新浅层参数[^1] - **Tanh**:导数最大值为1,梯度衰减更缓慢 例如:4层网络梯度衰减为$(1)^4 = 1$(理论值,实际端值仍存在饱问题)[^5] --- #### 五、实际案例与性能影响 1. **MNIST手写数字分类实验** - 使用Tanh的隐藏层比Sigmoid收敛快约30% - *原因*:零中心化输出减少参数更新的“锯齿效应” 2. **LSTM语言模型** - Sigmoid用于门控(输出0~1的开关比例) - Tanh用于候选记忆单元(生成-1~1的中间状态)[^4] - *代码片段*: ```python # LSTM单元内部 input_gate = sigmoid(W_i * x + U_i * h_prev) candidate_state = tanh(W_c * x + U_c * h_prev) ``` --- ### 相关问题 1. 为什么ReLU在深层网络中比Sigmoid/Tanh更受欢迎? 2. 如何通过改进Sigmoid函数缓解梯度消失问题? 3. 在Transformer模型中是否使用TanhSigmoid?为什么? 4. 梯度消失问题对RNNCNN的影响有何不同? --- [^1]: 非饱激活函数(如ReLU)的梯度优势 : SigmoidTanh在隐藏层输出层的应用差异 [^3]: 二分类与多分类任务中的激活函数选择 [^4]: LSTM等门控机制中的激活函数设计 [^5]: 激活函数收敛速度与梯度特性的实验验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值