Neural network 我们应该按什么顺序调整神经网络中的超参数?
我有一个非常简单的ANN,使用Tensorflow和AdamOptimizer处理回归问题,现在我要调整所有超参数 现在,我看到许多不同的超参数需要调整:Neural network 我们应该按什么顺序调整神经网络中的超参数?,neural-network,tensorflow,hyperparameters,Neural Network,Tensorflow,Hyperparameters,我有一个非常简单的ANN,使用Tensorflow和AdamOptimizer处理回归问题,现在我要调整所有超参数 现在,我看到许多不同的超参数需要调整: 学习率:初始学习率、学习率衰减 AdamOptimizer需要4个参数(学习速率、beta1、beta2、epsilon),所以我们需要对它们进行调优——至少是epsilon 批量 迭代次数 Lambda L2正则化参数 神经元数量,层数 隐藏层和输出层的激活功能是什么 退出参数 我有两个问题: 1) 你有没有看到其他我可能忘记的超参数
- 学习率:初始学习率、学习率衰减
- AdamOptimizer需要4个参数(学习速率、beta1、beta2、epsilon),所以我们需要对它们进行调优——至少是epsilon
- 批量
- 迭代次数
- Lambda L2正则化参数
- 神经元数量,层数
- 隐藏层和输出层的激活功能是什么
- 退出参数
Paul对于不太重要的参数,您可以选择一个合理的值并坚持使用
正如你所说,这些参数的最佳值都是相互依赖的。最简单的方法是为每个超参数定义一个合理的值范围。然后从每个范围随机抽取一个参数,并使用该设置训练模型。重复几次,然后选择最好的型号。如果幸运的话,您将能够分析哪些超参数设置工作得最好,并从中得出一些结论。运行Tensorboard。在那里绘制错误。您需要在TB查找要打印的数据的路径中创建子目录。我在脚本中创建细分曲面。因此,我在脚本中更改了一个参数,在那里为试验命名,运行它,并在同一个图表中绘制所有试验。您很快就会感受到图形和数据的最有效设置。我的一般顺序是:
- 网络中的神经元数量
- 层数
- 学习率和批量大小
- 学习率和神经元数量
- 神经元数量和层数
- 对于Adam优化器:“本文中的推荐值为eps=1e-8,beta1=0.9,beta2=0.999。”()
- 对于Adam和RMSProp的学习率,我发现0.001左右的值对于大多数问题都是最优的李>
- 作为Adam的替代方案,您还可以使用RMSProp,它可以将内存占用减少多达33%。有关更多详细信息,请参阅
- 还可以调整初始权重值(请参见)。尽管如此,Xavier初始值设定项似乎是一种很好的方法,可以避免调整权重初始化
- 我没有将迭代次数/时代数调整为超参数。我训练网络直到其验证误差收敛。然而,我给每一次运行一个时间预算
- 将批处理大小设置为在硬件上工作的最大值(或最大功率为2)。只需增加它,直到出现CUDA错误(或系统RAM使用率>90%)
- 将正则化设置为低值
- 结构和神经元和层的确切数量-使用已知的结构作为灵感,并根据您的具体性能要求进行调整:更多的层和神经元->可能是更强但较慢的模型
学习率
学习率
——这是最重要的超参数
谢谢你的回答!因此,随机选择所有超参数的值并对它们进行整体优化比单独优化每个超参数更好?是的。除非有一些你知道的超参数没有那么重要。对于这些,您可以选择一个值并优化其余值。例如,人们可能会任意决定使用两层