P5-3.3 tanh¶
Section ID:
P5-3.3Version:v2026.07.20
在 P5-3.2 里,我们已经看到 sigmoid 会把分数压到 0 与 1 之间。tanh 也会做类似的 S 形压缩,但它和 sigmoid 的关键差别在于:输出范围是 \(-1\) 到 \(1\)。
当你希望在内部表征里同时保留负值与正值,并且让表征围绕 0 展开时,tanh 就会成为一个很重要的比较基准。
tanh 的 0 中心变换问题¶
- tanh 的公式与输出范围是什么?
- 为什么它与 sigmoid 不同,会被叫作 0 中心(zero-centered)?
- 为什么保留负号与正号会这么重要?
- tanh 的饱和区会带来什么限制?
同时包含 sigmoid 与 ReLU 的公式比较会在 P5-3.5 一起整理。输出层选择的问题则会在 P5-3.6 单独处理。
同时保留负信号与正信号的判断标准¶
- 能把 tanh 解释成
一个会把值压缩到 -1 与 1 之间、并且以 0 为中心的函数。 - 能理解 tanh 比 sigmoid 更直接地保留负号与正号。
- 能说明:在很大的正数与很大的负数区间,tanh 同样会出现饱和。
- 能解释 tanh 会给隐藏层表征带来怎样的感觉。
tanh 的公式¶
tanh 的公式写成下面这样。
这个公式的结果永远落在 \(-1\) 与 \(1\) 之间。
- 如果 \(z\) 是很大的正数,输出就会接近 1。
- 如果 \(z=0\),输出就是 0。
- 如果 \(z\) 是很大的负数,输出就会接近 -1。
与只把值保留在 0 到 1 之间的 sigmoid 不同,tanh 会同时表达负方向与正方向。
为什么说它是 0 中心¶
tanh 之所以被叫作 0 中心,是因为当 \(z=0\) 时输出也是 0,负输入会保留成负输出,正输入会保留成正输出。
| 输入区间 | 输出直觉 | 读者首先该看的点 |
|---|---|---|
| 很大的负数 | 接近 -1 | 稳定一侧或相反方向的信号,会以负值形式保留下来。 |
| 0 附近 | 接近 0 | 较弱的变化会连同正负方向一起显现。 |
| 很大的正数 | 接近 1 | 它是很强的正向信号,但即使再变大,变化也会变迟钝。 |
当你想在隐藏层(hidden layer)里保留信号到底朝哪个方向偏时,这个性质会非常直观。值不会像 sigmoid 那样都被挤到正侧,而是能围绕 0 向左右两边展开。
案例与例子¶
假设我们在观察设备状态时,某个隐藏节点会同时表达偏向稳定的信号与偏向警告的信号。可以约定:负值表示更偏向稳定侧,正值表示更偏向警告侧,而且绝对值越大,说明这种方向越强。如果输出只能停留在 0 以上,那么稳定与警告两边都容易只剩下“弱/强”的感觉,很难一眼抓住它们的方向差异。
用 tanh 时,负值就可以被读作稳定侧信号,正值则可以被读作警告侧信号。
| 场景 | \(z\) | tanh 输出的直觉 | 首先留下来的判断 |
|---|---|---|---|
| 稳定信号很强 | \(-2\) | 它会停在接近 -1 的位置,因此稳定侧方向会强烈留下。 | 它明显偏向稳定侧这个方向会立刻看见。 |
| 较弱的稳定信号 | \(-0.3\) | 它会略低于 0,因此仍偏向稳定侧,但不算很强。 | 可以读成偏向稳定,但仍接近中性。 |
| 几乎中立 | \(0\) | 它会停在 0,因此不会明显偏向任何一侧。 | 暂时不强行判定方向。 |
| 较弱的警告信号 | \(0.3\) | 它会略高于 0,因此偏向警告侧,但并不强。 | 可以读成偏向警告,但仍然较弱。 |
| 警告信号很强 | \(2\) | 它会接近 1,因此警告侧方向会强烈留下。 | 它明显偏向警告侧这个方向会立刻看见。 |
在这个案例里首先要看的,是以 0 为中心向左与向右分开。 \(-0.3\) 与 \(0.3\) 都只是小值,但一个偏向稳定侧,一个偏向警告侧。tanh 会把这种很弱的方向差异也通过正负号保留下来。
另一个要点是饱和(saturation)。如果 \(z=2\) 已经很接近 1,那么再往更大的正数走,输出差异就会逐渐更难保留下来。负侧也一样:很大的负数会被压到 -1 附近。
所以这个案例真正要确认的结果是:tanh 并不只是一个把值缩小的函数,而是一个会形成围绕 0 具有方向感的内部表征的函数;同时,在较大的正数与较大的负数区间,它又会分别向两端饱和。
练习与例题¶
现在假设把下面这些值送进 tanh。
| \(z\) | 先猜会得到什么输出 | 首先要确认的问题 |
|---|---|---|
| \(-4\) | 非常接近 -1 | 很大的负数到底会往下压到什么位置? |
| \(-0.2\) | 略低于 0 | 较弱的稳定侧信号会不会保留下来? |
| \(0\) | 0 | 为什么它会被叫作 0 中心? |
| \(0.2\) | 略高于 0 | 较弱的警告侧信号会不会保留下来? |
| \(4\) | 非常接近 1 | 很大的正数到底会往上抬到什么位置? |
| \(8\) | 更接近 1 | 与 \(4\) 相比,还剩下多少差异? |
阅读这张表时,必须自己把下面两个问题真正闭合。
- \(-0.2\) 与 \(0.2\) 都只是很小的值,为什么在 tanh 里却还能被分别读成
较弱的稳定与较弱的警告,也就是互相相反的方向? - 即使把 \(z=4\) 提高到 \(z=8\),为什么输出差异还是不会像 \(z=0\) 到 \(z=0.2\) 那样明显地保留下来?
答案方向是明确的。tanh 在 0 附近仍然会比较直接地保留小变化与它们的正负号;但到了较大的正数与较大的负数区间,它会分别逼近 1 与 -1,从而压缩差异。因此,在阅读 tanh 时,必须同时看清:它偏向哪个方向、它距离 0 有多远、它是不是已经进入了饱和区间。
检查清单¶
- 能否说出 tanh 的公式,以及它的输出范围是 \(-1\) 到 \(1\)?
- 能否解释为什么当 \(z=0\) 时输出会变成 0?
- 是否理解 tanh 比 sigmoid 更接近一种 0 中心表征?
- 能否说明大正数与大负数区间都会出现饱和?
- 能否预先判断:在 P5-3.5 的公式比较里,tanh 会按什么标准与其他函数比较?
出处与参考资料¶
- Ian Goodfellow, Yoshua Bengio, Aaron Courville,
Deep Learning, MIT Press, 2016, 确认日期:2026-06-29. https://www.deeplearningbook.org/ - Christopher M. Bishop,
Pattern Recognition and Machine Learning, Springer, 2006, 确认日期: 2026-07-19. https://link.springer.com/book/9780387310732