静态网络中的批处理方式
批处理方式可以用adapt或train函数来实现,虽然由于由于采用了更高效的学习算法,train通常是最好的选择。增加方式只能用adapt来实现,train函数只能用于批处理方式。
让我们用前面用过的静态网络的例子开始,学习速率设置为0.1。
net = newlin([-1 1;-1 1],1,0,0.1);
net.IW{1,1} = [0 0];
net.b{1} = 0;
用adapt函数实现静态网络的批处理方式,输入向量必须用同步向量矩阵的方式放置:
P = [1 2 2 3; 2 1 3 1];
T = [4 5 7 7];
当我们调用adapt时将触发adaptwb函数,这是缺省的线性网络调整函数。learnwh是缺省的权重和偏置学习函数。因此,Widrow-Hoff学习法将会被使用:
[net,a,e,pf] = adapt(net,P,T);
a = 0 0 0 0
e = 4 5 7 7
注意网络的输出全部为0,因为在所有要训练的数据提交前权重没有被更新,如果我们显示权重,我们就会发现:
>>net.IW{1,1}
ans = 4.9000 4.1000
>>net.b{1}
ans =
2.3000
经过了用adapt函数的批处理方式调整,这就和原来不一样了。
现在用train函数来实现批处理方式。由于Widrow-Hoff规则能够在增加方式和批处理方式中应用,它可以通过adapt和train触发。我们有好几种算法只能用于批处理方式(特别是Levenberg-Marquardt算法),所以这些算法只能用train触发。
网络用相同的方法建立:
net = newlin([-1 1;-1 1],1,0,0.1);
net.IW{1,1} = [0 0];
net.b{1} = 0;
在这种情况下输入向量即能用同步向量矩阵表示也能用异步向量细胞数组表示。用train函数,任何异步向量细胞数组都会转换成同步向量矩阵。这是因为网络是静态的,并且因为train总是在批处理方式中使用。因为MATLAB实现同步模式效率更高,所以只要可能总是采用同步模式处理。
P = [1 2 2 3; 2 1 3 1];
T = [4 5 7 7];
现在我们开始训练网络。由于我们只用了一次adapt,我们这里训练它一次。缺省的线性网络训练函数是trainwb。learnwh是缺省的权重和偏置学习函数。因此,我们应该和前面缺省调整函数是adaptwb的例子得到同样的结果。
net.inputWeights{1,1}.learnParam.lr = 0.1;
net.biases{1}.learnParam.lr = 0.1;
net.trainParam.epochs = 1;
net = train(net,P,T);
经过一次训练后,我们显示权重发现:
>>net.IW{1,1}
ans = 4.9000 4.1000
>>net.b{1}
ans =
2.3000
这和用adapt训练出来的结果是一样的。在静态网络中,adapt函数能够根据输入数据格式的不同应用于增加方式和批处理方式。如果数据用同步向量矩阵方式输入就用批处理方式训练;如果数据用异步方式输入就用增加方式。但这对于train函数行不通,无论输入格式如何,它总是采用批处理方式。
动态网络中的增加方式
训练静态网络相对要简单一些。如果我们用train训练网络,即使输入是异步向量细胞数组,它也是转变成同步向量矩阵而采用批处理方式。如果我们用adapt。输入格式决定着网络训练方式。如果传递的是序列,网络用增加方式,如果传递的是同步向量就采用批处理方式。
在动态网络中,批处理方式只能用train完成,特别是当仅有一个训练序列存在时。为了说明清楚,让我们重新考虑那个带延迟的线性网络。我们把学习速率设为0.02(当我们采用梯度下降算法时,我们要用比增加方式更小的学习速率,应为所有的分立的梯度都要在决定权重改变步进之前求和)
net = newlin([-1 1],1,[0 1],0.02);
net.IW{1,1}=[0 0];
net.biasConnect=0;
net.trainParam.epochs = 1;
Pi = {1};
P = {2 3 4};
T = {3 5 6};
我们用以前增加方式训练过的那组数据训练,但是这一次我们希望只有在所有数据都提交后才更新权重(批处理方式)。因为输入是一个序列,网络将用异步模式模拟。但是权重将用批处理方式更新。
net=train(net,P,T,Pi);
经过一次训练后,权重值为:
>>net.IW{1,1}
ans = 0.9000 0.6200
这里的权重值和我们用增加方式得到的不同。在增加方式中,通过训练设置,一次训练可以更新权重三次。在批处理方式中,每次训练只能更新一次。
第三章 反向传播网络(BP网络)
1.概述
前面介绍了神经网络的结构和模型,在实际应用中,我们用的最广泛的是反向传播网络(BP网络)。下面就介绍一下BP网络的结构和应用。
BP网络是采用Widrow-Hoff学习算法和非线性可微转移函数的多层网络。一个典型的BP网络采用的是梯度下降算法,也就是Widrow-Hoff算法所规定的。backpropagation就是指的为非线性多层网络计算梯度的方法。现在有许多基本的优化算法,例如变尺度算法和牛顿算法。神经网络工具箱提供