本篇博文详细记录下我推导前馈网络和反向传播的过程。想要了解基本的神经网络构成,请参看Poll的笔记[Deep Learning] 神经网络基础。下面结合Charlotte77的https://www.cnblogs.com/charlotte77/p/5629865.html 中的例子来推导一遍。

如图1-1是一个简单的神经网络,仅有三层,每层仅有两个神经元。第一层是输入层,包含两个神经元深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导,和截距项深度学习入门(一)——前馈网络和反向传播推导;第二层是隐含层,包含两个神经元深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导和截距项深度学习入门(一)——前馈网络和反向传播推导,第三层是输出深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导,每条线上标的是层与层之间连接的权重,激活函数我们默认为sigmoid函数。

 

深度学习入门(一)——前馈网络和反向传播推导

图 11 初始神经网络权重图

为他们赋上权重值,如图1-2所示:

 

深度学习入门(一)——前馈网络和反向传播推导

图 12 为神经网络赋初始值

目标:给出输入数据深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导,使输出尽可能与原始输出深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导接近。

2. 前向传播

2.1 输入层à隐含层

隐藏神经元的加权和为: 深度学习入门(一)——前馈网络和反向传播推导

隐藏神经元的加权和为:深度学习入门(一)——前馈网络和反向传播推导

 

隐藏神经元的输出为: 深度学习入门(一)——前馈网络和反向传播推导

隐藏神经元的输出为: 深度学习入门(一)——前馈网络和反向传播推导

2.2 隐含层à输出层

输出神经元的加权和为: 深度学习入门(一)——前馈网络和反向传播推导

输出神经元的加权和为: 深度学习入门(一)——前馈网络和反向传播推导

 

输出神经元的输出为: 深度学习入门(一)——前馈网络和反向传播推导

输出神经元的输出为: 深度学习入门(一)——前馈网络和反向传播推导

3. 反向传播

3.1 计算总误差

总误差为均方误差: 深度学习入门(一)——前馈网络和反向传播推导

3.2 隐含层à输出层的权值更新

首先计算对整体误差产生了多少影响,需要对深度学习入门(一)——前馈网络和反向传播推导求偏导,同时由2.2可知,深度学习入门(一)——前馈网络和反向传播推导只对深度学习入门(一)——前馈网络和反向传播推导产生影响,又决定了 深度学习入门(一)——前馈网络和反向传播推导

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

同理可以计算

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导  

深度学习入门(一)——前馈网络和反向传播推导  

深度学习入门(一)——前馈网络和反向传播推导  

深度学习入门(一)——前馈网络和反向传播推导  

将学习率深度学习入门(一)——前馈网络和反向传播推导设置为0.5,计算得到的更新值

深度学习入门(一)——前馈网络和反向传播推导 

同理可得:

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

3.3隐含层à输入层的权值更新

方法与上面的类似,但是要注意深度学习入门(一)——前馈网络和反向传播推导决定了深度学习入门(一)——前馈网络和反向传播推导,而深度学习入门(一)——前馈网络和反向传播推导决定了深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导均有影响,深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导分别决定了深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导,所以在求总误差对深度学习入门(一)——前馈网络和反向传播推导偏导时,必须对深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导同时求偏导:

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

据此更新深度学习入门(一)——前馈网络和反向传播推导的值为

深度学习入门(一)——前馈网络和反向传播推导

同理可得

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

深度学习入门(一)——前馈网络和反向传播推导 

 

 

从而得到深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导深度学习入门(一)——前馈网络和反向传播推导的更新值:

深度学习入门(一)——前馈网络和反向传播推导

深度学习入门(一)——前馈网络和反向传播推导

深度学习入门(一)——前馈网络和反向传播推导

如此所有的权重值便通过反向传播更新完毕,在这个例子中第一次迭代之后,总误差深度学习入门(一)——前馈网络和反向传播推导由0.29837110876下降至0.291027773694。迭代10000次后,总误差为0.000035085,输出为[0.015912196,0.984065734](原输入为[0.01,0.99]),证明效果还是不错的。首次反向传播的代码见:https://github.com/DowTowne/Deep/blob/master/Introduce_to_deep_learning/01_back_propagation/back_propagation_cal.py,循环迭代的代码请参见:https://github.com/DowTowne/Deep/blob/master/Introduce_to_deep_learning/01_back_propagation/test_simple_neuralNetwork.py。

     转载请注明出处。如有勘误,请多多指正!

参考 文献:

1. Poll的笔记:[Mechine Learning & Algorithm] 神经网络基础(http://www.cnblogs.com/maybe2030/p/5597716.html#3457159 )

2. 一文弄懂神经网络中的反向传播法——BackPropagation( https://www.cnblogs.com/charlotte77/p/5629865.html )

 

相关文章:

  • 2021-07-12
  • 2021-12-09
  • 2021-11-22
  • 2021-04-11
  • 2021-12-28
  • 2021-10-12
  • 2021-07-18
  • 2021-11-20
猜你喜欢
  • 2021-10-27
  • 2021-07-06
  • 2021-12-02
  • 2021-04-04
  • 2021-06-22
  • 2021-10-31
相关资源
相似解决方案