什麼是 Softplus 函數?
Softplus 函數 \(f(x) = \ln(1 + e^{x})\) 是神經網路中常用的 ReLU(修正線性單元)激活函數的平滑、可微近似版本。ReLU 在原點處會出現尖銳的轉折,而 Softplus 則在任何位置都平滑連續,且函數值恆為正。本計算器會依照你設定的範圍,建立一份包含 x、f(x) 以及一階導數的表格,並同時繪製兩條曲線,讓你清楚看到那條從平緩 S 形漸漸轉為斜坡的特徵走勢。
使用方式
請輸入三個數值:x 的初始值(第一個橫座標)、遞增量(各點之間的間距),以及重複次數(要產生幾列資料)。舉例來說,初始值設為 -5、遞增量設為 0.1、重複次數設為 101,就會產生從 -5.0 到 +5.0 的 x 值。計算結果會是一份可捲動的表格,外加一張呈現 Softplus 及其導數的圖表。
公式解析
Softplus 為 $$f(x) = \ln(1 + e^{x}).$$ 其導數為 $$f'(x) = \frac{e^{x}}{1 + e^{x}} = \frac{1}{1 + e^{-x}},$$ 這正好就是邏輯斯 sigmoid 函數。當 \(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\)。
常見問題
為什麼要用 Softplus 而不用 ReLU?Softplus 平滑且在任何位置都有非零的梯度,這對以梯度為基礎的最佳化有幫助;不過 ReLU 的運算成本較低。
輸出值一定是正數嗎?是的。對任何有限的 \(x\) 而言,因為 \(1 + e^{x} > 1\),所以 \(\ln(1 + e^{x}) > 0\)。
導數代表什麼意義?它是 Softplus 曲線的斜率,等於邏輯斯 sigmoid 函數,會從 0 到 1 單調遞增,並在 \(x = 0\) 時取值 0.5。