Abstract
We lift three common smooth nonlinearities—logistic/sigmoid, softplus, and softsign—to symbolic numerals (m, a) as unary magnitude maps with alignment carry. We state domains, ranges, monotonicity/curvature, stable numerics, and order effects. Under collapse phi(m,a) = m, all formulas reduce to the classical ones.
Definitions (alignment carry)
For x = (m, a):
sigmoid*(m, a) = ( 1 / (1 + exp(-m)) , a ) # also called logistic
softplus*(m, a) = ( log(1 + exp(m)) , a )
softsign*(m, a) = ( m / (1 + |m|) , a )
- Domain: all real
m. - Alignment: carried unchanged (
apasses through). - Collapse:
phi( f*(m,a) ) = f(m)for eachf.
Ranges, monotonicity, curvature
Logistic / sigmoid σ(m)
Range: (0, 1), strictly increasing on R
σ'(m) = σ(m) * (1 - σ(m))
σ''(m) = σ(m) * (1 - σ(m)) * (1 - 2σ(m))
- Curvature: convex on
(-inf, 0), concave on(0, inf), inflection atm = 0(σ(0)=1/2).
Softplus sp(m) = log(1 + exp(m))
Range: (0, inf), strictly increasing on R
sp'(m) = σ(m)
sp''(m) = σ(m) * (1 - σ(m)) > 0 # globally convex
- Asymptotics:
sp(m) ~ mform >> 0;sp(m) ~ exp(m)form << 0.
Softsign ss(m) = m/(1+|m|)
Range: (-1, 1), strictly increasing on R
For m >= 0: ss'(m) = 1/(1+m)^2, ss''(m) = -2/(1+m)^3 (concave)
For m < 0 : ss'(m) = 1/(1-|m|)^2 = 1/(1-m)^2, ss''(m) = 2/(1-m)^3 (convex)
- Curvature: convex on
(-inf, 0), concave on(0, inf), inflection atm = 0.
Order and collapse
- Magnitude order: all three are strictly increasing on
R, so(m1,a1) <=_m (m2,a2) ⇒ f*(m1,a1) <=_m f*(m2,a2)forf in {sigmoid, softplus, softsign}. - Strength order
S_beta(optional): with equal alignments (a1=a2) the same preservation holds; with differingathe strength order may differ from magnitude order (see 2.37–2.38). - Collapse check: setting
a = +1everywhere returns the classical curves exactly.
Stable numerics (recommended formulas)
To avoid overflow/underflow:
sigmoid(m) = 0.5 * (1 + tanh(m/2)) # stable on R
softplus(m) = { m + log1p(exp(-m)) if m > 0
{ log1p(exp(m)) otherwise
erfc-style guards not needed here; use expm1/log1p where available
Manifest knobs:
sigmoid.impl = "tanh_half" | "1_over_1p_exp"
softplus.split = m_threshold (default 0)
precision_targets = {abs_tol: 1e-12, rel_tol: 1e-12}
Worked examples
A) Logistic and curvature point
x1 = (-2, 0.3) → sigmoid*(x1) ≈ ( 0.1192 , 0.3 )
x2 = ( 2, 0.6) → sigmoid*(x2) ≈ ( 0.8808 , 0.6 )
x0 = ( 0, 0.1) → sigmoid*(x0) = ( 0.5 , 0.1 )
Order preserved on magnitudes; alignment carried.
B) Softplus with split implementation
y1 = (-3, 0.4) → softplus*(y1) = ( log1p(exp(-3)) , 0.4 ) ≈ ( 0.0486 , 0.4 )
y2 = ( 2, 0.9) → softplus*(y2) = ( 2 + log1p(exp(-2)) , 0.9 ) ≈ ( 2.1269 , 0.9 )
C) Softsign saturation
z1 = (-3, -0.2) → softsign*(z1) = ( -3 / (1+3) , -0.2 ) = ( -0.75 , -0.2 )
z2 = ( 10, 0.2) → softsign*(z2) = ( 10 / 11 , 0.2 ) ≈ ( 0.9091 , 0.2 )
Softsign smoothly saturates toward ±1 while carrying alignment.
Use with selectors and thresholds
- Smooth step vs Heaviside:
sigmoid(k*m)approximatesH(m)ask -> +inf. Pair with 2.35 policies if replacing a hard threshold with a smooth one; alignment is carried, so thresholding decisions remain audit-ready. - Clamp alternatives:
softplusis a smoothmax(m,0);softsignis a smoothtanh-like squashing into(-1,1)without exponentials.
Implementation notes (manifest)
function_set = ["sigmoid","softplus","softsign"]
alignment_policy = "carry" # unary
sigmoid.impl = "tanh_half" # or "1_over_1p_exp"
softplus.split_threshold = 0 # use piecewise formula shown above
domain = R
order_metric = "magnitude" # for order claims; S_beta optional with declared beta
zero_canonicalize = true # if result magnitude is exactly 0, return (0, +1)
Takeaway
Logistic, softplus, and softsign lift cleanly as increasing magnitude maps with alignment carry. They provide smooth alternatives to steps and clamps, preserve magnitude order, and admit stable implementations across R. Under collapse (a = +1), they match the classical curves exactly.
Navigation
Previous → Special functions II — erf, Bessel, polylog, Lambert W (2.42)
Next → Multivariate lifts & aggregators (2.44)
Disclaimer
Observation only. Results reproduce mathematically; domain claims require independent peer review. Defaults: mult_mode = M2, clamp_eps = 1e-6, |a| < 1. All formulas are presented in plain text. Collapse uses phi(m,a) = m.