反向传播算法的介绍 如何理解神经网络里面的反向传播算法

作者&投稿:恭妹 (若有异议请与网页底部的电邮联系)

反向传播算法(英:Backpropagation algorithm,简称:BP算法)是一种监督学习算法,常被用来训练多层感知机。 于1974年,Paul Werbos[1]首次给出了如何训练一般网络的学习算法,而人工神经网络只是其中的特例。不巧的,在当时整个人工神经网络社群中却无人知晓Paul所提出的学习算法。直到80年代中期,BP算法才重新被David Rumelhart、Geoffrey Hinton及Ronald Williams[2][3]、David Parker[4]和Yann LeCun[5]独立发现,并获得了广泛的注意,引起了人工神经网络领域研究的第二次热潮。BP算法是Delta规则的推广,要求每个人工神经元(节点)所使用的激励函数必须是可微的。BP算法特别适合用来训练前向神经网络。



如何理解神经网络里面的反向传播算法~

反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。其主要思想是:
(1)将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
(2)由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。


反向传播算法的思想比较容易理解,但具体的公式则要一步步推导,因此本文着重介绍公式的推导过程。


1. 变量定义


上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。如图,先定义一些变量:
表示第层的第个神经元连接到第层的第个神经元的权重;
表示第层的第个神经元的偏置;
表示第层的第个神经元的输入,即:

表示第层的第个神经元的输出,即:

其中表示激活函数。

2. 代价函数
代价函数被用来计算ANN输出值与实际值之间的误差。常用的代价函数是二次代价函数(Quadratic cost function):


其中,表示输入的样本,表示实际的分类,表示预测的输出,表示神经网络的最大层数。

3. 公式及其推导
本节将介绍反向传播算法用到的4个公式,并进行推导。如果不想了解公式推导过程,请直接看第4节的算法步骤。
首先,将第层第个神经元中产生的错误(即实际值与预测值之间的误差)定义为:



本文将以一个输入样本为例进行说明,此时代价函数表示为:



公式1(计算最后一层神经网络产生的错误):



其中,表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算。公式1的推导过程如下:



公式2(由后往前,计算每一层神经网络产生的错误):



推导过程:



公式3(计算权重的梯度):



推导过程:



公式4(计算偏置的梯度):



推导过程:



4. 反向传播算法伪代码

输入训练集

对于训练集中的每个样本x,设置输入层(Input layer)对应的激活值:
前向传播:


计算输出层产生的错误:

反向传播错误:


使用梯度下降(gradient descent),训练参数:

  反向传播算法(BP算法)主要是用于最常见的一类神经网络,叫多层前向神经网络,本质可以看作是一个general nonlinear estimator,即输入x_1 ... x_n 输出y,视图找到一个关系 y=f(x_1 ... x_n) (在这里f的实现方式就是神经网络)来近似已知数据。为了得到f中的未知参数的最优估计值,一般会采用最小化误差的准则,而最通常的做法就是梯度下降,到此为止都没问题,把大家困住了很多年的就是多层神经网络无法得到显式表达的梯度下降算法!

  BP算法实际上是一种近似的最优解决方案,背后的原理仍然是梯度下降,但为了解决上述困难,其方案是将多层转变为一层接一层的优化:只优化一层的参数是可以得到显式梯度下降表达式的;而顺序呢必须反过来才能保证可工作——由输出层开始优化前一层的参数,然后优化再前一层……跑一遍下来,那所有的参数都优化过一次了。但是为什么说是近似最优呢,因为数学上除了很特殊的结构,step-by-step的优化结果并不等于整体优化的结果!不过,好歹现在能工作了,不是吗?至于怎么再改进(已经很多改进成果了),或者采用其他算法(例如智能优化算法等所谓的全局优化算法,就算是没有BP这个近似梯度下降也只是局部最优的优化算法)那就是新的研究课题了。

反向传播算法
答:反向传播算法简称BP算法,是适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。一、反向传播算法简介 反向传播算法即误差...

嵌入式与神经网络(四):DNN算法
答:对于下图的三层DNN,利用和感知机一样的思路,我们可以利用上一层的输出计算下一层的输出,也就是所谓的DNN前向传播算法。4 DNN前向传播算法 所谓的DNN前向传播算法就是利用若干个权重系数矩阵W,偏倚向量b来和输入值向量x进行一系列线性运算和激活运算,从输入层开始,一层层的向后计算,一直到运算到...

读懂反向传播算法(bp算法)
答:反向传播算法可以说是神经网络最基础也是最重要的知识点。基本上所以的优化算法都是在反向传播算出梯度之后进行改进的。同时,也因为反向传播算法是一个递归的形式,一层一层的向后传播误差即可,很容易实现(这部分听不懂没关系,下面介绍)。不要被反向传播吓到,掌握其核心思想就很容易自己手推出来。...

一文搞懂反向传播算法
答:但由于反向传播算法使得小蓝猫的反馈可以被传递到小女孩那进而产生间接误差,所以与小女孩直接相连的左侧权重矩阵可以通过间接误差得到权重更新,迭代几轮,误差会降低到最小。 上边的栗子从直观角度了解了反向传播,接下来就详细的介绍其中两个流程前向传播与反向传播,在介绍之前先统一一下标记。 如何将输入层的信号传输至...

反向传播算法的基本思想
答:反向传播算法是一种通过计算输出误差对网络中各个连接权重的贡献,然后利用梯度下降法来更新权重的算法。它通过前向传播将输入数据从输入层传递到输出层,然后根据损失函数计算输出误差,再通过反向传播将误差从输出层逐层传递回隐藏层,并根据计算得到的误差贡献更新权重。反向传播算法的核心思想是不断调整权重...

反向传播算法
答:在神经网络训练的殿堂中,反向传播(BP)算法如同璀璨的星辰,与梯度下降法携手,共同照亮了优化权重的路径。它在监督学习的广阔天空下熠熠生辉,对那些可微激励函数的神经元网络施展着魔法。这里的主角,正是那不可或缺的代价函数,它是机器学习的心脏,衡量着预测与实际值之间的差距,驱动着我们不断调整...

反向传播算法的介绍
答:反向传播算法(英:Backpropagation algorithm,简称:BP算法)是一种监督学习算法,常被用来训练多层感知机。 于1974年,Paul Werbos[1]首次给出了如何训练一般网络的学习算法,而人工神经网络只是其中的特例。不巧的,在当时整个人工神经网络社群中却无人知晓Paul所提出的学习算法。直到80年代中期,BP算法...

逆向传播学是什么意思
答:逆向传播学(Backpropagation)是一种人工神经网络算法,用于训练多层前馈神经网络。其主要思想是将误差从输出层反向传递到输入层,更新每个神经元的权重和偏置。逆向传播算法是从训练数据中学习特征的一种方式,经常应用于图像识别、语音识别、自然语言处理等领域。逆向传播算法具有以下几个特点:首先,它是一...

一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
答:下面是基于随机梯度下降更新参数的反向传播算法:单纯的公式推导看起来有些枯燥,下面我们将实际的数据带入图1所示的神经网络中,完整的计算一遍。我们依然使用如图5所示的简单的神经网络,其中所有参数的初始值如下:输入的样本为(假设其真实类标为"1"):第一层网络的参数为:第二层网络的参数为:第...

梯度下降法和反向传播算法是什么关系?
答:探索深度学习之谜:梯度下降法与反向传播算法的不解之缘 在机器学习的浩瀚星海中,梯度下降法犹如导航灯塔,引领我们寻找最优化的路径。这是一种广泛应用于各种优化问题的通用策略,其核心思想是沿着目标函数的梯度方向,犹如接力赛跑般调整参数,直至目标函数的山峰降至最低点。在深度学习的殿堂里,梯度下降...