Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置Encog EarlyStoppingsStrategy参数的正确方法_Java_Machine Learning_Neural Network_Encog - Fatal编程技术网

Java 设置Encog EarlyStoppingsStrategy参数的正确方法

Java 设置Encog EarlyStoppingsStrategy参数的正确方法,java,machine-learning,neural-network,encog,Java,Machine Learning,Neural Network,Encog,我目前正在使用Encog 3.3(Java实现),以便使用BPROP和RPROP(在两种不同的场景中)训练2^N-10-10-2 MLP网络 我将数据集划分为40/20/40(训练/验证/测试)随机子集 由于我有一个验证集,我可以将Encog的EarlyStoppingStrategy添加到我的培训中 碰巧我对如何设置这3个参数有点困惑: 三倍长度(当前设置为trainingSet.size()) theAlpha(当前设置为1) 效率低下(当前设置为0.01) 这种方法经常陷入局部极小值

我目前正在使用Encog 3.3(Java实现),以便使用BPROP和RPROP(在两种不同的场景中)训练2^N-10-10-2 MLP网络

我将数据集划分为40/20/40(训练/验证/测试)随机子集

由于我有一个验证集,我可以将Encog的EarlyStoppingStrategy添加到我的培训中

碰巧我对如何设置这3个参数有点困惑:

  • 三倍长度(当前设置为trainingSet.size())
  • theAlpha(当前设置为1)
  • 效率低下(当前设置为0.01)
这种方法经常陷入局部极小值

培训方法配置如下:

// configure learning rule (backpropagation)
Backpropagation train = new Backpropagation(network, trainingSet, 1e-6, 0.9);           
// configure training strategy
EarlyStoppingStrategy early = new EarlyStoppingStrategy(validationSet, trainingSet, trainingSet.size(), 1, 0.01);
train.addStrategy(early);

有没有合适的/推荐的方法来设置这些参数?

如果你的训练一直停留在局部极小值,我认为你的问题不在于早期拦截策略。相反,您的问题与反向传播算法的动量有关

当交叉验证错误增加时,EarlyStoppings策略停止训练,这是您不希望在训练错误减少时发生的,因为这意味着您“过度训练”。但是,EarlyStoppings策略与减少培训过程中的全局培训错误无关

对于反向传播算法,很难同时设置“学习速率”和动量

我建议您首先尝试ResilientPropagation算法,因为它更易于使用,并且不需要您设置这些参数。你也可以考虑快速传播训练算法。

如果这不是一个选项,那么我建议您使用“智能动量”和反向传播,如下所示:

Backpropagation train = new Backpropagation(network, trainingSet);   
train.addStrategy(new SmartMomentum());
SmartMomentum使用来自上一次训练迭代的误差梯度以及来自当前训练迭代的误差梯度来帮助训练过程避免局部极小值

如果您仍然无法将全局错误降低到所需的级别,您还可以尝试添加SmartLearningRate策略