李宏毅机器学习back propogation反向传播

  • 回顾梯度下降:
    有一堆参数 θ = w 1 , w 2 , . . . , b 1 , b 2 , . . . \theta= {w_1,w_2,...,b_1,b_2,... } θ=w1,w2,...,b1,b2,...
    首先由一个初始化值 θ 0 \theta^0 θ0
    计算损失函数的梯度 ▽ L ( θ 0 ) \triangledown L(\theta^0) L(θ0)
    迭代 θ \theta θ
    在这里插入图片描述
    参数过多,这么多梯度怎么办?BP算法提供了一种快速计算梯度的方法

  • 回顾链式求导法则
    在这里插入图片描述

BP

  • y ^ n \hat{y}^n y^n是理想输出; y n y^n yn是实际输出
  • C n C^n Cn表示 y n y^n yn y ^ n \hat{y}^n y^n之间的距离
    在这里插入图片描述
  • 先看第一层
    在这里插入图片描述
BP-Forward pass

显然
在这里插入图片描述
所以,可以总结出:z对w的偏导数是前一个神经元/激活函数的输出值
在这里插入图片描述
这个计算过程是从前到后的,因此叫做Forward pass

BP-backward pass

为了计算 ∂ C / ∂ z \partial C / \partial z C/z,将其拆成 ∂ C / ∂ a \partial C / \partial a C/a ∂ a / ∂ z \partial a / \partial z a/z
因为 a = σ ( z ) a=\sigma(z) a=σ(z)
所以 ∂ a / ∂ z = σ ′ ( z ) \partial a / \partial z=\sigma'(z) a/z=σ(z)
在这里插入图片描述
在这里插入图片描述

  • 那么 ∂ C / ∂ a \partial C / \partial a C/a怎么算呢?

显然,a通过影响 z ′ z' z z ′ ′ z'' z影响C

在这里插入图片描述
在这里插入图片描述
现在的问题是画问号的两项未知
假设我们已经算出

  • case1 假设是最后一层
    在这里插入图片描述
    只需要知道输出层函数,就可以轻松算出$\partial y_1 / \partial z’;而 ∂ C / ∂ y 1 \partial C/\partial y_1 C/y1由loss函数也可以轻松算出
  • case2 不是最后一层
    在这里插入图片描述
    同理于
    在这里插入图片描述
    可以由 ∂ C / ∂ z a \partial C / \partial z_a C/za ∂ C / ∂ z b \partial C/\partial z_b C/zb算出 ∂ C / ∂ z ′ \partial C / \partial z' C/z

所以从output layer往前算,就能算出所有 ∂ C / ∂ z \partial C / \partial z C/z

在这里插入图片描述

在这里插入图片描述

Summary

信号正向传播,误差反向传播,乘起来就是所求梯度
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值