Backpropagation

在这里插入图片描述
在使用gradient descent的时候,神经网络参数θ有很多参数(w,b)。那gradient就会是一个有成千上万维的vector。所以,Backpropagation在做的事情就是有效的把它(上图左侧的向量)计算出来。
在这里插入图片描述
复习一下高数中的链式法则:
case1:input x会对y有影响,input y对z有影响
所以如果算z对x的微分,就可以拆成等号右侧这种形式
case2:input s通过function g会影响x,input s通过function h会影响y
x和y又会通过fuction k影响z
所以如果要计算z对s的微分,由于影响的路径有两条,就会用到偏微分,得到上图中等号右侧这种形式
在这里插入图片描述
定义一个loss fuction,这个loss fuction就是把所有训练数据的Cn相加
看右上角的公式,绿色部分是假设给定一组神经网络的参数θ,把一个训练参数xn带入到这个神经网络中,它会output一个Yn,同时我们又希望它output一个Yn尖(期望值),Cn就是实际值Yn和期望值Yn尖之间的距离。Cn越大说明不好。
把左侧的公式左右两侧都对w做偏微分就会得到箭头指向的公式。
(这里要对参数w做微分是因为,参数的微分就是梯度,方便之后做梯度下降)
在这里插入图片描述
先拿出来一个神经来计算。根据之前说到的链式法则很容易得到这个公式。那管∂C/∂z就叫做backward pass,∂z/∂w叫做forward pass
在这里插入图片描述
要计算forward pass就是一眼就可以看出来得到的结果分别是x1和x2。从这个图正好看出其实算这个就是:如果对w1偏微分,得到的就是x1,如果是对w2,得到的就是x2。就是看w的input是什么,答案就是什么。
例子
在这里插入图片描述
在这里插入图片描述
计算一下backward pass
这里就是把∂C/∂a又拆解了一下。a=σ(z)这个式子也是假设它是一个sigmod函数,之后又暂时拆解考虑只有两条路两个权重w3,w4.再次使用链式法则求偏微分,得到结果w3和w4。但是红色问号的地方很难解决因为,z‘和z‘‘到C还有很多步骤,不确定是对C的怎么影响的。
所以如果知道两个红色问号部分的值,就可以很轻易的得到∂C/∂a。那先假设知道这两个红色问号,就会得到下图
在这里插入图片描述
------------所以到底怎么算红色问号呢?-------------------------------------
在这里插入图片描述
case1:现在得到的y1,y2就是整个神经网络的输入输出。
同理根据链式法则,z’->y1->c,所以就会得到上述公式
z‘’同样的道理,那整个计算就比较简单
case2:红色部分并不是整个神经网络的输入输出
在这里插入图片描述
那就根据之前说的倒着算,一层一层倒着推就会得到最开始的∂C/∂z’
就像是构建一个倒着的神经网络就可以把每一层z对C的偏微分得到
总结
在这里插入图片描述
最开始要解决计算的公式:
在这里插入图片描述

正着算:可以得到∂z/∂w
倒着算:可以得到每一个∂C/∂z’
这样就可以计算每一个w对C的偏微分了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值