早期停止和正规化

时间:2018-04-11 18:57:00

标签: machine-learning scikit-learn neural-network

我一直在sklearn上使用mlp库来处理一些数据。我的训练集得分在0.7-0.9之间。但是我的测试成绩一直很低。我认为这是由于过度拟合并已阅读并理解正规化(以帮助平滑重量/偏差)和提前停止将有助于防止此问题。但是我觉得很难实现它,有人可以帮我实现一个实现,或者用合适的链接指导我走正确的道路。

(sklearn上关于clf正则化的教程并没有真正帮助我,因为我发现它很容易引起混淆)

1 个答案:

答案 0 :(得分:0)

离开sklearn documentation,你可以设置..

early_stopping=True

来自sklearn的说明:

  

当验证分数没有改善时,是否使用提前停止来终止训练。如果设置为true,它将自动留出10%的训练数据作为验证,并在验证得分没有提高至少两个连续时期的tol时终止训练。仅在solver ='sgd'或'adam'

时有效

您可以通过此参数修改分配给验证集的%。

validation_fraction=0.1

对于正则化,它们通过参数alpha提供L2正则化。为此,我强烈建议使用网格搜索进行优化。

alpha = 0.0001

修改

然后我会尝试优化学习率。基于此很难说,但它可能跳过“错误谷”或陷入局部最小值。尝试0.01和0.0005以及使用网格搜索之间的一些。

此外,如果您尚未调整输入,请务必缩放输入,这也可能导致问题。

修改

如果您更像是一名音频学习者,我会尝试从他们的深度学习计划中查看一些videos from Udacity。他们非常善于用简单的术语解释事物。这可以帮助您直观地了解您的网络正在发生的事情,而不仅仅是试验和错误(有时需要它)。