神经网络反向传播的精确数学证明 Back Propagation

为什么要使用Back Propagation? 

 

上模型,直接走到 Forward Propagation 的部分:
j 表示当前层的神经元数量, k 表示上一层神经元的数量,
大括号是激活函数,

 

下一步,我们要训练神经网络,
对每个神经元对参数w、b进行微调,让预测结果更接近真实值,
怎么对w和b进行微调?

 

如果是简单的线性模型,

先找到cost function, 根据cost相对于权重W的导数,
然后让W向导数相反的方向,乘以某个学习率,每次改变一点点, 

线性模型:

  ,

 

可问题是,我们的神经元这么多,
具体到某一个w要怎么调整就成了问题,
求微分也不知道如何下手,

 

如果我们能知道 总误差cost 相对于某个具体的w的的变化率(微分)
那么我们就知道该如何微调了, 

 

                            
 是最后结果的误差,是某个神经元的权重

 

变化率(微分)越大,说明这个w(jk)对cost的影响越大,
我们只要让这个微分降到接近0, 就说明它对总体误差已经几乎没有影响了,
换句话说就是,
这个权重w已经调整到位了,它造成的误差很小了

 

如何求得这个微分呢?
这就是Back Propagation能做到事了

 ---------------------------

现在开始说Back Propagation

(很多解释都要引入概念 Delta,这里不使用)

 

上一部分说到总误差cost 相对于某个具体的w的的变化率(微分)
直接求是求不出来的,中间有很多层,让我们一层一层的剥离开来,

最核心关系就是,   是未激活的神经元,l是层数,j是第j个神经元,

我们可以看出,与 的关系就是靠 w 连接的

 

有什么启示呢,
启示就是,我们可以从最后那个神经元出发, 求出C相对于网络中任意层次的 z 的微分:
 是可以求出来的,因为,                  (1)
然后 任意相邻两层的z的微分, 根据上面的'核心关系'式,也可以求出来,  (2)

,把(1)和(2)两个关系式相乘,你就得到了倒数第二层的z的微分,
根据这个原理,你可以求出倒数第三层,倒数第四层......任意一层的z的微分,

 

在我们已经能求得 cost相对与任意一个神经元z的微分 

再然后,最后一个关系式,
, 明显很容易求出, 因为

 

所以现在我们就能求出一开始我们想要的 

 

//为了偷懒,后面我省略了下标jk

转载于:https://www.cnblogs.com/yummy-roast-duck/p/7127649.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值