Sigmoid函数求导—超详细过程

基础知识

f ( x ) = 1 x f(x)=\frac{1}{x} f(x)=x1,则 f ′ ( x ) = − 1 x 2 f'(x)=- \frac{1}{x^2} f(x)=x21
g ( x ) = e x g(x)=e^x g(x)=ex,则 g ′ ( x ) = e x g'(x)=e^x g(x)=ex

Sigmoid函数: f ( x ) = 1 1 + e − x f(x)= \frac{1}{1+e^{-x}} f(x)=1+ex1
Sigmoid函数的导数: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x))

推导过程

方法1

首先,对 f ( x ) f(x) f(x)进行变形:
f ( x ) = 1 1 + e − x = 1 1 + 1 e x = ( 1 + 1 e x ) − 1 = ( e x e x + 1 e x ) − 1 = ( e x + 1 e x ) − 1 = e x e x + 1 = ( e x + 1 ) − 1 e x + 1 = e x + 1 e x + 1 − 1 e x + 1 = 1 − 1 e x + 1 = 1 − ( e x + 1 ) − 1 \begin{aligned} f(x)&= \frac{1}{1+e^{-x}} \\ &= \frac{1}{1+\frac{1}{e^x}} \\ &=(1+\frac{1}{e^x})^{-1} \\ &=(\frac{e^x}{e^x}+\frac{1}{e^x})^{-1} \\ &=(\frac{e^{x}+1}{e^x})^{-1} \\ &=\frac{e^x}{e^{x}+1} \\ &=\frac{(e^{x}+1)-1}{e^{x}+1} \\ &=\frac{e^{x}+1}{e^{x}+1}-\frac{1}{e^{x}+1} \\ &=1-\frac{1}{e^{x}+1} \\ &=1-(e^{x}+1)^{-1} \end{aligned} f(x)=1+ex1=1+ex11=(1+ex1)1=(exex+ex1)1=(exex+1)1=ex+1ex=ex+1(ex+1)1=ex+1ex+1ex+11=1ex+11=1(ex+1)1
求导:

注意使用链式法则求导

f ′ ( x ) = ( 1 − ( e x + 1 ) − 1 ) ′ = ( − 1 ) ( − 1 ) ( e x + 1 ) − 2 e x = ( e x + 1 ) − 2 e x = ( e x + 1 ) − 1 ( e x + 1 ) − 1 e x \begin{aligned} f'(x)&=(1-(e^{x}+1)^{-1})' \\ &=(-1)(-1)(e^{x}+1)^{-2} e^{x}\\ &=(e^{x}+1)^{-2} e^{x}\\ &=(e^{x}+1)^{-1}(e^{x}+1)^{-1} e^{x} \end{aligned} f(x)=(1(ex+1)1)=(1)(1)(ex+1)2ex=(ex+1)2ex=(ex+1)1(ex+1)1ex
由前面提到的 f ( x ) f(x) f(x)的变形可知:
f ( x ) = 1 1 + e − x = ( 1 + e − x ) − 1 = e x e x + 1 = e x ( e x + 1 ) − 1 \begin{aligned} f(x)&=\frac{1}{1+e^{-x}} =(1+e^{-x})^{-1}=\frac{e^{x}}{e^{x}+1}=e^{x}(e^{x}+1)^{-1} \end{aligned} f(x)=1+ex1=(1+ex)1=ex+1ex=ex(ex+1)1
所以:
f ′ ( x ) = ( e x + 1 ) − 1 ⋅ ( e x + 1 ) − 1 e x = ( e x + 1 ) − 1 ⋅ e x ( e x + 1 ) − 1 = ( e x + 1 ) − 1 ⋅ ( 1 + e − x ) − 1 = 1 e x + 1 ⋅ 1 1 + e − x = ( e x + 1 ) − e x e x + 1 ⋅ 1 1 + e − x = ( e x + 1 e x + 1 − e x e x + 1 ) ⋅ 1 1 + e − x = ( 1 − e x e x + 1 ) ⋅ 1 1 + e − x = ( 1 − 1 1 + e − x ) ⋅ 1 1 + e − x = ( 1 − f ( x ) ) ⋅ f ( x ) = f ( x ) ( 1 − f ( x ) ) \begin{aligned} f'(x)&=(e^{x}+1)^{-1} \cdot (e^{x}+1)^{-1} e^{x} \\ &= (e^{x}+1)^{-1} \cdot e^{x}(e^{x}+1)^{-1} \\ &=(e^{x}+1)^{-1} \cdot (1+e^{-x})^{-1} \\ &=\frac{1}{e^{x}+1} \cdot \frac{1}{1+e^{-x}} \\ &=\frac{(e^{x}+1)-e^{x}}{e^{x}+1} \cdot \frac{1}{1+e^{-x}} \\ &=(\frac{e^{x}+1}{e^{x}+1}-\frac{e^{x}}{e^{x}+1}) \cdot \frac{1}{1+e^{-x}} \\ &=(1-\frac{e^{x}}{e^{x}+1}) \cdot \frac{1}{1+e^{-x}} \\ &=(1-\frac{1}{1+e^{-x}}) \cdot \frac{1}{1+e^{-x}} \\ &=(1-f(x)) \cdot f(x) \\ &=f(x)(1-f(x)) \end{aligned} f(x)=(ex+1)1(ex+1)1ex=(ex+1)1ex(ex+1)1=(ex+1)1(1+ex)1=ex+111+ex1=ex+1(ex+1)ex1+ex1=(ex+1ex+1ex+1ex)1+ex1=(1ex+1ex)1+ex1=(11+ex1)1+ex1=(1f(x))f(x)=f(x)(1f(x))


方法2

Sigmoid 函数的数学表达式为:

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

我们要对其进行导数,通常会用到链式法则,也就是内导数乘以外导数。计算过程如下:

首先,令内部函数为:
u = 1 + e − x u = 1 + e^{-x} u=1+ex

则 Sigmoid 函数可以表示为外部函数:
σ ( x ) = u − 1 \sigma(x) = u^{-1} σ(x)=u1

接着我们计算这两个函数的导数:

  1. 内导数(对于 u = 1 + e − x u = 1 + e^{-x} u=1+ex 关于 x x x 的导数):
    d u d x = − e − x \frac{du}{dx} = -e^{-x} dxdu=ex

g ( x ) = e − x g(x)=e^{-x} g(x)=ex,则有链式法则可得 g ′ ( x ) = − e − x g'(x)=-e^{-x} g(x)=ex

  1. 外导数(对于 σ ( x ) = u − 1 \sigma(x) = u^{-1} σ(x)=u1 关于 u u u 的导数):
    d σ d u = − u − 2 = − 1 u 2 \frac{d\sigma}{du} = -u^{-2} = -\frac{1}{u^2} dudσ=u2=u21

现在,根据链式法则,找到 Sigmoid 函数关于 x x x 的导数:
d σ d x = d σ d u ⋅ d u d x \frac{d\sigma}{dx} = \frac{d\sigma}{du} \cdot \frac{du}{dx} dxdσ=dudσdxdu
d σ d x = − 1 u 2 ⋅ ( − e − x ) \frac{d\sigma}{dx} = -\frac{1}{u^2} \cdot (-e^{-x}) dxdσ=u21(ex)
d σ d x = e − x ( 1 + e − x ) 2 \frac{d\sigma}{dx} = \frac{e^{-x}}{(1 + e^{-x})^2} dxdσ=(1+ex)2ex

使用 Sigmoid 函数的原始定义和上面的导数结果,我们可以将导数简化为 Sigmoid 函数的形式:
d σ d x = 1 1 + e − x ( 1 − 1 1 + e − x ) \frac{d\sigma}{dx} = \frac{1}{1 + e^{-x}} \left(1 - \frac{1}{1 + e^{-x}}\right) dxdσ=1+ex1(11+ex1)
d σ d x = σ ( x ) ( 1 − σ ( x ) ) \frac{d\sigma}{dx} = \sigma(x)(1 - \sigma(x)) dxdσ=σ(x)(1σ(x))

所以最终得到的 Sigmoid 函数关于 x x x 的导数是:

d σ d x = σ ( x ) ( 1 − σ ( x ) ) \frac{d\sigma}{dx} = \sigma(x)(1 - \sigma(x)) dxdσ=σ(x)(1σ(x))

这就是 Sigmoid 函数的导数,可以直接用于梯度计算和其他数学运算中。

参考

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐