针对深层网络优化超参数

时间:2017-01-24 18:12:53

标签: optimization machine-learning neural-network deep-learning hyperparameters

我目前正在尝试为CLDNN(卷积,LSTM,深度神经网络)提出一种新颖的结构

正如任何其他网络一样,我很难优化超参数。

我想尝试使用网格搜索和随机搜索来获得一组最佳的超参数,但我对一些事情并不清楚。

  1. 如果我使用一组临时超参数运行网络模拟,我该如何衡量超参数的“优点”?我考虑在每次模拟的N个时期之后记录成本和训练准确度。

  2. 由于每次模拟需要相对较长的时间(对于我的网络,需要大约70秒来训练一个纪元),有没有更快的方法来检查超参数的“优点”而不实际运行完整的训练?

  3. 是否有针对超参数优化的一般提示/建议?

1 个答案:

答案 0 :(得分:1)

  1. 所以基本上 - 为了测量不同超参数的性能 - 最佳实践是模拟最终分类器在每个参数设置的训练数据上的训练过程 - 然后比较不同的结果与您想要的测量超优化
  2. 如果您改变训练过程(例如通过在超优化阶段设置固定的时期速率,然后在最终训练中设置不同) - 您不应期望在多个测试阶段获得的结果会一概而论。在我看来,这可能会损害您的优化过程,尤其是一些超参数设置需要更多时间来实际获得良好的结果(例如,当您设置非常高的辍学率)并且在选择最佳值期间缩短培训时间可能会使得超参数设置产生在早期训练阶段更好的结果更有利。
  3. 良好做法?:
    • 选择random search,而不是网格搜索。通常,您的培训网络对某些参数的敏感度较低,因此进行全网格搜索会浪费时间,
    • 如果您想尝试更复杂的方法,可以尝试更复杂的方法,例如bayessian hyperoptimization
    • 使用交叉验证或多次使用给定的超参数设置运行您的网络。这是因为神经网络可能对起始权重敏感 - 所以分数数据可能不会很好地概括,
    • 并行化您的培训流程。尝试运行培训流程,例如在不同的机器上,然后简单地合并结果。