【MLP】多层感知机网络——BPN反向传播神经网络

BPN(Back Propagation Net)

反向传播神经网络是对非线性可微分函数进行权值训练的多层网络,是前向神经网络的一种。

BP网络主要用于:

  • 1)函数逼近与预测分析:用输入矢量和相应的输出矢量训练一个网络,逼近一个函数或预测未知信息;
  • 2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;
  • 3)分类:把输入矢量以所定义的合适方式进行分类;
  • 4)数据压缩:减少输出矢量维数以便于传输与存储。

比如,一个三层BPN结构如下:

  由输入层、隐含层和输出层三层组成。其中每一层的单元与之相邻层的所有单元连接,同一层的单元之间没有连接。当一对学习样本提供给网络后,神经元的激活值从输入层经各中间层向输出层传播,在输出层的各神经元获得网络的输入响应。接下来,按照减少目标输出与实际误差的方向,从输出层经过各中间层逐层修正各连接权值,最后回到输入层。

感知器(Perception)类型

  单个感知器能够完成线性可分数据的分类问题,是一种最简单的可以“学习”的机器。但他无法解决非线性问题。比如下图中的XOR问题:即(1,1)(-1,-1)属于同一类,而(1,-1)(-1,1)属于第二类的问题,不能由单个感知器正确分类。

反向传播学习的BP算法

  反向传播算法也称BP算法。由于这种算法在本质上是一种神经网络学习的数学模型,所以,有时也称为BP模型。

  BP算法是为了解决多层前向神经网络的权系数优化而提出来的;所以,BP算法也通常暗示着神经网络的拓扑结构是一种无反馈的多层前向网络。故而.有时也称无反馈多层前向网络为BP模型。

在这里,并不要求过于严格去争论和区分算法和模型两者的有关异同。感知机学习算法是一种单层网络的学习算法。在多层网络中.它只能改变最后权系数。因此, 感知机学习算法不能用于多层神经网络的学习。1986年,Rumelhart提出了反向传播学习算法,即BP(backpropagation)算法。这 种算法可以对网络中各层的权系数进行修正,故适用于多层网络的学习。BP算法是目前最广泛用的神经网络学习算法之一,在自动控制中是最有用的学习算法。

MLP的缺陷

1.网络的隐含节点个数选取问题至今仍是一个 世界难题(Google, Elsevier, CNKI);

2.停止阈值、学习率、动量常数需要采用”trial-and-error”法,极其耗时(动手实验);

3.学习速度慢;

4.容易陷入局部极值,学习不够充分。

时间: 2024-10-14 03:13:49

【MLP】多层感知机网络——BPN反向传播神经网络的相关文章

BPN反向传播神经网络

BP算法细节 参数说明:假设有n层.J表示代价函数,和上面的E是同样的意思,只不过用不同的字母写而已. 分析:要想知道第l层的第i个结点的残差,必须知道该节点所连接的下一层的各个结点的权值,以及这些结点的残差,幸亏第l+1层已经计算出来了残差,你只要把后面一层的每个结点j的残差乘以该结点与这一层的结点i相连的权值,然后加和,最后别忘了乘以这一层的激活方式的导数. 最后说明一点,BP传播,计算各层的各点的残差是关键,残差是总的代价函数对于该点的net的偏导,从倒数第二层开始,求残差就要用到其后面的

反向传播神经网络极简入门

反向传播神经网络极简入门 我一直在找一份简明的神经网络入门,然而在中文圈里并没有找到.直到我看到了这份162行的Python实现,以及对应的油管视频之后,我才觉得这就是我需要的极简入门资料.这份极简入门笔记不需要突触的图片做装饰,也不需要赘述神经网络的发展历史:要推导有推导,要代码有代码,关键是,它们还对得上.对于欠缺的背景知识,利用斯坦福大学的神经网络wiki进行了补全. 单个神经元 神经网络是多个“神经元”(感知机)的带权级联,神经网络算法可以提供非线性的复杂模型,它有两个参数:权值矩阵{W

DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解 @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/43221829 本文介绍多层感知机算法,特别是详细解读其代码实现,基于python theano,代码来自:Multilayer Perceptron,如果你想详细了解多层感知机算法,可以参考:UFLDL教程,或者参考本文第一部分的算法简介. 经详细注释的代码:放在我的gith

反向传播神经网络入门

http://www.hankcs.com/ml/back-propagation-neural-network.html 单个神经元 神经网络是多个"神经元"(感知机)的带权级联,神经网络算法可以提供非线性的复杂模型,它有两个参数:权值矩阵{Wl}和偏置向量{bl},不同于感知机的单一向量形式,{Wl}是复数个矩阵,{bl}是复数个向量,其中的元素分别属于单个层,而每个层的组成单元,就是神经元. 神经元 神经网络是由多个"神经元"(感知机)组成的,每个神经元图示如

反向传播神经网络(BP)

①输入.输出矢量及问题的阐述 由题意输入变量取值范围为e={-2,-1,0,1,2}和ec={-2,-1,0,1,2},则输入矢量有25种情况,分别如下所示: 则由T=int((e+ec)/2) ,采用向下取整,可得输出矢量T为: 该问题可描述为通过训练BP神经网络实现模糊控制规则T=int((e+ec)/2),并达到网络输出与期望值误差小于0.001.选取较好的BP神经网络参数,包括隐含层节点个数.学习速率等.同时对不同的学习训练算法进行比较,并通过内插方法测试网络. ②给出网络结构 由于有两

编写C语言版本的卷积神经网络CNN之三:CNN的误差反向传播过程

原创文章 转载请注册来源http://blog.csdn.net/tostq 上一节我们介绍了卷积神经网络的前向传播过程,这一节我们重点介绍反向传播过程,反向传播过程反映神经网络的学习训练过程. 误差反向传播方法是神经网络学习的基础,网络上已经有许多相关的内容了,不过关于卷积网络的误差反向传递的公式推导却比较少,而且也不是很清晰,本文将会详细推导这个过程,虽然内容很复杂,但却值得学习. 首先我们需要知道的是误差反向传播的学习方法,实际是梯度下降法求最小误差的权重过程.当然我们的目的是求误差能量关

实现一个反向传播人工神经网络

为何实现一个BP神经网络? “What I cannot create, I do not understand” — Richard Feynman, February 1988 实现一个BP神经网络的7个步骤 选择神经网络 结构 随机 初始化权重 实现 前向传播 实现 成本函数 $J(\Theta)$ 实现反向传播算法并计算 偏微分 $\frac{\partial}{\partial\Theta_{jk}^{(i)}}J(\Theta)$ 使用 梯度检查 并在检查后关闭 使用梯度下降或其它优

cs231n(三) 误差反向传播

摘要 本节将对反向传播进行直观的理解.反向传播是利用链式法则递归计算表达式的梯度的方法.理解反向传播过程及其精妙之处,对于理解.实现.设计和调试神经网络非常关键.反向求导的核心问题是:给定函数 $f(x)$  ,其中 $x$ 是输入数据的向量,需要计算函数 $f$ 关于 $x$ 的梯度,也就是 $\nabla f(x)$ . 之所以关注上述问题,是因为在神经网络中 $f$ 对应的是损失函数 $L$,输入里面包含训练数据和神经网络的权重.举个例子,损失函数可以是 Hinge Loss ,其输入则包

DL学习笔记-反向传播算法的理解

作者:杜客链接:https://zhuanlan.zhihu.com/p/21407711来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Backprop Note,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和巩子嘉进行校对修改.译文含公式和代码,建议PC端阅读. 原文如下: 内容列表: 简介 简单表达式和理解梯度 复合表达式,链式法则,反向传播 直观理解反向传播 模块:Si