开发者学堂课程【神经网络概览及算法详解:自组织特征映射神经网络-2】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/935
自组织特征映射神经网络-2
内容介绍:
一、Kohonen算法步骤
二、Kohonen算法结果
一、Kohonen算法步骤
克霍宁网络,有一个非常著名的例子,八九年的时候克霍宁本人提出来的,他觉得既然可以按设计一个网络,那能不能去对一些常见的事物应用一下,看看效果,他找了16种动物,对这些动物进行一些属性收集,这动物儿包括猫,牛,狗,等都是一些常见的动物,根据人类的经验,可以判断哪些动物更相似,收集了动物的13个属性。大小,几条腿,有没有翅膀等等这些因素,整理了一个表,
想通过克霍宁网络对这些动物进行一个分类,观察哪些动物最终输出的二维面阵上比较接近,挨着的,我们就认为它的特征比较相似,我们人,对这些常见的动物还是有一些判别能力的,所以我们可以直观的从结果上来判断这个网络分类的结果好不好。
具体怎么做,第一个是整理数据,把16个动物,通过16个数特征来表示,比如说第一条记录是猫,那么它就在N1这个位置设成一,后边儿的15个值,从N2到N16都是零,第二个动物是牛,那么它就在N2这个位置设成一,其他的位置都是零,类似于用亚变量的方式,把这16个动物,16种动物融入到我们的特征里去。后半部分就是它的13个这个特征。
接着,是要设计网络结构,输入就是29个节点,有16个节点是用来表明它是哪一类动物,有13个节点,是这些动物本身的实际特征,所以是有29个节点,输出,就输入到一个十乘十的二维平面上,有十乘十等于100,总共有16种动物,那一定有相当多的一部分动物,它映射的区域,不止一个,可能多个区域组合起来。那么这个十乘十的平面如图,
我们最终的结果,是要把这些动物映射到这个平面的不同的小格格里去,然后看哪些动物的格格挨的比较近,那我们就认为这两种动物,或者这几种动物,它在特征上更相似。
接下来我们进行这个模式训练,初始化参数,包含这个权向量初始化,权向量归一化,把权向量,赋了一个零到一之间的随机数,然后建立一个初始邻域,我们假设这个初始邻域的设置为二,就是它能辐射到两个里边去。随着这个训练的次数增加而逐渐减小,
学习率就是指0.3除以T,随着训练次数增加,学习率按照这个新的(n’=n*e-N)e的N次方衰减,N是距离活动神经元的距离,仔细算了一下。得到获胜神经元及邻域了,
以第一条数据为例,我第一条数据是猫,我把猫的那个29个值输进来之后,然后和当前权重这个数组相乘,得到一个十乘十的输出,它就得到一堆这个值。因为它十乘十的,它最终是有竞争层,就是有100个神经元,那每个神经元对这个猫的输入都会有一个响应值,把这值全部算出来,找到最大的那个值,最大那个值就0.98,以0.98为中心,辐射两个辐射两个,就是说在标出来这个区域内,这些神经元有机会去更新权重,得到一个输出的机会。
然后公式,新的权重等于原来的权重加上学习率变化的学习率乘以输入和权重的差进行调整,那么,因为获胜神经元就知道了wi(t+1)=wi(t)+η(t,N)[xp-wiy(t)],It都知道了,所以就很容易去更新这个η,然后这个学习率,可以通过η的公式,η衰减的时候,是t除0.3,然后,它是它由这个e的分次方来来计算的。
这个XP,就是第P条输入的值,这个是非常容易算出来的,然后我们来判断是否结束了,是否这个训练可以结束了,就是学习率有没有缩减到一个小于阀值的值,或者训练次数达到约定的值。没有,我们就继续,因为我们这个例子,16条记录,我们就进行1000次训练。
二、Kohonen算法结果
最终训练出来,结果就这样,
用1到16标识了16种动物,然后它映射到十乘十的这个区域上来,不同的颜色不同的标号儿,就表明那类动物映射过来占了这个区域,比如说像这个10和15,是很难区分的,它们映射的区域基本上都重叠了,写的是十,是说最终输出最多的那一个是始态,它排名第二的可能就是15,两个是交叉起来的,然后还可以看到,比如说这个零和一,这还有15,它动物的名字填进来,十是house马,15,zebra是斑马,确实是相对度比较高的,
比如,owl,hawk猫头鹰和鹰还是相近度比较高的,比如像这个猫和牛,他认为相似度比较高,都是四个角,老虎,狼,狗这些相似度都比较高,没有16是,16是eagle,它占的这三个输出的这个格,它排名都不是第一,不是第二。
分别被这个猫头鹰和鹰给占去了,实际上,就是说这个eagle和猫头鹰还有这个hawk相似度是非常非常高的,大家可以自己去理解一下,
实际上这个实际的输出,和我们对整个这个动物基本的了解感觉还是比较一致的,这就是克霍宁网络,以及介绍的一个实际进行动物分类的例子。