DeepLearning笔记:Backpropagation 反向传播算法

:今天我们来学习反向传播算法。

:为什么你一脸严肃哦?

:咳咳,有吗……可能因为当初被 Backpropagation 这个词吓得不轻吧…… 反向传播算法是深度学习的核心之一,不过也没有很难,放轻松~

:你是说你还是说我

:来,我们先回忆一下,对多层神经网络,我们用梯度下降法去训练。之前已经学过如何计算输出节点的误差项,借助梯度下降算法,用误差项训练隐层到输出层的权重

:隐层到输出层。我记得最简单的神经网络应该有 3 层——是不是还有输入层到隐层?

:没错。

:那该怎么求隐层节点对应的误差项呢?

:在神经网络里,输出节点的误差项,跟隐层的权重是成比例的。

:意思是误差项越大,隐层节点的权重也越大?

:可以这么理解。既然我们知道输出的误差项,就可以用它来「反向传播」,求出隐层的误差项,再用于求输入节点的权重。

:咦,那不是反过来了?先知道输出结果,再反推输入权重?

:对的,所以叫做「反向」呀。

比如,输出层 k 个节点对应的误差项是。隐层有 j 个节点,那么隐层节点到输出节点的 j 个误差项是:

:等等!先让我复习一下误差项是什么……

:嗯!误差项 δ 表示 ,。对比一下,看看有什么不同?

:隐层到输出层的误差 (y-y^) 变成了

:很棒!你发现了吧,成为了 wx + b 中的变量 x:

:啊,又要来算这个了……

:没关系,虽然看上去麻烦一些,但是跟正向传播的做法很类似,权重的更新为。

:每次都要来一遍,要死不少脑细胞啊……

:那我给你列个清单吧,每次照着做就好。

假设我们考虑最简单的神经网络:只有一个隐层节点,只有一个输出节点。用反向传播算法更新权重的算法如下:

:天!看上去好复杂。

:练习两次就能熟悉起来了,别担心。下一次我带你用 Python 实现反向传播算法。

Ref

Deep Learning Nanodegree Udacity - https://www.udacity.com/course/deep-learning-nanodegree-foundation--nd101

Yes you should understand backprop – Medium - https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b

CS231n Winter 2016 Lecture 4 Backpropagation, Neural Networks 1 - YouTube - https://www.youtube.com/watch?v=59Hbtz7XgjM

00 的 DeepLearning 笔记

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180125G0H06A00?refer=cp_1026

扫码关注云+社区