什么是 tanh 函数?
双曲正切函数记作 \(\tanh(x)\),是一条平滑的 S 形(Sigmoid 型)曲线,对每一个实数 \(x\) 都有定义。它由指数 \(e^{x}\) 与 \(e^{-x}\) 的差与和之比给出。其输出值始终严格落在 -1 与 1 之间,并且是一个奇函数,即 \(\tanh(-x) = -\tanh(x)\)。在机器学习中,tanh 是常用的神经元激活函数,因为它以零为中心(zero-centered);相比输出范围为 0 到 1 的 Sigmoid 函数,这一特性往往能让基于梯度的训练收敛得更快。
如何使用本计算器
输入任意实数 \(x\),工具会立即返回 \(\tanh(x)\),并可选地给出两个导数——它们在微积分、物理学以及反向传播(back-propagation)中都很有用。负数、小数以及绝对值很大的数都可以输入。当 \(x\) 取很大的正值时,函数值会趋近 +1;当 \(x\) 取很大的负值时,则趋近 -1。
公式详解
核心定义为 $$\tanh\!\left(x\right) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$$ 分母恒不小于 2,因此永远不会出现除以零的情况。一阶导数遵循一个优雅的恒等式:$$\frac{d}{dx}\tanh\!\left(x\right) = 1 - \tanh^{2}\!\left(x\right)$$ 也可写作 \(\operatorname{sech}^{2}(x)\)。再求一次导得到二阶导数 $$\frac{d^{2}}{dx^{2}}\tanh\!\left(x\right) = -2\,\tanh\!\left(x\right)\left(1 - \tanh^{2}\!\left(x\right)\right)$$ 当 \(|x|\) 非常大时,为保证数值稳定,工具内部会采用基于 \(e^{-2x}\) 的等价改写形式,以避免溢出。
计算示例(x = 0.5)
取 \(e^{0.5} = 1.6487212707\)、\(e^{-0.5} = 0.6065306597\),则 $$\tanh(0.5) = \frac{1.0421906110}{2.2552519304} = 0.4621171573$$ 一阶导数为 $$1 - 0.4621171573^{2} = 0.7864477623$$ 二阶导数为 $$-2 \times 0.4621171573 \times 0.7864477623 = -0.7269989018$$
常见问题
tanh 的取值范围是多少?开区间 (-1, 1);它会无限逼近但永远达不到这两个端点。
tanh(0) 等于多少?恰好为 0,此时 \(f'(0) = 1\),\(f''(0) = 0\)。
为什么用 tanh 而不用 Sigmoid?tanh 以零为中心(输出关于 0 对称),这有助于加快神经网络的学习速度;而 Logistic Sigmoid 只能输出 0 到 1 之间的正值。