Sigmoid函数(logsig)求导

通常情况下,我们所说的Sigmoid函数定义如下:
σ(x)=11+ex=exex+1. \sigma(x)=\frac{1}{1+e^{-x}}=\frac{e^x}{e^x+1}.
它的形状如下:

Sigmoid函数(logsig)求导

导数如下:
dσ(x)dx=σ(x)(1σ(x)). \frac{d\sigma(x)}{dx}=\sigma(x)\cdot (1-\sigma(x)).
本篇博文讲σ(x)\sigma(x)导数的推导过程

注意

Sigmoid函数实际上是指形状呈S形的一组曲线[1],上述公式中的σ(x)\sigma(x)正式名称为logistic函数,为Sigmoid函数簇的一个特例(这也是σ(x)\sigma(x)的另一个名字,即logsiglogsig的命名来源)。我们经常用到的hyperbolic tangent函数,即tanhx=exexex+ex\tanh x=\frac{e^x-e^{-x}}{e^x+e^{-x}}也是一种sigmoid函数。

下文依旧称σ(x)\sigma(x)为logistic函数。

logistic函数的有效工作范围是(10,10)(-10,10),从它的图像也可以看出来:在(10,10)(-10,10)以外,函数值的变化非常小。那么问题来了,如果用logistic函数当神经网络的**函数,当x>10x>10或者x<10x<-10时会出现梯度消失(gradient vanishing)的问题,即dσ(x)dx0\frac{d\sigma(x)}{dx}\approx 0。换句话说,梯度下降算法会进入死胡同。这一点要特别注意。

求导过程[2]

dσ(x)dx=ddx[11+ex]=ddx(1+ex)1=(1+ex)2(ex) \frac{d\sigma(x)}{dx}=\frac{d}{dx}\left[\frac{1}{1+e^{-x}}\right] = \dfrac{d}{dx} \left( 1 + \mathrm{e}^{-x} \right)^{-1} = -(1 + e^{-x})^{-2}(-e^{-x})
=ex(1+ex)2 = \dfrac{e^{-x}}{\left(1 + e^{-x}\right)^2}
=11+ex ex1+ex = \dfrac{1}{1 + e^{-x}\ } \cdot \dfrac{e^{-x}}{1 + e^{-x}}
=11+ex (1+ex)11+ex = \dfrac{1}{1 + e^{-x}\ } \cdot \dfrac{(1 + e^{-x}) - 1}{1 + e^{-x}}
=11+ex (1+ex1+ex11+ex) = \dfrac{1}{1 + e^{-x}\ } \cdot \left( \dfrac{1 + e^{-x}}{1 + e^{-x}} - \dfrac{1}{1 + e^{-x}} \right)
=11+ex (111+ex) = \dfrac{1}{1 + e^{-x}\ } \cdot \left( 1 - \dfrac{1}{1 + e^{-x}} \right)
=σ(x)(1σ(x)) = \sigma(x) \cdot (1 - \sigma(x))

复习一下一般求导法则
  1. 乘法法则
    (fg)=fg+fg (f\cdot g)'=f'g+fg'
  2. 除法法则
    (fg)=fgfgg2(g0) \left(\frac{f}{g}\right)'=\frac{f'g-fg'}{g^2} \qquad (g\neq 0)
  3. 倒数法则
    (1g)=gg2(g0) \left(\frac{1}{g}\right)'=\frac{-g'}{g^2} \qquad (g\neq 0)
  4. 复合函数求导法则
    (f[g(x)])=df(g)dgdgdx (f[g(x)])'=\frac{df(g)}{dg}\frac{dg}{dx}

[1] https://en.wikipedia.org/wiki/Sigmoid_function
[2] https://math.stackexchange.com/questions/78575/derivative-of-sigmoid-function-sigma-x-frac11e-x