MATLAB神经网络3-训练

  • 训练模式
  • 优化性能函数(误差代价函数)
  • 多训练几次
  • 过拟合
  • 激活函数
  • logsig sigmoid函数
  • pureline 线性函数
  • hardlim 转换函数
  • hardlims
  • trainsig 函数
  • train
  • adapt
  • sim
  • training算法
  • data division
  • dibiderand 函数
  • performance
  • calculations
  • progress
  • epoch
  • time
  • performance
  • gradient
  • mu
  • validation checks


训练模式

两种训练方式

增量模式,相当于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