开发者学堂课程【神经网络概览及算法详解:竞争学习原理与策略】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/933
竞争学习原理与策略
内容介绍:
一、多层感知器网络的问题
二、生物神经系统的情况
三、自组织神经网络
四、竞争学习
一、多层感知器网络的问题:
多层感知器网络,就是MLP网络,它存在一系列的问题。
第一个问题就是在学习的过程中,MLP的所有的权重值理论上都需要进行调整,调整的过程中,就会存在两个最常见的问题,第一个是训练过程中计算量过大,明斯基在唱衰神经网络时一个非常重要的原因就是,这个多层感知器训练的时候计算量过大,在当时那个计算能力的情况下基本不可能的。
第二个问题,就是权重它可能不稳定,就是局部极小陷入一个局部最优值,或者是说,因为其他训练参数选择不合适,比如说学习速率等等,有可能引发震荡,不会固定的收敛到一个具体的值。
第二个问题就是依据于网络的误差来更新权重,把误差,可以看成一个平面儿或者一个曲面儿,曲面有时候特别复杂,并且起起伏伏,特别容易陷入局部的小值,也就是说求到的辛辛苦苦的训练得到的这个网络,其实并不是最理想的,有可能和你的预期结果相差比较大。
第三个问题就是我们依据误差准则来更新权重,误差准则它是固定的,或者是说事先约定好了,它在某种程度上来讲是固定的,不能随着环境的变化而进行相应的调整或改变,它的适应性比较差,根据我们对数据的了解,或者对模型的了解,最初就设定了依据误差来根据这个选择,是设定死的,不能灵活的自己根据实际情况儿来调整。还有一个问题就是其实MLP,它更适合于平稳的环境,各种对象,或者对象间的关系,或者是观察结果,它具有统计上的平稳性,也就是说,各项统计特性,不会随着时间的变化而发生太大的变化。对一些按部就班的,正常的,符合一定历史规律的这种数据,它是或者情况是比较适用的。
二、生物神经系统的情况
对应的生物神经系统的对上述问题,表现是这样的,第一个,人脑的学习是自主式的,可以应对一个非常复杂的,不平稳的,有干扰的环境,辨识学习目标,并获得知识,它属于没有导师的,无监督的自学模式。
第二点,就是人脑的工作方式和信息的存储,检索都是非固定模式的,它更接近于自组织的,就是人通过学习积累经验,对外界的环境做出响应,一旦这个响应得到了相应的奖励或者激励,错了就受到惩罚,这个过程中,根据这个反馈结果,他就会不断的修正,调整自己的这个相应的策略和方式,让这个结果,会变得更好。
再一个人的学习能力和记忆能力有弹性,有可塑性。通常用的知识你学的会比较好,记得也比较牢,不常用的,会慢慢的忘掉,对我们的MP网络来说肯定不是这样的。
再一个就根据研究,神经元中存在一定的抑制作用,它不但接受外界环境刺激,其他神经元的刺激,它也会受到周围神经元的抑制,如果周围的神经元比较活跃,那有可能会受到抑制,有可能也会受到激发。那另外一个人在响应外界环境的时候,那既能由底向上,又能从顶向下。通过这个简单对比,可以看到,我们所谓的人工神经网络,特别是这个多感多层感知器网络它和人脑相比还是差的非常远的,我们可以看到人脑在很多方面儿都大大的优于MLP的模型,本来就是一个仿生,我们能不能依据我们刚才提到的人脑的这些东西或者这些表现来设计一个新的拓扑结构的网络呢?
是有的。就是自组织神经网络,叫self organization a natural network sonn。
三、自组织神经网络
自组织神经网络,叫self organization a natural network,sonn,它又叫做自组织竞争神经网络,通过自动寻找样本中的内在规律和本质属性,自组织自适应的改变网络参数和结构,通常,它是通过竞争学习来实现的。
自组织神经网络,它还是属于前馈神经网络。采用无监督学习算法,思路是竞争层的神经元通过竞争选出一个获胜者,输出就代表了对输入模式的分类,比较简单的一个自组织神经网络的模型,底下这一层,是输入输入层,就输入节点上面这一层,层间有连接的这一层,它就是竞争层,然后输入进来的样本,它会去进行一个,就在这个竞争层的这个不同的神经元里,输出会产生一个竞争,那只有一个获胜者,最终的输出机会,只有这个获胜者有。其他的那失败的神经元就没有输出的机会了。
常见的自组织神经网络有几种,第一个叫自适应共振理论网络,叫art,还有自组织特征映射网叫som,还有对偶传播网络CPN的在后。还有对偶传播网络,CP等,在后续的课程里,它特别适合解决模式分类和识别方面的问题。
四、竞争学习
在学习算法上,这个自组织神经网络,模拟了生物神经系统的一些特点,包括兴奋,协调意志,竞争等等,它不像大多数神经网络那样,以网络的。误差或者是能量函数,作为算法的准则,我们讲的MLP,它是根据你的实际输出和我的预期输出的差,作为一个网络误差,通过这个误差来更正确的。后面儿我们还会讲到这个hope feel的网络,它就根据能量函数来作为算法准则的,但竞争学习不是。
竞争学习,它是指网络单元,群体中所有单元相互竞争,对外界刺激模式响应的权利就是我有输入,在竞争层,每一个神经元都会有一个输出,然后从这些竞争层的每个神经元的输出中去做一些比较,选择一个最佳的,让这一个神经元有输出机会,其他神经元没有,这就是竞争学习。
以上是一个神经元,实际上,更一般的形式是说,它不仅允许单个获胜者的出现,而是允许多个获胜者的出现,比如最常见的就是这个获胜的神经元,它会有一个小范围的辐射,就是和它挨的比较近的这些神经元,都会有一个输出,或者是说除了排名第一的有输出机会,那排名靠前的top几都有输出机会。
竞争学习的原理,这个学习规则,叫胜者为王(Winner-Take-All),介绍神经网络学习规则的时候已经介绍过了,top结构输入层。
有多个输入节点,竞争层有多个竞争节点,那竞争节点之间是有链接的,然后输出输出层,那么我们会把其中一层设置为竞争层,就是我们这个这个这一层,那么对于输入成输入的数据,竞争成所有的神经元,每一个都会有输出响应,那响应值最大的神经元在竞争中获胜,这个式子wTmx=max(wTx) ,输入对应的权重乘以输入的值,最大的那一个有输出的机会,非常简洁,只有获胜的神经元才有权调整它的向量调整量,就是AWm=a(X-Wm),其中α∈(0,1],按照这个来调。
它在更新的时候还是依据了两个值的差,但这个不叫网络误差,其实是个学习信号,如果wm减的是输出的话是学习信号,但wm减的是权重的值,通过这种学习规则,学习方式来调整我们的权重。然后这样在这个竞争学习过程中,竞争层的每个神经元所对应的权限量逐渐调整为输入样本空间的聚类中心。
画了一个圈,然后,那些样本都分布在圈上,有两个神经元初始化的时候取了随机值,然后在后续学习过程中,这两个神经元逐渐向聚类中心靠拢,最后把我们所有的样本数据分成了两类。
在实际应用中,通常会定义以获胜神经元为中心的邻域所在,邻域内的所有神经元都进行权重调整。