神经网络学习笔记(七) 自组织竞争神经网络

自组织竞争神经网络

一、概述

自组织竞争神经网络是一种无监督的学习方法。与之前不同的是,前几节讲述的神经网络都是有标签,并且更新所有权值,但是他们并没有考虑到人体神经元的侧抑制现象,也就是在很多情况下,某一个神经元刺激仅能激活很少一部分神经元而不是所有神经元,这就体现了一种竞争的思想。竞争神经网络每次只更新一个被激活的权值并且没有标签去告诉他应该怎么做,这更像是一种聚类方法。

二、网络模型

这里写图片描述

自组织竞争神经网络共有三层:输入层、竞争层、输出层。
第一层为输入层
输入方式为线性输入。
第二层为竞争层
竞争层规则:1.每次只更新获胜神经元的权值。
2.与输入层全连接,层内神经元间无连接。
第三层为输出层
输出函数为线性函数,将训练好的权值线性输出。

三、网络建立详解

设置30个二维点,将他们分成2类。

第一步:设置变量
1.权值矩阵:随机矩阵,行为分的类别,列为维度。mat[2,2];
2.迭代次数:maxiterator=2000。
第二步:数据归一化
为了更好的达到稳态,过大的或者变化过大的值会造成整个网络训练的不稳定,这是就需要数据归一化。我们将所有的x,y的值归一化到(-1,1)中。
第三步:输入数据,得到输出
输入所有输入的数据,利用数据乘上相应的权值得到输出结果。
第四步:调整权值
利用竞争策略,找出输出结果最大的值也就是获胜神经元,我们只调整这一个神经元,这样就可以让权值更接近聚类中心。

四、网络实现(Matlab非API实现)

输入数据

x=[4.1,1.8,0.5,2.9,4.0,0.6,3.8,4.3,3.2,1.0,3.0,3.6,3.8,3.7,3.7,8.6,9.1,7.5,8.1,9.0,6.9,8.6,8.5,9.6,10.0,9.3,6.9,6.4,6.7,8.7];
y=[8.1,5.8,8.0,5.2,7.1,7.3,8.1,6.0,7.2,8.3,7.4,7.8,7.0,6.4,8.0,3.5,2.9,3.8,3.9,2.6,4.0,2.9,3.2,4.9,3.5,3.3,5.5,5.0,4.4,4.3];

data=[x;
    y];

数据归一化

[dataone]=mapminmax(data);
x=dataone(1,:);
y=dataone(2,:);

规则数据的建立

w=rand(2,2);
sigma=0.2;

maxiterator=2000;

迭代循环,权值调整

for i=1:maxiterator
    k=randi(30);
    ds=dataone(:,k);
    out=w*ds;
    [~,ind]=max(out);
    w(ind,:)=w(ind,:)+sigma*(ds'-w(ind,:)); 
end

运行结果

初始值:

这里写图片描述

分类结果:2类 权值中心

这里写图片描述

分类结果:2类 分类演示

这里写图片描述

结束语

竞争神经网络考虑了神经元侧抑制问题,并且无标签的训练相当于是聚类,也就是无监督的学习。下一节将会开始学习反馈神经网络。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值