(一)反向传播算法理解 (Back-Propagation)

本文参考deeplearningbook.org一书第六章  6.5 Back-Propagation and Other Differentiation

Algorithms

反向传播算法分为两篇来讲,第一篇讲概念理解,第二篇用RNN简单推导。

第一篇就是本文 (一)反向传播算法理解 (Back-Propagation)

第二篇的链接(二)RNN 的 反向传播算法详细推导

下面我们就开始吧~

首先明确反向传播算法用来做什么:求梯度。

一、前向传播 foward propagation

“反向传播算法”,其中 反向 两个字顾名思义,先有一个前向的过程,才有反向一说。所以要搞懂反向传播之前,需先把前向传播弄清楚。简易地画了一个流程图如下:(图中的LOSS是一个实数值)。

  

上图中,前向传播路径是从输入到LOSS ,反向传播路径是从LOSS到参数(因为我们求梯度只要求参数的梯度就好了)。

前向和反向有两点不同的地方,一是方向相反,二是计算的内容不同,它两也有一样的地方,那就是一步步的向前走/向后走。反向传播求梯度就是一步步的求,而不是一步到位。

二、为什么要用反向传播算法求梯度

首先,我们可用数值法求得梯度(根据导数的定义来求解梯度),但是有个缺点,那就是参数多时,特别费时间,很慢。此方法排除。

再者,从输入到LOSS会有一个完整的函数表达式,直接根据这个函数式推导得到参数的导数表达式,再代入数值计算得到导数不就好了嘛。推导参数的导数表达式有两种方式,一是化简直接求导,二是链式求导。

假设 y=g(x) 并且 z=f(g(x))=f(y)=h(x) ,我们求 z 对 x 的导数:

直接求导:\frac{\mathrm{d} z}{\mathrm{d} x}={h}'(x)     (式一)

链式求导:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值