1.线性神经网络:
线性神经网络可以采用基于最小二乘LMS的Widrow-Hoff学习规则调节网络的权值和阈值,和感知器一样,线性神经网络只能处理反应输入输出样本向量空间的线性映射关系,也只能处理线性可分问题。目前线性神经网络在函数拟合、信号滤波、预测、控制等方面有广泛的应用。线性神经网络和感知器网络不同,它的传递函数是线性函数,输入和输出之间是简单的纯比例关系,而且神经元的个数可以是多个。只有一个神经元的线性神经网络仅仅在传递函数上和感知器不同,前者是线性函数的传递函数,后者是阈值单元的传递函数,仅此而已。
2. 局限性
网络的误差曲面是一个多维抛物面,所以在学习速率足够小的情况下,对于基于最小二乘梯度下降原理(最小均方)进行训练的神经网络总是可以找到一个最优解。尽管如此,对线性神经网络的训练并不能一定总能达到零误差。线性神经网络的训练性能要受到网络规模、训练集大小的限制。
3. 实现
clear; clc
p = [1.1, -1.3];
t = [0.6, 1];
%只有一个输出,输入延时为0, 学习速率为0.01的线性神经网络,minmax(p),样本范围
net = newlin(minmax(p), 1, 0, 0.01);
net.trainParam.goal = 0.0001;
net = train(net, p, t);
y = sim(net, p);
e = mse(y - t);%最后进行与原始数据的比较
plot(p, t)
hold on;
plot(p, y, 'r');
4. 应用线性网络进行预测
clear; clc
time = 0:0.025:5;
t = sin(time*4*pi);
Q = length(t); %总共的个数
p = zeros(5, Q);
p(1, 2:Q) = t(1, 1:(Q-1));
p(2, 3:Q) = t(1, 1:(Q-2));
p(3, 4:Q) = t(1, 1:(Q-3));
p(4, 5:Q) = t(1, 1:(Q-4));
p(5, 6:Q) = t(1, 1:(Q-5));
%信号t曲线
plot(time, t);
hold on;
xlabel('时间');
ylabel('目标信号');
title('待预测信号');
%网络设计
net = newlind(p, t);
%网络测试
a = sim(net, p);
plot(time, a , time, t, '+');
hold on;
xlabel('时间');
ylabel('输出 - 目标 +');
title('输出信号和目标信号');
e = t - a;
plot(time, e);
hold on;
plot([min(time), max(time)], [0, 0], ':r');
hold on;
5. 自适应预测
自适应线性网络模型的另外一个用处就是找出非线性系统的最小均方差线性逼近。自适应线性网络在给定参考点可以实现对非线性系统的高精度逼近,移动参考点则网络自适应的改变模型。
clear; clc
time1 = 0:0.05:4;
time2 = 4.05:0.0024:6;
time = [time1, time2];
t = [sin(time1*4*pi) sin(time2*8*pi)];
t = con2seq(t);
plot(time, cat(2, t{:}));
xlabel('time');
ylabel('mark signal');
title('predict signal');
p = t;
%网络设计
lr = 0.1;
delays = [1 2 3 4 5];
net = newlin(minmax(cat(2, p{:})), 1, delays, lr);
%网络训练
[net, a, e] = adapt(net, p, t);
%网络测试
figure, plot(time, cat(2, a{:}), time, cat(2, t{:}), '--g')
xlabel('time');
ylabel('output-mark');
title('predict signal and real signal');
figure, plot(time, cat(2, e{:}), [min(time), max(time)], [0, 0], ':r')
xlabel('time');
ylabel('error');
title('predict error');
6.线性系统辨识,自适应系统辨识