推导CNN中的BP误差反向传播算法

本文详细介绍了卷积神经网络(CNN)中误差反向传播算法的推导过程,通过梯度下降更新网络权重和偏置,以最小化误差(如平方误差)并逐步优化网络性能。首先,文章解释了反向传播的由来和基本思想,然后通过一个实例展示了误差反向传播的过程,最后给出了最一般情况下的反向传播算法的公式推导和伪代码。
摘要由CSDN通过智能技术生成

实际上就是一个:梯度下降反向传播更新

如果熟知高数和懂最优化的梯度下降理论,可以直接跳到

一、反向传播的由来

在我们开始DL的研究之前,需要把ANN—人工神经元网络以及bp算法做一个简单解释。

输入层/输入神经元,输出层/输出神经元,隐层/隐层神经元,权值,偏置,激活函数

接下来我们需要知道ANN是怎么训练的,假设ANN网络已经搭建好了,在所有应用问题中(不管是网络结构,训练手段如何变化)我们的目标是不会变的,那就是网络的权值和偏置最终都变成一个最好的值,这个值可以让我们由输入可以得到理想的输出,于是问题就变成了y=f(x,w,b)(x是输入,w是权值,b为偏置,所有这些量都可以有多个,比如多个x1,x2,x3……最后f()就好比我们的网络它一定可以用一个函数来表示,我们不需要知道f(x)具体是怎样的函数,从小我们就认为只要是函数就一定要是可表示的,像f(x)=sin(x)一样,但是请摈弃这样的错误观念,我们只需要知道一系列的w和b决定了一个函数f(x),这个函数让我们由输入可以计算出合理的y

最后的目标就变成了尝试不同的w,b值,使得最后的y=f(x)无限接近我们希望得到的值t

但是这个问题依然很复杂,我们把它简化一下,让误差(y-t)^2的值尽可能的小。于是原先的问题化为了C(w,b)=(f(x,w,b)-t)^2取到一个尽可能小的值。这个问题不是一个困难的问题,不论函数如何复杂,如果C降低到了一个无法再降低的值,那么就取到了最小值(假设我们不考虑局部最小的情况)

如何下降?数学告诉我们对于一个多变量的函数f(a,b,c,d,……)而言,我们可以求得一个向量,它称作该函数的梯度,要注意的是,梯度是一个方向向量,它表示这个函数在该点变化率最大的方向(这个定理不详细解释了,可以在高等数学教材上找到)于是C(w,b)的变化量ΔC就可以表示成

其中

是该点上的微小变化,我们可以随意指定这些微小变化,只需要保证ΔC<0就可以了,但是为了更快的下降,我们为何不选在梯度方向上做变化呢?

事实上,梯度下降的思想就是这样考虑的,我们使得

从而保证C一直递减,而对于w来说只要每次更新

即可。这个公式表示误差C在沿着w的负梯度方向(下降最快的方向)走 η

ok,到这里,似乎所有的问题都解决了,让我们重新整理一下思绪,我们将问题转化了很多步:

网络权值偏置更新问题 ==> f(x,w,b)的结果逼近t ==> C(w,b)=(f(x,w,b)-t)^2取极小值问题 ==> C(w,b)按梯度下降问题 ==>取到极小值,网络达到最优

千万别忘了一点!!推导基于一个前提:我们已经提前知道了当前点的梯度。然而事实并非如此!!

这个问题困扰了NN研究者多年,1969年M.Minsky和S.Papert所著的《感知机》一书出版,它对单层神经网络进行了深入分析,并且从数学上证明了这种网络功能有限,甚至不能解决象"异或"这样的简单逻辑运算问题。同时,他们还发现有许多模式是不能用单层网络训练的,而对于多层网络则没有行之有效的低复杂度算法,最后他们甚至认为神经元网络无法处理非线性问题。然而于1974年,Paul Werbos首次给出了如何训练一般网络的学习算法—back propagation。这个算法可以高效的计算每一次迭

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值