2014-08-28 299 views
2

参考这个答案就在NN选择隐藏层和单位数目: https://stackoverflow.com/a/10568938/2265724
的后建议添加隐藏单元的数量,直到泛化误差开始增加。
但我的问题是学习率。给定隐藏单元的数量(即图中的一个数据点或一个特定的体系结构,比如说10个隐藏单位),我应该如何设置学习速率以及要训练多少个时代?
1.使用固定的学习速率(在检查它收敛后,即成本下降),并运行n个时期或直到成本(或验证错误)平稳(如果确实以良好的渐近方式下降)
2. as在1与早期停止
3,如1或2,但在一定的尝试各种不同的学习率(线性或对数)范围
4.如3,包括学习速率衰变
5.如3或4,包括体重衰变为正,或者更好,差如何设置学习率训练神经网络

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

上午我理解和正确实施呢?

回答

0

学习率来达到降低泛化误差可以依赖的问题。根据以前的经验,最佳学习率可以根据包括历元大小,学习迭代次数,隐藏层和/或神经元的数量以及输入的数量和格式在内的多个参数而不同。试验和错误经常被用来确定每个研究问题的理想学习条件。

有,用于给定的训练数据,隐藏层神经元和输出量神经网络参数提供一个合理的起点过去的一些论文。这可能是一个很好的起点。

也许其他动态模型可用来鼓励减少泛化误差进行局部极小。每个问题都有自己的理想参数,需要修改参数或使用某种形式的动态或自动模型来找到理想状态。

+1

所以你说的学习率应该修补,即上面的选项1或2不满意。然后,在[0.001,1]中说多少修补,即有多少n个点要尝试。在我的问题中,n = 10将需要几天时间。我看过论文“我们训练了我们的神经网络,学习率= 0.01 ...”,但他们做了多少修补并不清楚。 – ng0323 2014-08-29 10:20:06

+0

在我自己的研究和出版物中,我通常会修改神经网络参数,然后在研究论文中报告最佳条件。这些参数在我的论文中进行了评估和讨论,但是在出版物中保留的很少。这并不是说现在可能会有更多的动态模型可用,但过去的经验显示,不仅学习率和泛化误差之间存在相关性,还有神经网络的其他参数之间的相关性。我通常应用程序编号3(线性),这可能需要花费时间,具体取决于测试次数。 – 2014-09-01 00:05:56

4

这是一个困难的问题;甚至还有一个机器学习的子领域,专门用于探索这个,被称为hyperparameter optimization

解决超参数问题的最基本的方法是蛮力搜索,其中您尝试系统地改变沿网格的超参数设置(“网格搜索”)并选择最佳方法。这很慢,也很烦人,因为它似乎应该有更好的方法。

有思想对提高电网的搜索几个不同的学校:

  • 进化方法分配一些健身得分超参数的组合,然后尝试重新使用那些表现良好的参数设置组合一起。我最近在这个阵营中看到的最流行的方法是CMA-ES

  • 贝叶斯方法试图在研究人员认为对每个超参数都合理的值上放置某种先验分布。然后通过评估几个不同的超参数设置,您可以以统计上最优的方式将所得到的性能与先前的性能相结合。