Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 如何设置训练神经网络的学习率_Neural Network - Fatal编程技术网

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

Neural network 如何设置训练神经网络的学习率,neural-network,Neural Network,关于在NN中选择隐藏层和单位的数量,请参考此答案: 帖子建议增加隐藏单位的数量,直到泛化错误开始增加。 但我的问题是学习速度。给定一个隐藏单元的数字值(即图形中的一个数据点或一个特定架构,例如10个隐藏单元),我如何设置学习速率和要训练的历元数? 1.使用固定的学习率(在检查其收敛后,即成本下降),运行n个时期或直到成本(或验证错误)稳定(如果它确实以良好的渐进方式下降) 2.与1相同,提前停止 3.如1或2所示,但在特定(线性或对数)范围内尝试不同的学习速率 4.如图3所示,包括学习率衰减

关于在NN中选择隐藏层和单位的数量,请参考此答案:
帖子建议增加隐藏单位的数量,直到泛化错误开始增加。
但我的问题是学习速度。给定一个隐藏单元的数字值(即图形中的一个数据点或一个特定架构,例如10个隐藏单元),我如何设置学习速率和要训练的历元数?
1.使用固定的学习率(在检查其收敛后,即成本下降),运行n个时期或直到成本(或验证错误)稳定(如果它确实以良好的渐进方式下降)
2.与1相同,提前停止
3.如1或2所示,但在特定(线性或对数)范围内尝试不同的学习速率
4.如图3所示,包括学习率衰减
5.如3或4中所述,包括作为正则化的权重衰减,或者更好的是,退出

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


我是否正确理解和练习了这一点?

用于降低泛化错误的学习率可能取决于问题。从以前的经验来看,最佳学习速率可能会根据许多参数而有所不同,这些参数包括历元大小、学习迭代次数、隐藏层和/或神经元的数量以及输入的数量和格式。为了确定所研究的每个问题的理想学习条件,经常使用试错法

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


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

用于降低泛化误差的学习率可能取决于问题。从以前的经验来看,最佳学习速率可能会根据许多参数而有所不同,这些参数包括历元大小、学习迭代次数、隐藏层和/或神经元的数量以及输入的数量和格式。为了确定所研究的每个问题的理想学习条件,经常使用试错法

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


也许还有其他动态模型可以用来鼓励最小化局部极小值以外的泛化误差。每个问题都有自己的理想参数,需要修补参数或使用某种形式的动态或自动模型来找到理想的参数。

这是一个困难的问题;甚至还有一个机器学习的子领域专门研究这个问题,叫做

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

关于改进网格搜索,有几种不同的想法:

  • 进化方法将一些适应度评分分配给超参数组合,然后尝试重新使用一起表现良好的参数设置组合。我最近在这个营地看到的最流行的方法是

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


    • 这是一个难题;甚至还有一个机器学习的子领域专门研究这个问题,叫做

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

      关于改进网格搜索,有几种不同的想法:

      • 进化方法将一些适应度评分分配给超参数组合,然后尝试重新使用一起表现良好的参数设置组合。我最近在这个营地看到的最流行的方法是

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


      所以你是说学习率应该调整,即上面的选项1或2不令人满意。然后,多少修补,即尝试多少n点,比如[0.001,1]。在我的问题中,n=10需要几天的时间。我看到一些论文说“……我们用学习率=0.01来训练我们的神经网络……”,但不清楚他们做了多少修补。在我自己的研究和出版物中,我通常会修补神经网络参数,然后在研究论文中报告最佳条件。这些参数在我的论文中进行了评估和讨论,但在出版物中保持简短。这并不是说可能还有更多