反向传播算法

简单的神经网络:

一个神经网络,其中包含一个输入节点、一个输出节点,以及两个隐藏层(分别有两个节点)。相邻的层中的节点通过权重 𝑤𝑖𝑗wij 相关联,这些权重是网络参数

每个节点都有一个总输入 𝑥、一个激活函数 𝑓(𝑥)以及一个输出 𝑦=𝑓(𝑥)。 𝑓(𝑥)必须是非线性函数,否则神经网络就只能学习线性模型。

 正向传播:是根据输入数据,以及每一层的权重系数,激活函数,不断向前计算,最终得出模型输出值y-output的过程。

 

 得到结果的误差:

梯度算法:

可以得出 e是w的函数

  1. 误差E有了,怎么调整权重让误差不断减小?
  2. E是权重w的函数,何如找到使得函数值最小的w。

解决上面问题的方法是梯度下降算法,我的理解是 所谓梯度,就是求出了在线上或平面上某一点处,e在w的斜率,如果这个斜率是大于0的说明随着w的增大,e也会增大,那么就应该减小权重w。如果斜率是小于0的,说明随着w的增大,e会减小,那么就应该增大权重w。

反向传播算法:本质上来说是 误差e对w求梯度,根据倒数链式法则,最终梯度值可以由x,y表示并计算出来。这也是当然的,因为其实e对w的方程里,x和y都相当于常量值,只不过对于每个输入数据,常量值都是不一样的罢了。

对特定样本的预测输出和理想输出进行比较,然后确定网络的每个权重的更新幅度。 为此,我们需要计算误差相对于每个权重的变化情况。

 

 介绍到这里,后面的就是链式法则的推导了,主要逻辑是 将e对w求导转换为e对y的求导(由e的定义可以求出),y对w的求导(y可以表示为f(wx+b)).

参考链接:

https://blog.csdn.net/ft_sunshine/article/details/90221691

https://developers-dot-devsite-v2-prod.appspot.com/machine-learning/crash-course/backprop-scroll/

 

posted @ 2020-05-05 15:06  ZECDLLG  阅读(162)  评论(0编辑  收藏  举报