三层的神经网络和感知器算法 matlab机算法的区别和联系

为什么感知机(单层神经网络)不能解决异或问题 | 日志 | 果壳网 科技有意思
之前学习神经网络,说道感知机不能解决异或问题,当时记住了,但是没有深入的思考,不能就不能呗,记住得了。后来仔细想了一下,原来是这样,现在记下来。 所谓异或问题,就是
就是说两个不一样,就是真(1),如果把异或问题表现为二维的分布,就是这样这样就很直观的把异或问题表现为点在二维平面上分布的问题。那么感知机有什么作用?我的理解就是在一个超平面上画一条线,线的一边为一类。如果感知机只有两个输入,就是在二维平面上,划线然后分类。如上图所示,在”异或“问题上找不到一条直线能把X和O分开,这就是说这是一个不能用直线分类的问题,这类问题叫非线性问题。同理,“同或”问题一样不能解决。如果是“与”“或”问题就是可以解决的,这个可以自己在纸上画一下,一条线就能给分开。所谓的感知机不能解决异或问题就是不能解决画一条线的分类问题。
本文由授权()发表,文章著作权为原作者所有。
不仅仅是感知机, 所有的线性分类器都有这样的问题,包括LDA(Linear discriminant analysis), linear-SVM, Logistic regression都不能做XOR。 但这些算法还是十分流行,因为现实的机器学习问题中XOR的情况并不是很多。
单层神经网络算法(感知机)无法对异或等非线性可分样本集合进行分类,但是多神经网络可以。
训练集线性不可分
(C)2016果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话: 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
神经网络――感知机
下载积分:1000
内容提示:神经网络――感知机
文档格式:PPT|
浏览次数:0|
上传日期: 17:52:28|
文档星级:
该用户还上传了这些文档
神经网络――感知机
官方公共微信【图文】神经网络――感知机_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
神经网络――感知机
上传于||暂无简介
大小:754.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢机器学习(2)
算法学习(14)
之前做车牌识别的时候,在字符识别(OCR)时,使用的是人工神经网络(ANN),这里总结介绍一下人工神经的相关知识。
1.神经网络
人工神经网络(ANN)又称神经网络(NN),是一种模拟人脑的学习系统的生物模型。神经网络的由大量相互连结的节点构成一个复杂的网络结构,每个节点都有多个输入和一个输出,并且每个输入对应有一个权重因子,节点的输出就是所有这些输入与权重乘积的耦合。
通俗的来讲,神经网络就是一个学习器,给它一组输入,它会得到一组输出,神经网络里的节点相互连结决定了输入的数据在里面经过怎么样的计算。神经网络具有这个功能:通过大量的输入,神经网络通过调整自身的连接情况,给出我们的预期输出。
1.2 神经网络的作用
神经网络对于逼近真实数值、离散值或向量值的目标函数提供了一种健壮性很强的方法,现已被广泛应用到视觉场景分析、手写字符识别、语音识别、人脸识别等。计算机识别物体的过程可以描述为:对象-特征-类别,理论上都可以使用神经网络来解决。
2.1感知器结构
一个感知器的结构图如下:
这里的感知器,也就是我们上面说的神经网络中的节点。感知器是以一组实数向量作为输入,计算这些输入的线性组合,如果结果大于设定的阈值就输出1,否则输出-1.上图的感知器就可以表示为:
这里把 - w0 看成是上面提到的阈值,w1到wn是对应的权重,o(x)简单来说就是将输入向量按一组权重进行线性加权求和后做的一个符号函数。
我们可以把感知器看成是n维实例空间(点空间)中的超平面的决策面,平面一侧的所有实例输出1,对另一侧的实例输出-1。决策平面方程为:
也就是说,当我们输入两类不同的实物的时候(2类样本数据),对已一类实物,感知器输出为1,而另一类则输出-1.但是这里有一个限制:并不是任意的样本都可以找到这样的决策超平面,只有线性可分的样本空间才可以找到超平面或者找到一组权值。
由上面的分析,我们希望找到一组这样的权值,对于我们输入的每一组向量,总能够得到一个我们期望的值。但是单个感知器只能得到2个结果,输出1和-1。
在实际的应用当中,我们输入的数据样本往往不是线性可分的,即使是2维的数据,也可能不是线性可分的:
对于非线性可分的样本数据,上诉的感知器则无能为力了。于是乎,提出一种非线性映射,产生了激活函数的概念。激活函数是一种非线性函数同时是可微的,可微是为了后面的权重调整。因为我们需要知道权重是怎么影响最终的输出的,我们要根据输出来调节那些权重向量,也就是后面讲到的梯度下降法则。
2.2 激活函数
激活函数有很多种,这里我们选用的是S型激活函数,它将一维空间映射到[0,1]和[-1,1]。S型激活函数sigmoid函数和它的导数为:
经过这样的非线性映射后,感知器的结构变成了:
结构里的w0成为偏置,可以理解为有一个x0=1的输入。对于上述的结构,我们可以有如下的结论:
(1)对于任意的一组输入和一个我们预想的中[0,1]之间的输出,我们总可以找到一组权值向量使得
(2)对于很多组这样的输入,我们可以通过不断的调整权值,来使得它们的输出接近于我们预想的输出。
3.反向传播算法
上面的分析,我们知道感知器主要是通过非线性映射后调整输入权值来获得预期的输出的。那么这一组权值又是怎么得到的呢?我们需要在向量空间里搜索最合适的权值向量,但是不能毫无章法的搜索,需要有一定的理论依据,梯度下降就是一个很好的方法。
首先,我们来定义输出误差:对于任意一组输入,感知器的输出与我们预期的输出之间的误差值就称为输出误差。
上式的D表示所有的输入实例,或者说是样本,d代表的是一个样本实例,Od表示感知器的输出,td代表我们预想的输出。
那么,我们的目标就是寻找一组权值向量,使得这个误差最小,显然这可以通过求导来实现。导数的意义是提供一个方向,沿着这个方向改变权值,将会让总的误差变大,更形象的叫它为梯度。
梯度是E最陡峭的上升方向,那么梯度下降的训练法则就是:
梯度下降是一种重要的最优化算法,但是使用的时候存在2个问题:
(1)有时收敛过程非常缓慢;
(2)如果误差曲面上有多个局部极小值,那么不能保证这个过程会找到全局最小值。
为了解决上述问题,实际应用中采用的是梯度下降的一个变体–随机梯度下降。上面的误差公式是针对于所有训练样本而得到的,而随机梯度下降的思想是根据每个单独的训练样本来更新权值:
这样,推导后我们得到的最终权值更新公式为:
有了上述的权值更新公式,我们就可以通过输入大量的样本数据,根据我们的预期输出结果不断地调整权值,从而最终得到一组权值,使得我们的sigmoid函数能够对一个新的样本输入得到正确或者无线接近的结果。
4.多层网络结构
4.1结构定义
多层网络,顾名思义就是有多个节点层结构组成的网络系统,它的每一层都是由若干神经元节点构成,该层的任意一个节点和上一层的每一个节点相连,由它们来提供输入,经过计算产生该节点的输出并作为下一层节点的输入。任何多层的网络结构必须由一个输入层、一个输出层。多层网络结构如下图所示:
上图是一个3层的网络结构,由一个输入层、一个输出层和一个隐藏层组成。一般来说隐藏层数目大于等于1,可以有更多。结构中的隐藏层的节点 i 与输入层的每一个节点相连,也就是节点 i 的输入为: ,同时与它相连的n条线代表了响应输入的权值。输入层与隐藏层之间的红色连线代表了偏置,即w0. 根据感知器结构,我们可以得到节点 i 的输出,将对应的输入与权值的乘积做线性求和,然后经过sigmoid函数计算,得到该节点的输出。
整个多层神经网络就是由一组输入开始,然后按每条连线的权值,进行一直的向前计算。可以对这个网络结构进行量化:首先它是一个三层的网络结构,第一层是一个输入层,它本身没有输入,也没有连线进来;第二层隐藏层有3个节点,并且有 3*(4+1)根连结线,每一个节点都有一个偏置线;最后一层是输出层,有4个节点,并且有4*(3+1)根连接线。所以整个网络结构为:
而每一层的结构为:
4.2 反向传播算法
在单个节点的感知器里,我们使用梯度下降法来调整输入权值,寻找最优权值向量,同样的,在多层网络结构中,我们也可以使用类似的方法来推导整个网络的权值更新法则。我们把这个方法叫做反向传播算法,因为它是从输出层开始向前逐层更新权值的。
首先,我们来看输出层的误差,不同于单个感知器节点(一个输出),多层网络结构具有多个输出,那么它的误差公式可以用LSM法则(最小均方法法则)来表示:
这里,outputs是网络输出单元的结合,D:所有训练样本空间,tkd和okd是与训练样例d和第k个单元输出相关的预期值与输出值。
接下来,我们的目标是搜索一个巨大的假设空间,这个空间由网络结构中所有可能的权值构成。如果用几何来描述的话,就是这个巨大的搜索空间构成的一个误差曲面,我们的目标就是找到这个误差曲面中的最小值点。显然,我们可以通过梯度下降来做。通过计算全面任何点的梯度方向,然后沿着反方向去改变权值,就好使得误差最小。
我们将感知器里的随机梯度下降法应用到多层网络的反向传播算法中。每处理一个样本实例,更新各个权值,通过大量的样本实例逐渐调整权值。对于每一次的训练样本d来说,它的输出误差为:
由多层网络结构图,我们知道,输出层的节点上的连线权值可以直接影响到最终的误差,而隐藏层节点上的连结线权值只能间接影响最后的结果,所以我们分两种情况来推导反向传播算法。
情况1:对于输出单元的权值训练法则:
我们知道每个节点前的所有连结线只能通过影响net(上面的公式)的结果来影响误差E,所以有:
也就是我们只有求出就可以了:
将上面的两个公式合并,就可以得到权值的更新法则:
我们把其中的 看成是与该节点相关的误差项,并用δ表示。
情况2:隐藏单元的权值训练法则
隐藏层中的任意连接线权值都是通过影响他的输出作为输入的下一层(downstream)的节点而最终影响误差的,所以隐藏层的推导如下:
所以隐藏层的更新法则为:
总结一下权值更新的步骤:
1)对于训练样本实例中的每一个把输入沿网络传播,计算出网络中每个单元u的输出 ou;
2)对于网络中的每个输出单元k,计算它的误差项δk:
3)对于网络中的每个隐藏层单元h,计算他的误差项δh:
4)更新每个网络权值ωji
这里的xji表示从单元i到单元j的输入,wji是单元i到单元j的权值。
上述的公式,有一些中间推导过程省略了,具体的详细公式推导可以查阅《机器学习》p74页。
5.人工神经网络的算法探讨
5.1 收敛性与局部最小值
反向传播算法实现了一种对可能的网络权值空间的下降搜索,它不断迭代从而 碱性训练样例的目标值与网络输出之间的误差。但在多层网络误差曲面中,可能含有多个不同的局部极小值,我们的梯度下降可以收敛到这些极小值中。因此,对于多层网络,反向传播算法仅能保证收敛到误差E的某个局部极小值,不一定收敛到全局极小值。
尽管缺乏对收敛到全局最小误差的保证,反向传播算法在实践中仍然是非常有效的函数逼近算法。对许多实际中的应用,人们发现局部极小值的问题没想象中的严重。因为局部极小值往往是对某一个权值来说的,对其他的权值未必就是极小值。事实上网络权值也多,误差曲面维数越多,也就越可能为梯度下降提供更多的”逃逸路线“让梯度下降离开相对该单个权值的局部极小值。
另外一个观点是,我们开始给权值初始化的值都非常小,接近于零。在这样小权值的情况下,sigoid函数可以近似堪为线性的,所以在权值变化的初期是不存在局部极小值的,而到了后期整个网络到了高度非线性的时候,可能这里的极小值已经很接近全局最小值了。
5.2 多层网络的处理能力
什么类型的函数可以使用多层网络来表示呢?
答案:任意函数。任意函数可以被一个由三层的网络已任意的精度逼近(Cybenko 1998)。但是值得注意的是,我们使用的梯度下降算法并没有搜索整个权值空间,所以我们可能户漏掉那个最合适的权值集合。
5.3 归纳偏置
什么是归纳偏置?举个例子,假如我们有两个样本
并且我们认为这2个样本是属于同一个类别的,即作为神经网络的输入,我们希望它们得到同意的输出。训练样本中只有这2个实例,但是我们需要得到的输出时,它的结果会和x1,x2的输出一样。神经网络的这种能力,我们称为归纳偏置能力,实际网络是在数据点之间的平滑插值。
5.4 过度拟合
因为我们收集到的样本中有些样本可能由于我们的分类错误等原因,造成一个错误的样本用例里,实际上神经网络对这种带有噪点的样本的适应性很强。但是在上面我们介绍的原理中,我们并没有规定权值迭代更新的终止条件,往往我们是设置了一个迭代次数来控制,也有可能造成,在训练的后期那些权值是过渡拟合那些噪点样本的。这个问题没有统一的解决方案,现在比较常用的方法就是通过交叉验证,即在训练的同时,桶一组校验样本进行测试,找出分类率回降的一个点,从而终止训练过程。
上面的交叉验证方法在可获得额外二等数据提供验证集合时工作的最好。然而,过度拟合问题对于小训练集合最为严重。在这种情况下,有时使用一种称为”k-fold交叉验证“的方法。这种方法进行k次不同的交叉验证,每次使用数据的不同分割作为训练集合和验证集合,然后对结果进行平均。
例如把m个实例分割成k个不相交的子集,每个子集有m/k个实例。然后进行k次交叉验证过程,每一次使用不同的子集作为验证集合,并合并其他子集作为训练集合。于是,每一个样例会在一次试验中被用作验证集合的成员,在k-1次试验中用作训练成员。在每一次试验中,都使用上面的交叉验证过程来决定在验证集合上取得的最佳性能的迭代次数i.然后计算这些i的均值 ui,最后运行一次反向传播算法,训练所有的m个实例并迭代ui次,此时没有验证集合。
reference:《机器学习》
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:25428次
排名:千里之外
原创:40篇
转载:36篇
(1)(3)(5)(9)(14)(4)(10)(1)(1)(5)(24)神经网络简述 - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了15618字,被39人关注,获得了10个喜欢
神经网络简述
一、什么是神经网络机器学习中谈论的神经网络是指“神经网络学习”,或者说,是机器学习和神经网络这两个学科领域的交叉部分[1]。在这里,神经网络更多的是指计算机科学家模拟人类大脑结构和智能行为,发明的一类算法的统称。神经网络是众多优秀仿生算法中的一种,读书时曾接触过蚁群优化算法,曾惊讶于其强大之处,但神经网络的强大,显然蚁群优化还不能望其项背。二、简要历史A、起源与第一次高潮。有人认为,神经网络的最早讨论,源于现代计算机科学的先驱——阿兰.图灵在1948年的论文中描述的“B型组织机器”[2]。二十世纪50年代出现了以感知机、Adaling为代表的一系列成功,这是神经网络发展的第一个高潮[1]。B、第一次低谷。1969年,马文.明斯基出版《感知机》一书,书中论断直接将神经网络打入冷宫,导致神经网络十多年的“冰河期”。值得一提的是,在这期间的1974年,哈佛大学Paul Webos发明BP算法,但当时未受到应有的重视[1]。C、第二次高潮。1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商问题上获得当时最好结果,引起轰动;Rumelhart等人重新发明了BP算法,BP算法迅速走红,掀起神经网络第二次高潮[1]。D、第二次低谷。二十世纪90年代中期,统计学习理论和支持向量机兴起,较之于这些算法,神经网络的理论基础不清晰等缺点更加凸显,神经网络研究进入第二次低谷[1]。E、深度学习的崛起。2010年前后,随着计算能力的提升和大数据的涌现,以神经网络为基础的“深度学习”崛起,科技巨头公司谷歌、Facebook、百度投入巨资研发,神经网络迎来第三次高潮[1]。日至15日,Google人工智能程序AlphaGo对阵韩国围棋世界冠军李世乭,以4:1大比分获胜,比众多专家预言早了十年。这次比赛,迅速在全世界经济、科研、计算机产业各领域掀起人工智能和深度学习的热烈讨论。F、展望。从几个方面讨论一下。1)、近期在Google AlphaGo掀起的热潮中,民众的热情与期待最大,甚至有少许恐慌情绪;计算机产业和互联网产业热情也非常巨大,对未来充满期待,各大巨头公司对其投入大量资源;学术界的反应倒是比较冷静的。学术界的冷静,是因为神经网络和深度神经网络的理论基础还没有出现长足的进步,其缺点还没有根本改善。这也从另一个角度说明了深度神经网络理论进步的空间很大。2)、"当代神经网络是基于我们上世纪六十年代掌握的脑知识。"关于人类大脑的科学与知识正在爆炸式增长。[3]世界上很多学术团队正在基于大脑机制新的认知建立新的模型[3]。我个人对此报乐观态度,从以往的仿生算法来看,经过亿万年进化的自然界对科技发展的促进从来没有停止过。3)、还说AlphaGo,它并不是理论和算法的突破,而是基于已有算法的工程精品。AlhphaGo的工作,为深度学习的应用提供了非常广阔的想象空间。分布式技术提供了巨大而廉价的计算能力,巨量数据的积累提供了丰富的训练样本,深度学习开始腾飞,这才刚刚开始。三、神经元模型
3.1、来源一直沿用至今的,是McChlloch和Pitts在1943年依据脑神经信号传输结构抽象出的简单模型,所以也被称作”M-P神经元模型“。3.2、数学模型
f函数像一般形如下图的函数,既考虑阶跃性,又考虑光滑可导性。
实际常用如下公式,因形如S,故被称作sigmoid函数。
把很多个这样的神经元按一定层次连接起来,就得到了神经网络。四、感知机(Perceptron)[1]
4.1、网络结构两层神经元组成,输入层接收外界输入信号,输出层是M-P神经元(只有输出层是)。4.2、数学模型感知机的数学模型和单个M-P神经元的数学模型是一样的,如因为输入层只需接收输入信号,不是M-P神经元。4.3、训练
4.4、缺点感知机只有输出层神经元是B-P神经元,学习能力非常有限。对于现行可分问题,可以证明学习过程一定会收敛。而对于非线性问题,感知机是无能为力的。五、其他常见神经网络
5.1、BP神经网络
BP神经网络全称叫作误差逆传播(Error Propagation)神经网络,一般是指基于误差逆传播算法的多层前馈神经网络。这里为了不占篇幅,BP神经网络将起篇另述。BP算法是迄今最为成功的神经网络学习算法,也是最有代表性的神经网络学习算法。BP算法不仅用于多层前馈神经网络,还用于其他类型神经网络的训练。5.2、RBF网络RBF网络全程径向基函数(Radial Basis Function)网络,是一种单隐层前馈神经网络,其与BP网络最大的不同是采用径向基函数作为隐层神经元激活函数。5.3、CNNs卷积神经网络(Convolutional neural networks,简称CNNs)是一种深度学习的前馈神经网络,在大型图片处理中取得巨大成功。卷积神经网络将起篇另述。5.4、RNNs
循环神经网络(Recurrent Neural Networks,RNNs)与传统的FNNs不同,RNNs引入定向循环,能够处理那些输入之间前后关联的问题。RNNs已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用[5]。RNNs将起篇另述。[5]六、参考[1]、《机器学习》,周志华著[2]、《模式识别(第二版)》,Richard O.Duda等著,李宏东等译[3]、《揭秘IARPA项目:解码大脑算法或将彻底改变机器学习》,Emily Singerz著,机器之心编译出品[4]、图片来源于互联网[5]、
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
数据分析/数据挖掘/科学计算
· 1人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:

我要回帖

更多关于 感知器学习算法 的文章

 

随机推荐