我一直在使用SKL上的mlp库学习一些数据。我的训练成绩一直在0.7-0.9之间。然而,我的测试集分数一直很低。我认为这是由于过度拟合,并且已经阅读并理解了正则化(帮助平滑权重/偏差)和提前停止将有助于防止此问题。然而,我发现很难实现它,是否有人可以帮助我实现,或者用合适的链接引导我走上正确的道路。
(sklearn上关于clf正则化的教程并没有真正帮助我,因为我发现它很容易混淆,几乎没有解释)
离开sklearn文档,您可以设置。。
early_stopping=True
sklearn的注释:
验证分数未提高时,是否使用提前停止终止培训。如果设置为true,它将自动留出10%的培训数据作为验证,并在验证分数在连续两个时期内没有至少提高tol时终止培训。仅当解算器='sgd'或'adam'时有效
您可以通过此参数修改分配给验证集的百分比。
validation_fraction=0.1
对于正则化,它们通过参数alpha
提供L2正则化。为此,我强烈建议使用网格搜索进行优化。
alpha = 0.0001
编辑
然后我会尝试优化学习率。基于此很难判断,但它可能会跳过“错误谷”或陷入局部极小值。尝试0.01和0.0005,以及使用网格搜索之间的一些。
此外,如果您还没有调整输入,请确保调整输入,这也可能会导致问题。
编辑
如果你更喜欢音频学习,我会试着看看Udacity深度学习项目的一些视频。他们真的很擅长用简单的语言来解释事情。这可以帮助您直观地了解您的网络发生了什么,而不仅仅是尝试和错误(有时需要尝试和错误)。