ソフトサイン関数とは
ソフトサイン関数(Softsign Function)は、ニューラルネットワークで用いられる滑らかな活性化関数で、\(\varphi(x) = \frac{x}{1 + |x|}\) で定義されます。任意の実数の入力を開区間 \((-1, 1)\) に写像する点は双曲線正接(tanh)とよく似ていますが、飽和域へ近づく速度がより緩やかなのが特徴です。この穏やかな飽和特性により、学習時の勾配消失問題を軽減できる場合があります。本計算ツールでは、関数値 \(\varphi(x)\) に加えて、主な出力として1次微分 \(\varphi'(x)\) を求めます。
使い方
x に任意の実数(正・負・ゼロのいずれでも可)を入力すると、\(\varphi'(x)\)(ソフトサイン曲線の傾き)と \(\varphi(x)\)(活性化の出力値)が表示されます。単位はなく、\(x\) は無次元の純粋な実数です。初期値は \(x = 0.5\) に設定されています。
計算式の解説
\(\varphi(x) = \frac{x}{1 + |x|}\) の微分は次のようになります。
$$\varphi'(x) = \frac{1}{\left(1 + \left|x\right|\right)^{2}}$$分母 \((1 + |x|)\) は常に 1 以上であるため、微分は常に正の値をとり、その範囲は \((0, 1]\) に収まります。最大値 1 をとるのは \(x = 0\) のときで、ここで関数の傾きが最も急になります。\(|x|\) が大きくなるにつれて \(\varphi'(x)\) は 0 に近づき、関数が飽和していく様子を表しています。
計算例
\(x = 0.5\) の場合:\(|x| = 0.5\) なので \(1 + |x| = 1.5\) となります。関数値は次のようになります。
$$\varphi(0.5) = \frac{0.5}{1.5} = 0.333333\ldots$$微分は次のようになります。
$$\varphi'(0.5) = \frac{1}{1.5^{2}} = \frac{1}{2.25} = 0.444444\ldots$$つまり \(x = 0.5\) におけるソフトサイン曲線は、出力が約 0.3333、傾きが約 0.4444 となります。
よくある質問
ソフトサイン関数はすべての点で微分可能ですか? はい、可能です。\(|x|\) は \(x = 0\) で折れ点を持ちますが、その点での \(\varphi\) の左微分と右微分はともに 1 で一致するため、\(\varphi\) は \(x = 0\) を含むすべての点で微分可能です。
微分が負になることはありますか? ありません。\(\varphi'(x) = \frac{1}{(1 + |x|)^{2}}\) は、正の数の2乗で 1 を割った形なので、常に正の値になります。
tanh との違いは何ですか? どちらも \((-1, 1)\) に飽和しますが、ソフトサインは tanh の指数関数的な裾ではなく、多項式(\(1/x^{2}\))的な裾を持ちます。そのため飽和がより緩やかで、ゼロから離れた領域でも比較的大きな勾配を保ちます。