首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置齿轮EarlyStoppingStrategy参数的适当方法

设置齿轮EarlyStoppingStrategy参数的适当方法
EN

Stack Overflow用户
提问于 2015-12-08 16:57:41
回答 1查看 326关注 0票数 1

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

我把我的数据分成40/20/40 (训练/验证/测试)随机分组。

因为我有一个验证集,所以我可以将Encog的EarlyStoppingStrategy添加到我的培训中。

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

  • theStripLength (当前设置为trainingSet.size())
  • theAlpha (当前设置为1)
  • theMinEfficiency (当前设置为0.01)

这种方法常常陷入局部极小值。

培训方法配置如下:

代码语言:javascript
复制
// 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);

是否有适当的/推荐的方法来设置这些参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 22:42:08

如果你的培训被困在当地的最低限度,我不认为你的问题是与EarlyStoppingStrategy。相反,您的问题与反向传播算法的动量有关。

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

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

我建议您首先尝试ResilientPropagation算法,因为它更容易使用,并且不需要您设置这些参数。您还可以考虑QuickPropagation训练算法。

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

代码语言:javascript
复制
Backpropagation train = new Backpropagation(network, trainingSet);   
train.addStrategy(new SmartMomentum());

SmartMomentum使用以前训练迭代中的误差梯度以及当前训练迭代中的误差梯度来帮助训练过程避免局部极小。

如果您仍然在将全局错误降到期望的水平上有问题,那么您也可以尝试添加SmartLearningRate策略,found 这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34161646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档