我是靠谱客的博主 从容小天鹅,最近开发中收集的这篇文章主要介绍5分钟看懂反向传播算法(Backpropogation) |李宏毅机器学习【7】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当我们在谈论深度学习的“学习过程”的时候,我们在谈论什么?

对,在谈论梯度下降(Gradient Descent)

如果你还不知道什么是梯度下降,可以看看之前的梯度下降(Gradient Descent)的技巧和原理 https://blog.csdn.net/qq_36459893/article/details/82290553。

 

下面是梯度下降的一般过程。由于神经网络独特的结构,所以对它做梯度下降有一丢丢复杂,需要引入一个技术:反向传播算法(Backpropogation)

在进入正题前,先复习一下微积分的链式求导法则。

梯度下降的关键是求梯度,简单来说就是求损失函数(Loss function)对所有参数求偏导组成的向量。

求L对w的偏导,也就是求每一项C对w的偏导。

frac{partial c}{partial w}可以分解为两步:

1、frac{partial z}{partial w} ,这是个Forward pass(这个其实是求导的最后一步,可以从前向后直接得到)

2、frac{partial c}{partial z} ,这是个Backward pass(这部分不能直接求出来,需要运用递归思想,从后向前计算)

先来看Forward pass部分,这个偏导很容易求,对wi的偏导就是其对应的前一层的输入xi或者ai。

这张图可以看得更清楚一些:

forward pass就是这么简单,下面来看backword pass的过程。

frac{partial c}{partial z} 可以分解为frac{partial a}{partial z}frac{partial c}{partial a}两部分,其中frac{partial a}{partial z}可以直接求出来,关键是求出frac{partial c}{partial a}

frac{partial c}{partial a}进一步分解,变成求frac{partial c}{partial z'}frac{partial c}{partial z''}的问题了,而这里的z'和z''是后一层的z,在性质上和z完全相同。

这里暂停一下,我们先假设frac{partial c}{partial z'}frac{partial c}{partial z''}已经求出来了,然后看看frac{partial c}{partial z}到目前为止被分解成了什么样的形式。

case 1: 假设z'和z''是output层的输入,那么frac{partial c}{partial z'}frac{partial c}{partial z''}可以直接求出来。

case2:还没到output层的情况下,z'后面还连着z_az_b,是不是熟悉的感觉,熟悉的配方!

之前是z后面连着z'和z'',现在又出现了相同的形式。

反向传播的精髓就是:递归的计算frac{partial c}{partial z}, 直到递归到输出层!

来通过图片直观的感受一下这个过程~

先从前往后递归:

再从后往前计算:

OK,Forward Pass和Backward Pass成功会师!

这就是反向传播算法的全部内容。怎么样,5分钟你学会了吗?

最后

以上就是从容小天鹅为你收集整理的5分钟看懂反向传播算法(Backpropogation) |李宏毅机器学习【7】的全部内容,希望文章能够帮你解决5分钟看懂反向传播算法(Backpropogation) |李宏毅机器学习【7】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部