美文网首页Python与机器学习数学
Sigmoid函数的求导证明

Sigmoid函数的求导证明

作者: Jeru_d39e | 来源:发表于2018-04-06 00:36 被阅读136次

    前文提到了神经网络中的Sigmoid函数,实际上在反向传播中还会用到Sigmoid的导数,形式很简单: s(x)*(1-s(x)),但是我想把这个过程自己推导一次,顺便复习一下导数和微分。

    Derivative(导数)和Differential(微分)

    首先我画了一张图来说明什么是导数和微分,本质上就是在极限中以线性函数(直线)来表示非线性函数(曲线)。

    My Cheatsheet

    红色的线是第一条割线(从[x,f(x)]到[x+h, f(x+h)]),(f(x+h) - f(x))/h 就是割线的斜率,物理学上是一段时间内的平均速度。

    灰色的线是第二条割线,当割线围绕着[x, f(x)]为原点继续顺时针转动时,h会不断变小,小到极限就变成了[x, f(x)]的切线。

    蓝色的线即这条切线,其斜率就是[x,f(x)]的导数,物理意义是当前这一个点的瞬间速度。

    当h小到极限的时候dy(导数除以h)就是[x,f(x)]的微分。

    割线斜率减去切线斜率即为误差函数E(h)

    Reciprocal Rule(倒数法则)

    根据微积分中的倒数法则,如果g(x) = 1/f(x), 则有

    Reciprocal Rule

    这个简单公式也非常容易证明

    R1

    再将极限表达式分拆一下

    R2

    因为f在x点的连续性第二个极限表达式的分母等于f(x)的平方

    R3

    现在利用倒数法则把Sigmoid函数的导数推导一下,这次我们记Sigmoid函数为s(x),它的倒置函数为f(x)

    根据倒数法则从f(x)开始推导得出公式S1

    S1

    Chain Rule(链式法则)

    根据链式法则我们可以有关于幂指求导的推广

    Chain Rule

    于是可以得出f(x)导数的另一种表达式S2

    S2

    最后我们把S2和S1放到一起来消元就可以得到Sigmoid的导数公式了

    Sigmoid Derivative

    用Python来实现如下逻辑:

    # activation function 
    def sigmoid(z, derivative=False):
        sigmoid = 1.0/(1.0+np.exp(-z))
        if (derivative==True):
            return sigmoid * (1-sigmoid)
        return sigmoid

    References:

    1. Differential on wiki

    2. Chain rule on wiki

    3. Derivatives of logarithmic and exponential functions

    4. MIT open course - Multivariable Calculus

    5. Mathematics Stack Exchange

    相关文章

      网友评论

      本文标题:Sigmoid函数的求导证明

      本文链接:https://www.haomeiwen.com/subject/zmfrhftx.html