失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 机器学习(二)——竞争神经网络-SOM

机器学习(二)——竞争神经网络-SOM

时间:2022-04-11 08:07:29

相关推荐

机器学习(二)——竞争神经网络-SOM

竞争神经网络(无导师学习)

竞争型神经网络是基于无监督学习(Unsupervised learning)方法的神经网络的一种重要类型,它经常作为基本的网络形式,构成其它一些具有自组织能力的网络,如自组织映射网络(SOM)、自适应共振理论网络、学习向量量化网络等。

竞争型神经网络只有两层(输入层和核心输出层),如图所示:

对于模式样本本身具有较明显的分类特征,竞争型神经网络可以对其进行正确的分类,网络对同一类或相似的输入模式具有较稳定的输出响应。但也存在一些问题:

(1)当学习模式样本本身杂乱无章,没有明显的分类特征时,网络对输入模式的响应呈现振荡的现象,即对同一类输入模式的响应可能激活不同的输出神经元,从而不能实现正确的分类。当各类模式的特征相近时,也会出现同样的状况。

(2)在权值和阈值的调整过程中,学习率的选择在学习速率和稳定性之间存在矛盾,而不象前面我们介绍的其它学习算法,可以在刚开始时采用较大的学习率,而在权值和阈值趋于稳定时,采用较小的学习率。而竞争型神经网络当增加新的学习样本时,权值和阈值可能需要比前一次更大的调整。

(3)网络的分类性能与权值和阈值的初始值、学习率、训练样本的顺序、训练时间的长短(训练次数)等都有关系,而又没有有效的方法对各种因素的影响加以评判。

(4)在MATLAB神经网络工具箱中,以trainr函数进行竞争型神经网络的训练,用户只能限定训练的最长时间或训练的最大次数,以此终止训练,但终止训练时网络的分类性能究竟如何,没有明确的指标进行评判。

SOM神经网络(自组织特征映射神经网络)(无导师学习)

相比于bp神经网络算法,som相对来说比较容易理解。自组织神经网络,是一种用于聚类的神经网络算法,从名字便可以看出,这是一种无监督式的算法,意味着,它不需要任何训练样本,便可以直接对输入样本根据其特征 分类,将具有相似特征的划分为一类。

SOM为层次型结构。典型结构是:输入层加竞争层。

输入层:接收外界信息,将输入模式向竞争层传递,起“观察”作用

竞争层:负责对输入模式进行“分析比较”,寻找规律并归类。

因为Kohonen根据生理学的发现,认为神经网络在接受外界输入时,将会分成不同的区域,不同的区域对不同的模式具有不同的响应特征。如下图,人对猫和狗的概念储存在不同区域。

程序:

%% I. 清空环境变量clear allclc%% II. 训练集/测试集产生%%% 1. 导入数据load water_data.mat%%% 2. 数据归一化attributes = mapminmax(attributes);%%% 3. 训练集和测试集划分% 训练集——35个样本P_train = attributes(:,1:35);T_train = classes(:,1:35);% 测试集——4个样本P_test = attributes(:,36:end);T_test = classes(:,36:end);%% III. 竞争神经网络创建、训练及仿真测试%%% 1. 创建网络net = newc(minmax(P_train),4,0.01,0.01);%%% 2. 设置训练参数net.trainParam.epochs = 500;%%% 3. 训练网络net = train(net,P_train);%%% 4. 仿真测试% 训练集t_sim_compet_1 = sim(net,P_train);T_sim_compet_1 = vec2ind(t_sim_compet_1);% 测试集t_sim_compet_2 = sim(net,P_test);T_sim_compet_2 = vec2ind(t_sim_compet_2);%% IV. SOFM神经网络创建、训练及仿真测试%%% 1. 创建网络net = newsom(P_train,[4 4]);%%% 2. 设置训练参数net.trainParam.epochs = 200;%%% 3. 训练网络net = train(net,P_train);%%% 4. 仿真测试% 训练集t_sim_sofm_1 = sim(net,P_train);T_sim_sofm_1 = vec2ind(t_sim_sofm_1);% 测试集t_sim_sofm_2 = sim(net,P_test);T_sim_sofm_2 = vec2ind(t_sim_sofm_2);%% V. 结果对比%%% 1. 竞争神经网络result_compet_1 = [T_train' T_sim_compet_1']result_compet_2 = [T_test' T_sim_compet_2']%%% 2. SOFM神经网络result_sofm_1 = [T_train' T_sim_sofm_1']result_sofm_2 = [T_test' T_sim_sofm_2']

如果觉得《机器学习(二)——竞争神经网络-SOM》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。