ソフトサイン関数とは
ソフトサイン関数(Softsign Function)は、ニューラルネットワークで用いられる活性化関数の一つで、\(\varphi(x) = \frac{x}{1+|x|}\) と定義されます。双曲線正接関数(tanh)と同じく滑らかなS字曲線を描き、出力は開区間 \((-1, 1)\) に収まります。両者の大きな違いは漸近線への近づき方にあり、ソフトサインは多項式的に(\(\frac{1}{|x|}\) のオーダーで)\(\pm 1\) に近づくのに対し、tanh は指数的に近づきます。この緩やかな飽和の性質によって、一部のネットワーク構造では勾配消失の影響を抑えやすくなります。
この計算ツールの使い方
3つの値を入力します。x の初期値(先頭行の x)、増分値(各行ごとに加える刻み幅)、そして繰り返し回数(生成する行数)です。これらを指定すると、各点について x、ソフトサイン \(\varphi(x)\)、1次導関数 \(\varphi'(x)\) を並べた表が作成され、曲線のグラフ化や特定の値の確認に活用できます。
計算式の解説
各行で \(a = 1 + |x|\) とおくと、$$\varphi(x) = \frac{x}{a}, \qquad \varphi'(x) = \frac{1}{a^{2}}$$ となります。\(|x|\) が負になることはないため分母 \(a\) は常に 1 以上で、ゼロ除算は起こらず、関数はどの点でも滑らかです。ソフトサイン関数は奇関数(\(\varphi(-x) = -\varphi(x)\))であり、その導関数は偶関数(\(\varphi'(-x) = \varphi'(x)\))です。原点では \(\varphi(0) = 0\)、\(\varphi'(0) = 1\) となります。
計算例
\(x = -5\) のとき、\(a = 1 + 5 = 6\) なので \(\varphi(-5) = -\frac{5}{6} = -0.8333333\)、\(\varphi'(-5) = \frac{1}{36} = 0.0277778\) です。\(x = 1\) のとき、\(a = 2\) なので \(\varphi(1) = 0.5\)、\(\varphi'(1) = 0.25\) です。\(x = 0\) のとき、\(a = 1\) なので \(\varphi(0) = 0\)、\(\varphi'(0) = 1\) です。初期設定(初期値 -5、刻み 0.1、101 行)では、x が -5 から +5 まで変化する表が得られます。
よくある質問
なぜ導関数は負にならないのですか? \(\varphi'(x) = \frac{1}{(1+|x|)^{2}}\) は平方の逆数であるため、常に正の値をとります。つまりソフトサインは単調増加関数です。
tanh とはどう違うのですか? どちらも有界な範囲に飽和しますが、ソフトサインは有理関数的に緩やかに飽和するのに対し、tanh は指数的に飽和します。そのためソフトサインは、より広い入力範囲にわたって勾配が消えにくくなります。
刻み幅をマイナスにできますか? はい。負の刻みにすると表は減少方向に並びます。刻みを 0 にすると、すべての行が同じ x の値を繰り返します。