MATLAB神经网络3-训练
训练模式
两种训练方式
增量模式,相当于SGD
每输入一个样本更新一次网络
批处理模式
全部样本计算后,更新一次网络
一般来说,对于深度学习,batch更快,误差更小
优化性能函数(误差代价函数)
一般使用基于梯度的方法或雅克比的方法
主要看反向传播的方法
多训练几次
因为初始权重和偏置不同,数据集的构成也不同
过拟合
如果测试集的性能误差曲线在验证集性能误差曲线之前上升,那么很可能是过拟合的问题存在
nnd11gn
激活函数
logsig sigmoid函数
多用于隐藏层
取值范围[0,1]
pureline 线性函数
多用于最后一层
hardlim 转换函数
硬约束转换函数
取值范围[0,1]
hardlims
硬约束转换函数
取值范围[-1,1]
trainsig 函数
与logsig函数的区别
取值范围[-1,1]
train
训练网络,对应于batch训练模式
对于深度学习或LSTM使用的是trainNetwork函数
[trainedNet,tr] = train(net,X,T,Xi,Ai,EW,Name,Value)
常用的就是net,X输入,t目标输出,tr为返回的训练时的记录
tr 返回的是包含所有训练信息的结构体
tr还跟踪误差值、梯度的量级等
tr.trainInd, tr.valInd, tr.testInd 表示训练、验证、测试时被使用的数据点的索引,这三个参数从属于net.divideFcn与met.divideParma
tr。best_epoch 表示验证集性能误差达到最小时的迭代的次数
这是一个高级函数
adapt
训练网络,对应于incremental增量(SGD)训练模式
注意与train的区别,train常用于并行输入,adapt常用于连续输入
这是一个高级函数
sim
training算法
trainlm LM算法
trainbr 贝叶斯正则化
trainscg 量化共轭梯度,SCG算法
trainbfg 拟牛顿法
trainrp
traincgb
traincgf
traincgp
trainoss
traindgx 可变学习率梯度下降
traingdm 带动量的梯度下降
traingd 梯度下降
trainlm最快,feedfowardnet的默认方法,常用于数据拟合,不常用于模式识别
trainbfg也很快
trainlm, trainbfg用于小型网络
trainscg,trainnrp用于大型网络,与模式识别问题,比traingd快
data division
dibiderand 函数
random
用于将数据集分割成训练、验证、测试数据集
performance
均方差mse
calculations
MEX
progress
help net.trainFcn
epoch
个人理解,对于batch算法表示的就是迭代次数
实际上epoch表示的就是更新一次网络为一次epoch
设置最大的迭代次数(更新次数)net.trainParma.epochs
time
训练的时间
设置最大的训练时间net.trainParma.time
performance
性能(误差代价函数)值
是指最小的性能值net.trainParma.goal
gradient
当梯度的量级小于1e5,则训练中值
这个阈值可以使用net.trainParma.min_grad
mu
validation checks
表示验证集性能没有下降的次数(随着迭代的进行),当达到6次的时候则训练中值。
这个阈值可以使用net.trainParam.max_fail