ソフトプラス関数とは
ソフトプラス関数 \(f(x) = \ln(1 + e^x)\) は、ニューラルネットワークの活性化関数として使われる ReLU(正規化線形ユニット)を滑らかに近似した関数です。原点で折れ曲がる ReLU とは異なり、ソフトプラス関数はすべての点で滑らかに微分可能で、常に正の値をとります。本計算機では、指定した範囲について x・f(x)・その1次微分の値を表にまとめ、両方の曲線をグラフ表示します。なだらかなS字からランプ状へと移り変わる特徴的な形状を視覚的に確認できます。
使い方
3つの値を入力します。x の初期値(最初の横軸の値)、増分(点と点の間隔)、繰り返し回数(生成する行数)です。たとえば初期値 -5、増分 0.1、繰り返し回数 101 とすると、x は -5.0 から +5.0 まで計算されます。結果として、スクロール可能な表と、ソフトプラス関数およびその微分のグラフが表示されます。
計算式の解説
ソフトプラス関数は $$f(x) = \ln(1 + e^x)$$ です。その微分は $$f'(x) = \frac{e^x}{1 + e^x} = \frac{1}{1 + e^{-x}}$$ となり、これはまさにロジスティックシグモイド関数に一致します。x が正方向に大きくなると \(f(x)\) は \(x\) に近づき、\(f'(x)\) は 1 に近づきます。逆に x が負方向に大きくなると \(f(x)\) は 0 に、\(f'(x)\) も 0 に近づきます。x が大きい場合のオーバーフローを防ぐため、本計算機では数値的に安定した形 $$f(x) = \max(x, 0) + \ln\left(1 + e^{-|x|}\right)$$ を用いています。
計算例
x = 0 のとき:\(f(0) = \ln(2) = 0.693147\)、\(f'(0) = 0.5\)。x = 1 のとき:\(f(1) = \ln(1 + 2.718282) = 1.313262\)、\(f'(1) = \frac{1}{1 + e^{-1}} = 0.731059\)。x = -1 のとき:\(f(-1) = 0.313262\)、\(f'(-1) = 0.268941\)。ここで \(f(x) - f(-x) = x\) という恒等式が成り立つことに注目してください。たとえば \(1.313262 - 0.313262 = 1\) となります。
よくある質問
ReLU ではなくソフトプラス関数を使う理由は? ソフトプラス関数は滑らかで、すべての点でゼロでない勾配を持つため、勾配を用いた最適化に有利な場合があります。一方、計算コストの面では ReLU の方が軽量です。
出力は常に正の値になりますか? はい。\(1 + e^x\) は常に 1 より大きいため、有限の x すべてに対して \(\ln(1 + e^x) > 0\) となります。
微分は何を表していますか? ソフトプラス曲線の傾きを表し、ロジスティックシグモイド関数に一致します。値は 0 から 1 まで単調に変化し、x = 0 のときに 0.5 となります。