首页 > 其他分享 >【CMAC小脑网络】基于CMAC的目标分类matlab仿真

【CMAC小脑网络】基于CMAC的目标分类matlab仿真

时间:2022-10-10 15:32:25浏览次数:60  
标签:CMAC 输出 idx Len train matlab 存储单元 小脑


1.软件版本

MATLAB2021a
2.本算法理论知识

程序流程如下所示:

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_存储单元

 CMAC的基本原理为:对于每个输入,

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_随机数_02

中只有个单元为1,而其余的均为0,因此是一个稀疏矩阵。哈希编码是压缩稀疏矩阵的常用技术,具体方法是通过一个产生随机数的程序来实现的。以的地址作为随机数产生的程序的变量,产生的随机数作为的地址。由于产生的随机数限制在一个较小的整数范围内,因此远比小得多。显然,从到的压缩是一种多对少的随机映射。在中,对每一个样本有个随机地址与之对应,个地址存放的权值通过学习得到,其累加和即作为CMAC的输出。其表达式为: 

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_CMAC_03

其中,

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_权值_04

为第j个存储单元的权值,若激活,则其值为1,否则为0,只有个存储单元对输出有影响。相近的输入激活的存储单元有交叠,产生相近的输出,不相近的输入将产生不相近的输出。对应的误差表达式为:

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_CMAC_05

 CMAC算法中结果输出阶段从CMAC存储单元产生一实际输出,学习过程根据期望输出与实际输出的误差大小来更新CMAC存储单元中的权值。在常规CMAC算法中误差被平均分配到所有被激活的存储单元。设

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_存储单元_06

为某一状态,是经过第次迭代后存储在第个存储单元中的权值。常规CMAC更新算法为: 

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_CMAC_07

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_存储单元_08

为状态s的期望输出,

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_随机数_09

为状态s的实际输出,

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_权值_10

为学习常数。

 3.核心代码

function [Weight,Error] = func_CMAC_train(x,y,Iters,Learn_rate,Goals);

%最小值
Vmin = min(x);
%最大值
Vmax = max(x);
%位数
Xwidth = numel(x);
%量化
Qlen = 360;
%S空间
S_space = [1:Qlen];
%用于训练的样本个数
Len_train = 180;
%误差
Error = [];
%状态关联单元个数
Nuints1 = 6;
%相同关联单元个数
Nuints2 = 5;
%总关联单元数
Nuints_all= Qlen*Nuints1-(Qlen-1)*Nuints2;
%权值
Weight = zeros(1,Nuints_all);

%获取训练样本
P_train=zeros(1,Len_train);
T_train=zeros(1,Len_train);
for i=1:Len_train
P_train(i) = x(floor((i-1)*Xwidth/Len_train+1));
T_train(i) = y(floor((i-1)*Xwidth/Len_train+1));
end

%训练
for i=1:Iters
for j=1:Len_train
%量化S空间
S_idx = floor((P_train(j)-Vmin)/(Vmax-Vmin)*(Qlen-1)) + 1;
W_idx = (S_idx-1)*(Nuints1-Nuints2)+1;
%输出
T_predict(j) = sum(Weight(W_idx:W_idx+Nuints1-1));
%CMAC权值更新
for k=W_idx:W_idx+Nuints1-1
Weight(k) = Weight(k) + Learn_rate * (T_train(j)-T_predict(j)) / Nuints1;
end
end

error = 0;
for j=1:Len_train
error = error + (T_train(j)-T_predict(j))^2;
end

Error(i)=error;
%退出训练
if error<Goals
break;
end
end

 4.操作步骤与仿真结论

【CMAC小脑网络】基于CMAC的目标分类matlab仿真_随机数_11

 5.参考文献

[1]Zhou Xudong, Wang Guodong, 周旭东,等. Fuzzy CMAC Neural Network模糊小脑模型神经网络[J]. 自动化学报, 1998, 24(2):173-178.

A05-73
6.完整源码获得方式

方式1:微信或者QQ联系博主

方式2:​​订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码​

标签:CMAC,输出,idx,Len,train,matlab,存储单元,小脑
From: https://blog.51cto.com/u_15815923/5743807

相关文章