如何设置训练神经网络的学习率

ng0*_*323 0 neural-network

参考这个关于选择NN中隐藏层数和单位数的答案:https: //stackoverflow.com/a/10568938/2265724
该帖子建议添加隐藏单位的数量,直到泛化错误开始增加.
但我的问题是学习率.给定隐藏单元的数值(即图中的一个数据点或一个特定的架构,例如让我们说10个隐藏单元),如何设置学习率和训练多少个时期?
1.使用固定的学习率(在检查后收敛,即成本下降)并运行n个时期或直到成本(或验证错误)平稳(如果它确实以一个很好的渐近方式下降)
2.如同早期1停止
3.如在1或2中,但在某个(线性或对数)范围内尝试各种不同的学习率
4.如在3中,包括学习率衰减
5.如在3或4中,包括权重衰减作为正规化,或者可能更好,辍学

参数的数量从1增加到5. 1最快但听起来不令人满意(为什么不尝试其他学习率?).3-5是耗时的.因为如果我不开心,我需要通过增加隐藏单元的数量来尝试另一种架构.并重复,直到获得帖子中显示的图表.

我能正确理解和练习吗?

lmj*_*ns3 5

这是一个难题; 甚至还有一个专门用于探索这个问题的机器学习子领域,称为超参数优化.

解决超参数问题的最基本方法是强力搜索,您可以尝试系统地改变网格上的超参数设置("网格搜索")并选择最佳参数.这很慢,而且也很烦人,因为看起来应该有更好的方法.

关于改进网格搜索有几种不同的思想流派:

  • 进化方法将一些适应度分数分配给超参数的组合,然后尝试重新使用已经很好地一起执行的参数设置的组合.我最近在这个阵营看到的最流行的方法是CMA-ES.

  • 贝叶斯方法试图对研究者认为对每个超参数合理的值进行某种先验分布.然后,通过评估几个不同的超参数设置,您可以以统计上最佳的方式将结果性能与先验性能相结合.