超参数调优的顺序

我在使用神经网络进行分类问题,现在到了调整所有超参数的阶段。

目前,我看到许多不同的超参数需要调整:

  1. 学习率
  2. 批次大小
  3. 迭代次数(周期)

目前,我的调整方式相当“手动”,我不确定自己是否在以正确的方式进行。调整参数是否有特定的顺序?例如,先调整学习率,然后是批次大小,然后……我不确定所有这些参数是否是独立的。哪些参数显然是独立的,哪些显然不是独立的?我们应该一起调整哪些参数吗?有没有论文或文章讨论以特定顺序正确调整所有参数的方法?


回答:

还有更多!例如,层数,每层的神经元数量,选择哪个优化器,等等……

因此,训练神经网络的真正工作实际上是找到最合适的参数。

我认为没有明确的指导方针,因为一般来说,训练机器学习算法总是任务特定的。你看,有很多超参数需要调整,你不会有时间尝试每种组合。对于许多超参数,你会建立一些关于什么是好选择的直觉,但现在,一个很好的起点总是使用其他人已经证明有效的参数。所以如果你找到一篇关于相同或类似任务的论文,你也可以尝试使用他们相同的或相似的参数。

只是分享一些我个人的小经验:

  • 我很少改变学习率。我通常选择Adam优化器并坚持使用它。
  • 批次大小我尽量选择尽可能大但不超出内存限制
  • 迭代次数可以简单地设置为例如1000。你可以随时查看当前的损失,并根据网络是否不再学习来决定是否停止。

请记住,这些绝不是规则或严格的指导方针。只是在你自己建立更好的直觉之前的一些想法。你读的论文越多,训练的网络越多,你就会越明白在什么时候选择什么。希望这至少能成为一个好的起点。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注