美文网首页数据蛙数据分析每周作业机器学习专题
李宏毅机器学习入门学习笔记(七) Backpropagation

李宏毅机器学习入门学习笔记(七) Backpropagation

作者: Spareribs | 来源:发表于2019-04-03 23:59 被阅读2次

    @[toc]

    文章说明

    反向传播(Backpropagation)算法是怎么让神经网络(neural network)变的有效率的。

    背景

    梯度下降(Gradient Descent)

    在这里插入图片描述

    反向传播(Backpropagation)并不是和梯度下降(Gradient descent)不同的一个方法。他只是一个比较有效率的演算法,让你在计算梯度向量的时候比较有效率把结果计算出来。

    链式法则(Chain Rule)

    关键就是求导的链式法则(Chain Rule),下图就是链式法则求导的两种case


    在这里插入图片描述

    反向传播

    首先定义损失函数(Lost function):

    1. 损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的哦,用L表示。
    2. 代价函数(Cost function)是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。
      所以这里定义的是有点问题的。
    在这里插入图片描述

    那怎么去做呢?我们先整个神经网络(Neural network)种抽取出一小部分的神经(Neural)去看:

    在这里插入图片描述
    在这里插入图片描述

    从这一小部分中去看,把计算梯度分成两个部分

    • 计算\frac{\partial z}{\partial w}(Forward pass的部分)
    • 计算\frac{\partial C}{\partial z} ( Backward pass的部分 )

    Forward pass

    那么,首先计算\frac{\partial z}{\partial w}(Forward pass的部分):

    在这里插入图片描述

    根据链式法则(Chain Rule),forward pass的运算规律就是:

    \frac{\partial z}{\partial w_1} = x_1 \\ \frac{\partial z}{\partial w_2} = x_2

    直接使用数字,更直观地看到运算规律:


    在这里插入图片描述

    是不是只管看到了结果,就是上一个的值,接下来是计算 Backward pass~~

    Backward pass

    (Backward pass的部分)这就很困难复杂因为我们的C是最后一层:
    那怎么计算 \frac{\partial C}{\partial z} (Backward pass的部分)这就很困难复杂因为我们的C是最后一层:

    在这里插入图片描述

    计算所有激活函数的偏微分,激活函数有很多,这里使用Sigmod函数为例


    在这里插入图片描述

    这里使用链式法则(Chain Rule)的case1,计算过程如下:

    \frac{\partial C}{\partial z} = \frac{\partial a}{\partial z}\frac{\partial C}{\partial a} \Rightarrow {\sigma}'(z)

    在这里插入图片描述

    最终的式子结果:

    在这里插入图片描述

    但是你可以想象从另外一个角度看这个事情,现在有另外一个neural,把back的过程逆向过来:

    在这里插入图片描述

    case 1: Output layer

    case 1,就是y1与y2是输出值:


    在这里插入图片描述

    case2:Not Output Layer

    在这里插入图片描述
    • Compute \frac{\partial l}{\partial z} for all activation function inputs z
    • Compute \frac{\partial l}{\partial z} from the output layer
    在这里插入图片描述

    怎么去计算呢?

    image 在这里插入图片描述

    实际上进行backward pass时候就是反向的计算(也相当于一个neural network)。

    总结

    在这里插入图片描述

    相关文章

      网友评论

        本文标题:李宏毅机器学习入门学习笔记(七) Backpropagation

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