什麼是 Softsign 函數?
Softsign 函數是一種應用於神經網路的激活函數,定義為 \(\phi(x) = x / (1 + |x|)\)。與雙曲正切函數(tanh)類似,它平滑、呈 S 形,並被限制在開區間 \((-1, 1)\) 之內。兩者最大的差異在於趨近漸近線的方式:Softsign 以多項式速度(約 \(1/|x|\))逼近 \(\pm 1\),而 tanh 則以指數速度逼近。這種較緩慢的飽和特性,在某些網路架構中有助於減輕梯度消失的問題。
如何使用本計算器
請輸入三個數值:x 的起始值(第一列的 x)、遞增值(每一列累加的步長),以及重複次數(要產生的列數)。計算器會逐點列出 x、Softsign \(\phi(x)\) 以及一階導數 \(\phi'(x)\) 的數值表,方便您繪製曲線或查詢特定點的值。
公式解析
對於每一列,設 \(a = 1 + |x|\),則 \(\phi(x) = x / a\),而 \(\phi'(x) = 1 / a^2\)。由於 \(|x|\) 永遠不為負,分母 \(a\) 至少為 1,因此絕不會出現除以零的情況,函數處處平滑。完整的公式為:
$$f(x) = \frac{x}{1+|x|}, \qquad f'(x) = \frac{1}{(1+|x|)^{2}}$$其中
$$x_i = \text{Initial }x + i \cdot \text{Step}, \quad i = 0,1,\dots,\text{Repetitions}-1$$Softsign 函數是奇函數(\(\phi(-x) = -\phi(x)\)),而其導數則是偶函數(\(\phi'(-x) = \phi'(x)\))。在原點處,\(\phi(0) = 0\) 且 \(\phi'(0) = 1\)。
實例演算
當 \(x = -5\) 時:\(a = 1 + 5 = 6\),因此 \(\phi(-5) = -5/6 = -0.8333333\),\(\phi'(-5) = 1/36 = 0.0277778\)。當 \(x = 1\) 時:\(a = 2\),因此 \(\phi(1) = 0.5\),\(\phi'(1) = 0.25\)。當 \(x = 0\) 時:\(a = 1\),因此 \(\phi(0) = 0\),\(\phi'(0) = 1\)。採用預設值(起始 -5、步長 0.1、共 101 列)時,數值表會將 x 從 -5 掃描至 +5。
常見問題
為什麼導數永遠不會是負數?因為 \(\phi'(x) = 1/(1+|x|)^2\) 是某個平方的倒數,恆為嚴格正值,這代表 Softsign 是單調遞增的函數。
Softsign 與 tanh 有何不同?兩者都會飽和到一個有界範圍,但 Softsign 飽和得更加緩慢(有理式衰減),相較之下 tanh 為指數衰減,因此 Softsign 能在更廣的輸入範圍內保持梯度的活性。
步長可以是負數嗎?可以。負的步長會讓數值表遞減;步長為零則會讓每一列都重複相同的 x 值。