链式法则与反向传播原理 Chain rule and BackPropagation principle
一、链式法则Chain rule【1】
开始推导反向传播原理之前,先了解一下链式法则:
Case1
取y=g(x),z=h(y)。
当改变x时,x 会通过 g 影响 y;而当改变 y 时,y 会通过 h 影响 z。
因此,如果要计算 dz/dx,由于这种效应,可以计算Derivative:dz/dy 乘 dy/dx。
Case2
取x=g(s),y=g(s)。
然后有一个函数k,它需要x和y来得到z。 因此,对 s 进行更改会同时影响 x 和 y,从而导致 x 和 y 同时影响 z。 然后当计算 dz/ds 时,需要计算的是Partial Derivatives:。
这就是链式法则Chain rule。
二、反向传播BackPropagation推导【2】
假设有这样一个网络:第一层是输入层,包含两个神经元i1,i2和bias偏置项b1;第二层是隐藏层,包含两个神经元h1,h2和bias偏置项b2;第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数Activation Function默认为sigmoid函数。
现在对网络赋初值如图:
其中,输入数据 i1=0.05,i2=0.10;
输出数据 o1=0.01,o2=0.99;
初始权重 w1=0.15,w2=0.20,w3=0.25,w4=0.30;
w5=0.40,w6=0.45,w7=0.50,w8=0.55
目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近。【3】
Step 1 前向传播Forward Propagation
1.输入层-->隐藏层:
计算神经元h1的输入加权和:
神经元h1的输出outh1:(此处用到的激活函数为sigmoid函数):
同理,可计算出神经元h2的输出outh2:
2.隐藏层-->输出层:
计算输出层神经元o1和o2的值:
这样前向传播的过程就结束了,得到输出值为[0.75136507 , 0.772928465],与实际值[0.01, 0.99]相差还很远,现在对误差进行反向传播,更新权值,重新计算输出。
Step 2 反向传播BackPropagation
1.计算总误差
总误差:(均方误差,mean-square error、MSE)
但是有两个输出,所以分别计算o1和o2的误差,总误差为两者之和:
2.隐藏层-->输出层的权值更新:
以权重参数w5为例,如果想知道w5对整体误差产生了多少影响,可以用整体误差对w5求偏导求出:(链式法则Chain rule)
下图可更直观的看清楚误差是怎样反向传播的:
现在分别计算每个式子的值:
计算:
计算:
(这一步实际上就是对sigmoid函数求导)
计算:
最后三者相乘:
这样就计算出整体误差E(total)对w5的偏导值(partial derivative)。
回过头来再看看上面的公式发现:
为了表达方便,用表示输出层的误差:
因此,整体误差E(total)对w5的偏导公式可以写成:
如果输出层误差计为负的话,也可以写成:
更新w5的值:
(其中,是学习速率learning rate,这里取0.5)
同理,可更新w6,w7,w8:
3.输入层-->隐藏层的权值更新:
方法与上面说的差不多,但是out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算。
计算:
先计算:
同理,计算出:
两者相加得到总值:
再计算:
再计算:
最后,三者相乘:
为了简化公式,用sigma(h1)表示隐含层单元h1的误差:
最后,更新w1的权值:
同理,可更新w2,w3,w4的权值:
这样误差反向传播法就完成了,最后再把更新的权值重新计算,不停地迭代,在这个例子中第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。迭代10000次后,总误差为0.000035085,输出为[0.015912196,0.984065734](原输入为[0.01,0.99]),证明效果还是不错的。
参考文献(References):
【1】 ESRSchao 《【CNN基础知识】一文详解反向传播(Backpropagation)在CNN中如何具体实现——卷积、池化(上)》
https://blog.csdn.net/qq_45912037/article/details/128073903
【2】 Charlotte77 《一文弄懂神经网络中的反向传播法——BackPropagation》
https://www.cnblogs.com/charlotte77/p/5629865.html
【3】 aift 《“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)》
https://blog.csdn.net/ft_sunshine/article/details/90221691
标签:误差,链式法则,Chain,输出,AI,传播,w5,反向,计算 From: https://www.cnblogs.com/jasonqiustar/p/18698620