Tanh激活函数详解 | AI生成和翻译
问题
解释 tanh(双曲正切)作为激活函数——它在神经网络中的作用、为何对 RNN/LSTM 重要,以及它与 ReLU 等现代替代方案的比较。
答案
Tanh 是一种零中心的 sigmoid 变体,在 ReLU 取代它之前曾是默认的隐藏层激活函数。 以下是真正重要的内容:
核心洞察:为何零中心重要
Sigmoid 输出 $(0, 1)$,因此反向传播期间所有梯度都是正数。如果输入神经元大多在 0.5 以上激活,权重更新总是朝一个方向移动——收敛过程呈现锯齿状。
Tanh 输出 $(-1, 1)$,均值为 0。这意味着权重可以朝任意方向更新,因此收敛更平滑、更快速。这就是它的优势。
关键的数学公式
\[\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}\]导数: \(\frac{d}{dx}\tanh(x) = 1 - \tanh^2(x)\)
这很优雅——你只需利用前向传播的值就能计算导数(一次减法)。相比之下,sigmoid 的 $\sigma(x)(1-\sigma(x))$ 需要两次乘法运算。
在 $x=0$ 处:tanh 梯度为 1,sigmoid 梯度为 0.25。在训练初期,tanh 的信号传播效果是 sigmoid 的 4 倍。
为何在 LSTM/GRU 中仍然必不可少
现代架构不在隐藏层中使用 tanh(ReLU 在速度和稀疏性上胜出)。但 LSTM 在细胞状态更新中仍使用 tanh:
# LSTM cell update
C_t = f_t * C_{t-1} + i_t * tanh(W_c * [h_{t-1}, x_t] + b_c)
原因如下:
- 输出范围 $(-1, 1)$ 限制了细胞状态——防止长序列中发生爆炸性增长
- 奇对称性($\tanh(-x) = -\tanh(x)$)使门控逻辑对称——遗忘门和输入门可以自然协同
- 无死神经元——与 ReLU 不同,每个值都能获得非零梯度
ReLU 无法做到这点。如果在细胞状态更新中使用 ReLU,没有精细的层归一化/缩放,值会爆炸。Tanh 提供了自然的饱和。
真正的权衡
前馈/CNN 中的 ReLU:
✅ 快速(单次比较)
✅ 稀疏激活(50% 的神经元关闭)
✅ 正值区域无梯度消失
❌ 死神经元(负输入永远为 0)
RNN 门控中的 Tanh:
✅ 有界输出 (-1, 1) —— 自然饱和
✅ 无死神经元
✅ 零中心
❌ 较慢(需计算指数)
❌ 在极端值 (|x| > 3) 处梯度消失
极端值处的梯度消失对 LSTM 来说不是问题,因为门控控制着你是否会进入那些区域。细胞状态不会饱和——它会流动。
现代背景
在基于 Transformer 的模型(GPT、Claude、DeepSeek)中,tanh 基本已被淘汰。我们使用:
- ReLU/GELU 用于前馈层(快速、稀疏)
- Softmax 用于注意力机制(门控通过查询-键交互学习,而非像 LSTM 门控那样固定)
但如果你在 CPU 上训练一个小型 Transformer 并需要理解其工作原理:注意力机制本身就在学习自己的门控逻辑(通过点积),因此对 bounded 激活的需求消失了。
总结: Tanh = 零中心的 sigmoid,用于更快的收敛。在 RNN 中不可替代,因为其有界输出对门控机制至关重要。在现代 Transformer 中则是冗余,因为注意力机制更好地处理了门控。