这个计算器能做什么
本工具用于求双曲正切函数的二阶导数 \(\tanh''(x)\) 在任意实数 \(x\) 处的值。双曲正切 \(f(x) = \tanh(x)\) 是一条平滑的 S 形曲线,取值始终介于 -1 与 1 之间。它在神经网络中常被用作激活函数,因此其一阶导数和二阶导数对于理解梯度的传播与曲线的弯曲程度都十分关键。除主结果外,计算器还会同时给出 \(\tanh(x)\) 本身以及一阶导数 \(\tanh'(x)\)。
使用方法
输入任意实数 \(x\) —— 正数、负数或零均可 —— 计算器会返回三个数值:\(\tanh(x)\)、它的一阶导数 \(\tanh'(x)\),以及二阶导数 \(\tanh''(x)\)。由于 \(x\) 和所有输出都是无量纲的,因此无需填写任何单位。
公式详解
从 \(f(x) = \tanh(x)\) 出发,一阶导数为 \(f'(x) = 1 - \tanh^2(x)\),它也等于 \(\operatorname{sech}^2(x)\)。再次运用链式法则求导,可得
$$\frac{d^2}{dx^2}\tanh(x) = -2\tanh\!\left(x\right)\left(1 - \tanh^{2}\!\left(x\right)\right)$$等价于 \(f''(x) = -2\tanh(x)\operatorname{sech}^2(x)\)。计算时直接使用 \(t = \tanh(x)\),即使在 \(|x|\) 很大时也能保持数值稳定,并且不会出现除以零的情况,因为 \(e^x + e^{-x}\) 始终不小于 2。
实例演算(x = 0.5)
\(\tanh(0.5) = 0.4621172\)。于是 \(f'(0.5) = 1 - 0.4621172^2 = 0.7864477\),而
$$f''(0.5) = -2 \times 0.4621172 \times 0.7864477 = -0.7270051$$这里 \(x\) 为正数,所以二阶导数为负。
常见问题
为什么 \(\tanh''(0)\) 等于零? 当 \(x = 0\) 时,\(\tanh(0) = 0\),公式中含有 \(\tanh(x)\) 这一因子,因此整个表达式为零。函数 \(f''\) 是奇函数,即 \(f''(-x) = -f''(x)\)。
当 \(x\) 非常大时会怎样? \(\tanh(x)\) 会逐渐饱和趋向 \(+1\) 或 \(-1\),因此一阶导数和二阶导数都会趋近于 0。这正是深度神经网络中所谓的"梯度消失"现象。
二阶导数会有无定义的情况吗? 不会。\(\tanh\) 在全体实数上都是平滑的,因此它的各阶导数处处存在。