BP神经网络的mu参数是学习率么?训练结果val fail中的validation check=6什么意思

trainlm训练函数中的“mu”是不是学习率?相当于traingdx函数中的“lr”
val fail啥意思,网络训练每次都是因为validation check达到“6”,就结束了,这是什么原因,如下图

如何解决?训练的performance和gradient都还没达到精度要求

神经网络的样本若输入网络,默认情况下会将样本随即分为3类:训练样本,确认样本和测试样本。确认检查值默认是6,它的意思是指随着网络利用训练样本进行训练的过程中,确认样本的误差曲线连续6次迭代不在下降。这时训练终止(这只是训练终止条件之一,满足任一终止条件,训练过程都将终止)深层含义你可以这样理解,如果随着网络的训练,确认样本的误差已经基本不在减小,甚至增大,那么就没有必要再去训练网络了,因为继续训练下去的话,在利用测试样本进行测试网络的话,测试样本的误差将同样不会有所改善,甚至会出现过度拟合的现象。validation checks已经达到设置的值了,所以停止训练了,如果网络在连续max_fail epochs后不能提高网络性能,就停止训练。
有三种方法解决这个问题:
1 提高validation checks的数值,比如设置net.trainParam.max_fail = 200;其实这等于自己糊弄自己严重不推荐,出现停止训练,就是因为被训练的网络已经过拟合,停下来是应该的。但6的确有点小,建议改成10到20之间的数
2 修改被训练的网络,比如说再加一个隐藏层试试
3 如果是数据太相近的问题,试试选择用divideind追问

你这是论坛上拷贝过来的吧,有没有具体点的方法,还有这种因为validation checkd达到预设值而停止的训练结果能用么

追答

你要明白它为什么要停止。连续6次误差不断增大,说明网络性能越训练越差。这可能是两方面原因:1.过拟合。网络学习得太好了,反而泛化能力下降。2.网络规模不够大,信息存储能力不够强,原先学习的知识又被新样本抹去了,导致网络性能无法提升。
要解决这个问题:一、如果要改变validation的验证次数,可以用这个语句net.trainParam.max_fail = 20; 二、或者是增多隐节点或隐层数。
提前停止的网络虽然陷入局部极小,但不一定就不能用,看实际效果吧。

追问

我是因为误差连续6次不下降停止的,不是增大;还有就是隐藏层节点数和层数我都是一个一个凑,都不太行。是不是样本数据太少的原因?

追答

不下降不就是增大嘛,不可能误差不变的。数据点少就降低隐层节点数。

追问

明白了。不过我把节点数改成2个,还是会因为validation check达到6而终止

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-02
大概意思是给神经网络的权重再加一个调制,这样能避免神经网络收敛到局部最小值,MU的范围通常是0到1.
Mu stands for momentum constant or momentum parameter which is included in weight update expression to avoid the problem of local minimum. Sometimes network may get stuck to local minimum and convergence does not occur. Range of mu is between 0 and 1.
相似回答