net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
P:输入参数矩阵。(RxQ1),其中Q1代表R元的输入向量。其数据意义是矩阵P有Q1列,每一列都是一个样本,而每个样本有R个属性(特征)。一般矩阵P需要归一化,即P的每一行都归一化到[0 1]或者[-1 1]。
T:目标参数矩阵。(SNxQ2),Q2代表SN元的目标向量。
S:N-1个隐含层的数目(S(i)到S(N-1)),默认为空矩阵[]。输出层的单元数目SN取决于T。返回N层的前馈BP神经网络
TF:相关层的传递函数,默认隐含层为tansig函数,输出层为purelin函数。
BTF:BP神经网络学习训练函数,默认值为trainlm函数。
BLF:权重学习函数,默认值为learngdm。
PF:性能函数,默认值为mse,可选择的还有sse,sae,mae,crossentropy。
IPF,OPF,DDF均为默认值即可。
例子:
net = newff( input,output, [50] , { 'logsig' 'purelin' } , 'traingdx' ,'learngdm') ;
BTF 学习训练函数影响最大
默认使用trainlm 效果比较好, Levenberg-Marquardt算法 。其他函数比较差。
traingd 基本梯度下降法 速度慢,效果差
traingdm:带有动量项的梯度下降法, 通常要比traingd 速度快。 速度快,效果差
traingdx: 带有动量项的自适应学习算法, 速度要比traingdm 快。速度快,效果差,比上一个强些
(4) trainrp: 弹性BP 算法, 具有收敛速度快和占用内存小的优点。速度稍慢,效果比3强
(5) traincgf: Fletcher-Reeves 共轭梯度法,为共轭梯度法中存储量要求最小的算法。速度快,效果差,和3差不多
(6) traincgp: Polak-Ribiers共轭梯度算法, 存储量比traincgf稍大,但对某些问题收敛更快。速度快,效果差,和5差不多
(7) traincgb: Powell-Beale共轭梯度算法,存储量比traincgp稍大,但一般收敛更快,以上三种共轭梯度法,都需要进行线性搜索。速度快,效果和4差不多,还可以
(8) trainscg: 归一化共轭梯度法,是唯一一种不需要线性搜索的共轭梯度法。速度快,效果差,和5差不多
(9) trainbfg: BFGS- 拟牛顿法, 其需要的存储空间比共轭梯度法要大,每次迭代的时间也要多,但通常在其收敛时所需的迭代次数要比共轭梯度法少,比较适合小型网络。速度慢,效果和4差不多,还可以
(10) trainoss: 一步分割法,为共轭梯度法和拟牛顿法的一种折衷方法。速度慢,效果差,和5差不多
(11) trainlm: Levenberg-Marquardt算法,对中等规模的网络来说, 是速度最快的一种训练算法, 其缺点是占用内存较大。对于大型网络, 可以通过置参数mem-reduc 为1, 2, 3,⋯, 将Jacobian 矩阵分为几个子矩阵。但这样也有弊端, 系统开销将与计算Jacobian的各子矩阵有很大关系。速度快 效果较好
(12) trainbr: 贝叶斯规则法,对Levenberg-Marquardt算法进行修改, 以使网络的泛化能力更好。同时降低了确定最优网络结构的难度。速度慢 效果很好 和11差不多
学习函数 学习函数的影响较训练函数的影响要小。
效果较好的有:learncon,learnlv2 learnpn;其次 learngd learngdm learnis learnhd learnos
learngd:速度慢,准确率 0.944
learngdm:速度慢,准确率 0.95
learnh:速度慢,准确率 0.944
learnhd:速度慢,准确率 0.956
learnis:速度慢,准确率 0.956 1(3)
learnk:速度慢,准确率 0.95 1(3)
learnlv1:速度慢,准确率 0.938 1(4)
learnlv2:速度慢,准确率 0.975 1(6) (报错,实际为learnlv2)
learnos:速度慢,准确率 0.95 1(2)
learnp:速度慢,准确率 0.931 1(3)
learnpn:速度慢,准确率 0.969 1(5)
learnsom:速度慢,准确率 0.925 1(2)
learnwh:速度慢,准确率 0.931 1(1)
1
2,传递函数TF
purelin: 线性传递函数。
tansig :正切S型传递函数。
logsig :对数S型传递函数。
隐含层和输出层函数的选择对BP神经网络预测精度有较大影响,一般隐含层节点转移函数选用 tansig函数或logsig函数,输出层节点转移函数选用tansig函数或purelin函数。
3,学习训练函数BTF
traingd:最速下降BP算法。
traingdm:动量BP算法。
trainda:学习率可变的最速下降BP算法。
traindx:学习率可变的动量BP算法。
trainrp:弹性算法。
变梯度算法:
traincgf(Fletcher-Reeves修正算法)
traincgp(Polak_Ribiere修正算法)
traincgb(Powell-Beale复位算法)
trainbfg(BFGS 拟牛顿算法)
trainoss(OSS算法)
4,参数说明
通过net.trainParam可以查看参数
Show Training Window Feedback showWindow: true
Show Command Line Feedback showCommandLine: false
Command Line Frequency show: 两次显示之间的训练次数
Maximum Epochs epochs: 训练次数
Maximum Training Time time: 最长训练时间(秒)
Performance Goal goal: 网络性能目标
Minimum Gradient min_grad: 性能函数最小梯度
Maximum Validation Checks max_fail: 最大验证失败次数
Learning Rate lr: 学习速率
Learning Rate Increase lr_inc: 学习速率增长值
Learning Rate lr_dec: 学习速率下降值
Maximum Performance Increase max_perf_inc:
Momentum Constant mc: 动量因子