這個計算機的功能
本工具可計算雙曲正切函數的二階導數 tanh''(x),適用於任意實數 \(x\)。雙曲正切 \(f(x) = \tanh(x)\) 是一條平滑的 S 形曲線,數值恆介於 -1 與 1 之間。它在神經網路中常被當作激活函數(activation function),因此其一階與二階導數對於理解梯度流動與曲率變化相當重要。除了主要結果之外,計算機也會一併列出 \(\tanh(x)\) 本身以及一階導數 \(\tanh'(x)\)。
使用方法
輸入任意實數 \(x\)——正數、負數或零皆可——計算機會回傳三個數值:\(\tanh(x)\)、其一階導數 \(\tanh'(x)\),以及二階導數 \(\tanh''(x)\)。由於 \(x\) 與所有輸出皆為無因次(dimensionless),因此不需要任何單位。
公式說明
從 \(f(x) = \tanh(x)\) 出發,一階導數為 \(f'(x) = 1 - \tanh^{2}(x)\),這也等於 \(\operatorname{sech}^{2}(x)\)。再運用連鎖律微分一次,可得 $$f''(x) = -2\tanh(x)\left(1 - \tanh^{2}(x)\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。這正是深度神經網路中所謂的「梯度消失」(vanishing gradient)現象。
二階導數有沒有可能未定義?沒有。tanh 在所有實數上都是平滑的,因此其導數在任何地方都存在。