この計算ツールでできること
このツールは、双曲線正接関数(ハイパボリックタンジェント)の2次微分 \(\tanh''(x)\) を、任意の実数 \(x\) について計算します。tanh 関数 \(f(x) = \tanh(x)\) は -1 から 1 の間に収まるなめらかなS字型の関数で、ニューラルネットワークの活性化関数として広く使われています。そのため、勾配の伝わり方や曲がり具合(曲率)を理解するうえで、1次微分・2次微分はとても重要です。本ツールでは2次微分の結果に加えて、\(\tanh(x)\) そのものと1次微分 \(\tanh'(x)\) の値も同時に表示します。
使い方
\(x\) に任意の実数(正の値・負の値・ゼロ)を入力すると、\(\tanh(x)\)、その1次微分 \(\tanh'(x)\)、2次微分 \(\tanh''(x)\) の3つの値が返されます。\(x\) も計算結果もすべて無次元量のため、単位の指定は不要です。
計算式の解説
\(f(x) = \tanh(x)\) から出発すると、1次微分は \(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\) が正のため、2次微分は負の値になります。
よくある質問(FAQ)
なぜ \(\tanh''(0)\) はゼロになるのですか? \(x = 0\) のとき \(\tanh(0) = 0\) なので、式に含まれる \(\tanh(x)\) の項が全体をゼロにします。なお \(f''\) は奇関数であり、\(f''(-x) = -f''(x)\) が成り立ちます。
x が非常に大きいときはどうなりますか? \(\tanh(x)\) は +1 または -1 へと飽和していくため、1次微分・2次微分はどちらも0に近づきます。これがディープニューラルネットワークで問題となる「勾配消失(vanishing gradient)」の挙動です。
2次微分が定義されないことはありますか? ありません。tanh はすべての実数上でなめらかな関数なので、その微分はどこでも存在します。