美文网首页数据蛙数据分析每周作业机器学习专题
李宏毅机器学习入门学习笔记(七) 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