2

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

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

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

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

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

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

4

1 回答 1

1
  1. 所以基本上 - 为了测量不同超参数的性能 - 最佳实践是模拟在每个参数设置的训练数据上训练最终分类器的过程 - 然后比较不同的结果关于你想要超优化的度量。
  2. 如果您更改训练过程(例如,通过在超优化阶段设置固定的 epoch 速率,然后在最终训练中设置不同) - 您不应期望在多个测试阶段获得的结果会泛化。在我看来,这可能会损害您的优化过程,尤其是某些超参数设置需要更多时间才能真正获得良好的结果(例如,当您设置非常高的 dropout 率时),并且在选择最佳值期间缩短训练时间可能会使超参数设置提供在早期训练阶段更好的结果更有利。
  3. 好的做法?:
    • 选择随机搜索,而不是网格搜索。通常您的训练网络对某些参数不太敏感,因此进行完整的网格搜索会浪费时间,
    • 如果您想尝试更复杂的方法,您可以尝试更复杂的方法,例如贝叶斯超优化
    • 使用交叉验证或使用给定的超参数设置多次运行您的网络。这是因为神经网络可能对起始权重敏感 - 所以分数数据可能无法很好地概括,
    • 并行化您的培训过程。尝试在不同的机器上运行训练过程,然后简单地合并结果。
于 2017-01-25T10:53:47.250 回答