zoukankan      html  css  js  c++  java
  • 100天搞定机器学习|day38 反向传播算法推导

    往期回顾

    image

    100天搞定机器学习|(Day1-36)

    image

    100天搞定机器学习|Day37无公式理解反向传播算法之精髓

    上集我们学习了反向传播算法的原理,今天我们深入讲解其中的微积分理论,展示在机器学习中,怎么理解链式法则。

    image

    我们从一个最简单的网络讲起,每层只有一个神经元,图上这个网络就是由三个权重和三个偏置决定的,我们的目标是理解代价函数对这些变量有多敏感。这样我们就知道怎么调整这些变量,才能使代价函数下降的最快。

    image.gif

    我们先来关注最后两个神经元,我们给最后一个神经元一个上标L,表示它处在第L层。给定一个训练样本,我们把这个最终层激活值要接近的目标叫做y,y的值为0/1。那么这个简易网络对于单个训练样本的代价就等于(a(L)−y)2。对于这个样本,我们把这个代价值标记为C0。
    image

    之前讲过,最终层的激活值公式:
    image

    换个标记方法:
    image

    整个流程就是这样的:

    image

    当然了,a(L−1)还可以再向上推一层,不过这不重要。

    image

    这些东西都是数字,我们可以想象,每个数字都对应数轴上的一个位置。我们第一个目标是来理解代价函数对权重image

    的微小变化有多敏感。换句话说,求C0对image

    的导数。image 的微小变化导致image 产生变化,然后导致image ,最终影响到cost。
    image

    我们把式子拆开,首先求image 的变化量比image 的变化量,即image 关于image 的导数;同力考虑image 变化量比image 的变化量,以及最终的c的变化量比上直接改动image 产生的变化量。image

    这就是链式法则
    image

    开始分别求导
    image

    image

    这只是包含一个训练样本的代价对image 的导数,
    总的代价函数是所有训练样本代价的总平均,它对image 的导数就要求出这个表达式对每一个训练样本的平均,
    image

    这只是梯度向量的一个分量,梯度由代价函数对每一个权重和偏置求导数构成。
    image

    当然了,对偏置求导数也是同样的步骤。只要把image 替换成image
    image

    同样的,这里也有反向传播的思想
    image

    到此,我们可以方向应用链式法则,来计算代价函数对之前的权重和偏置的敏感程度
    image

    到这里,我们可以看每层不止一个神经元的情况了,其实并不复杂太多,只是多写一些下标罢了。
    image

    这些方程式和之前每层只有一个神经元的时候本质上一样的

    image

    代价函数也类似
    image

    不同的是代价函数对(L-1)层激活值的导数
    因为此时,激活值可以通过不同的途径影响cost function,
    image

    只要计算出倒数第二层代价函数对激活值的敏感度,接下来重复上述过程就行了。至此,反向传播介绍完毕。
    image

  • 相关阅读:
    C语言——第四次作业(2)
    C语言——第三次作业(2)
    C语言——第二次作业(2)
    C语言——第一次作业(2)
    C语言——第0次作业(二)
    高级软件工程第九次作业:东理三剑客团队作业-随笔7
    高级软件工程第九次作业:东理三剑客团队作业-随笔6
    高级软件工程第九次作业:东理三剑客团队作业-随笔5
    高级软件工程第九次作业:东理三剑客团队作业-随笔4
    高级软件工程第九次作业:东理三剑客团队作业-随笔3
  • 原文地址:https://www.cnblogs.com/jpld/p/11369728.html
Copyright © 2011-2022 走看看