4.第5章 线性神经网络
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性神经网络与感知器的主要区别在于,感知器的传输函 数只能输出两种可能的值,而线性神经网络的输出可以取任 意值,其传输函数是线性函数。
线性神经网络在收敛的精度和速度上较感知器都有了较大 提高,但由于其线性运算规则,它也只能解决线性可分的问 题。
1.线性神经网络的结构
线性神经网络在结构上与感知器网络非常 相似,只是神经元传输函数不同。
3.LMS算法中学习率的选择
自相关矩阵的主对角线元素就是各输入向量的均方值 ,故:
2 0 向量均方值之和
在感知器学习算法中曾提到,学习率随着学习的 进行逐渐下降比始终不变更加合理。
0
n
=c 0
n
指数式下降
0
n 1
反比例函数
搜索—收敛方案
4.线性神经网络与感知器的对比
>> lr = maxlinlr(X) >> lr = 0.9999/max(eig(X*X')) >> P=-5:5; >> lr = maxlinlr(P)
% 带偏置时的最大学习率
% 不带偏置的最大学习率
5.线性神经网络相关函数详解
mse——均方误差性能函数 。 >> rand('seed',2) >> a=rand(3,4)
x1
x
2 1
1
x1 2
2 x2
11
22
12
2
v
f
y q
b
1
x2
2.LMS学习算法
LMS算法与感知器网络的学习算法在权值调整上都基于 纠错学习规则,但LMS更易实现,因此得到了广泛应用,成 为自适应滤波的标准算法。也称为 规则
e(n) d (n) xT (n)ω(n)
采用均方误差作为评价指标
>> plot(x,y,'o');
>> P=x;T=y; >> lr=maxlinlr(P,'bias') >> net=linearlayer(0,lr); % 计算最大学习率 % 用linearlayer创建线性层,输入延迟为0
>> tic;net=train(net,P,T);toc
>> new_x=-5:.2:5; >> new_y=sim(net,new_x); >> hold on;plot(new_x,new_y);
>> mse(a)
>> b=a(:); >> sum(b.^2)/length(b) >> mse(b)
5.线性神经网络相关函数详解
linearlayer——构造线性层的函数. linearlayer 函数用 于设计静态或动态的线性系统,给定一个足够小的学 习率能使它稳定收敛。
net=linearlayer(inputDelays,widrowHoffLR) inputDelays:表示输入延迟的行向量 widrowHoffLR:学习率
newlind拟合直线
>> x=-5:5; >> y=3*x-7; % 直线方程为
>> randn('state',2);
>> y=y+randn(1,length(y))*1.5; >> plot(x,y,'o'); >> P=x;T=y; >> net=newlind(P,T); >> new_x=-5:.2:5; >> new_y=sim(net,new_x); >> hold on;plot(new_x,new_y); >> legend('原始数据点','最小二乘拟合直线'); >> net.iw >> net.b >> titlቤተ መጻሕፍቲ ባይዱ('newlind用于最小二乘拟合直线');
...
1
v1 v2
f
y1 q1 ys qs
(0,1) (1,1)
bs 1
Madaline可以用一种间接的方式解决线 性不可分的问题,方法是用多个线性函数对 区域进行划分,然后对各个神经元的输出做 逻辑运算。
(0,0)
(1,0)
1.线性神经网络的结构
线性神经网络解决线性不可分问题的另一个方法 是,对神经元添加非线性输入,从而引入非线性成分 ,这样做会使等效的输入维度变大。
% 初始化 >> w=[0,0,0] >> lr=maxlinlr(P) >> MAX=200; % 权值向量初始化为零向量 % 根据输入矩阵求解最大学习率 % 最大迭代次数,根据经验确定
6.线性神经网络应用实例——与
>> for i=1:MAX... fprintf('第%d次迭代\n', i); v=w*P; y=v; disp('线性网络的二值输出:'); yy=y>=0.5 e=d-y; m(i)=mse(e); fprintf('均方误差: %f\n',m(i)); % 将模拟输出转化为二值输出,以0.5为阈值 % 误差 % 均方误差 % 求出输出
由于方程的个数超过了自变量的个数,因此方 程没有精确解,只有近似解,用伪逆的方法可 以求得权值向量的值: >> P=[0,0,1,1;0,1,0,1] >> P=[ones(1,4);P] >> d=[0,0,0,1] >> pinv(P')*d'
6.线性神经网络应用实例——与
手算: % 定义 >> P=[0,0,1,1;0,1,0,1] >> P=[ones(1,4);P] >> d=[0,0,0,1] % 包含偏置的输入向量 % 期望输出向量
第5章 线性神经网络
编者
Outline
1.线性神经网络的结构 2.LMS学习算法 3.LMS算法中学习率的选择 4.线性神经网络与感知器的对比 5.线性神经网络相关函数详解 6.线性神经网络应用实例
1.线性神经网络的结构
线性神经网络最典型的例子是自适应线性元件(Adaptive Linear Element,Adaline)。
newlin实现直线拟合
>> title('newlin用于最小二乘拟合直线');
>> net.iw >> net.b
5.线性神经网络相关函数详解
purelin——线性传输函数
输入就等于输出,不做其他操作
5.线性神经网络相关函数详解
learnwh——LMS学习函数 learnwh 是Widrow-Hoff规则(LMS算法)的学习函数。 [dW,LS]=learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) 用learnwh可以自行编写训练函数。 用learwh实现的线性神经网络与newlin、newlind函数算 得的结果是一样的。
6.线性神经网络应用实例——与
:0 (1,1) (0,1) :1
1 x y
1
b v
f
(0,0)
(1,0)
2
y
网络的训练中共需确定3个自由变量,而输入的训练向量 则有4个,因此可以形成一个线性方程组:
0 x 0 y 1 b 0 0 x 1 y 1 b 0 1 x 0 y 1 b 0 1 x 1 y 1 b 1
% 设置种子,便于重复执行
% 加入噪声的直线
% 用newlind建立线性层 % 新的输入样本 % 仿真
5.线性神经网络相关函数详解
newlin——构造一个线性层 。newlin函数用于 创建一个未经训练的线性神经网络。输入参数 格式如下
[net=newlin(P,S,ID,LR) P:R*Q矩阵,P中包含Q个典型输入向量,向量维数为R S:标量,表示输出节点个数。
ID:表示输入延迟的向量,默认值为0
LR:学习率,默认值为0.01
5.线性神经网络相关函数详解
>> x=-5:5; >> y=3*x-7; >> randn('state',2); >> y=y+randn(1,length(y))*1.5; % 直线方程为 % 设置种子,便于重复执行 % 加入噪声的直线
x1 x2
...
1
2
xi xN
i
N
v
f
y q
b
1
...
v xii b
i 1
N
y purelin(v)
y purelin( xii b)
i 1
N
1.线性神经网络的结构
若网络中包含多个神经元节点,就能形成多个 输出,这种线性神经网络叫Madaline网络。
1b x1 x2 x1 x2
newlin是将被系统废弃的函数,使用newlin函数的场 合以后用linearlayer代替
>> x=-5:5;
5.线性神经网络相关函数详解
% 设置种子,便于重复执行 % 加入噪声的直线
>> y=3*x-7; >> randn('state',2); >> y=y+randn(1,length(y))*1.5;
1 Q 2 mse e (k ) Q k 1
标 是找到适当的 ω,使得误差的均方差最小。只要用 mse 对 ω 求偏导,再令该偏导等于零即可求出 mse 的极 值。显然,mse 必为正值,因此二次函数是凹向上的, 求得的极值必为极小值。
Q 是输入训练样本的个数。线性神经网络学习的目
2.LMS学习算法
ω(n 1) ω(n) ()
E T ω(n 1) ω(n) ω(n) x (n)e(n) ω
2.LMS学习算法
(1)定义变量和参数。 (2)初始化。给向量赋一个较小的 随机初值 。 (3)输入样本,计算实际输出和误 差。 (4)调整权值向量。ω(n 1) ω(n) x T (n)e(n) (5)判断算法是否收敛。若满足收 敛条件,则算法结束 ,否则跳转到 第3步重新计算。
% 用train函数训练
% 仿真
linearlayer实现直线拟合
>> title('linearlayer用于最小二乘拟合直线');
>> legend('原始数据点','最小二乘拟合直线'); >> xlabel('x');ylabel('y'); >> s=sprintf('y=%f * x + %f', net.iw{1,1}, net.b{1,1}) >> text(-2,0,s);
3.LMS算法中学习率的选择
学习率越小,算法的运行时间就越长,算法 也就记忆了更多过去的数据。因此,学习率的倒 数反映了LMS算法的记忆容量大小。
1996年Hayjin证明,只要学习率满足下式, LMS算法就是按方差收敛的
0
2
max
max :输入向量自相关矩阵的最大特征值
max
一般不可知,用矩阵的迹代替,迹就是主 对角线元素之和。
5.线性神经网络相关函数详解
newlind——设计一个线性层 net=newlind(P,T) P:R*Q矩阵,包含Q个训练输入向量。 T:S*Q矩阵,包含Q个期望输出向量。 net:训练好的线性神经网络
newlind函数返回的net已经训练完毕,不 需要再自行调用train函数训练
5.线性神经网络相关函数详解
运行example5_4.m
5.线性神经网络相关函数详解
maxlinlr——计算最大学习率 lr=maxlinlr(P) lr=maxlinlr(P,’bias’) :包含偏置 >> X = [1 2 -4 7; 0.1 3 10 6]
0
2
max
% 输入的矩阵,由4个二维向量组成
>> lr = maxlinlr(X,‘bias’)
误差表示为
1 2 E (ω) e (n) 2
T
求导
E e(n) e( n ) ω ω
误差等于期望输出—实际输出
e(n) d (n) x (n)ω(n)
求导
e( n) x T (n) ω
代入,有: 权值的修正值正比于当前位置上的梯度
E x T ( n )e( n ) ω
>> plot(x,y,'o');
>> P=x;T=y; >> net=newlin(minmax(P),1,[0],maxlinlr(P)); >> tic;net=train(net,P,T);toc % 用newlin创建线性网络
>> new_x=-5:.2:5;
>> new_y=sim(net,new_x); >> hold on;plot(new_x,new_y); >> legend('原始数据点','最小二乘拟合直线'); % 仿真
网络传输函数。感知器传输函数是一个二值阈值 元件,而线性神经网络的传输函数是线性的。这 就决定了感知器只能做简单的分类,而线性神经 网络还可以实现拟合或逼近。
学习算法 。LMS算法得到的分类边界往往处于 两类模式的正中间,而感知器学习算法在刚刚能 正确分类的位置就停下来了,从而使分类边界离 一些模式距离过近,使系统对误差更敏感。