首页 > 其他分享 >【AI学习笔记6】链式法则与反向传播原理 Chain rule and BackPropagation principle

【AI学习笔记6】链式法则与反向传播原理 Chain rule and BackPropagation principle

时间:2025-02-04 23:20:21浏览次数:1  
标签:误差 链式法则 Chain 输出 AI 传播 w5 反向 计算

链式法则与反向传播原理 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

相关文章