# of epochs 和 batch size 在超参数调整过程中属于哪里?
Where do # of epochs and batch size belong in the hyperparameter tuning process?
我对机器学习还很陌生,正在为我的模型优化超参数。我通过随机搜索来做到这一点。我的问题是:我是否应该搜索超过 # 个时期和批量大小以及我的其他超参数(例如损失函数、层数等)?如果不是,我是否应该先修复这些值,找到其他参数,然后 return 调整这些?
我担心的是 a) 搜索多个时期将非常耗时,因此将其保留在一个较低的值以进行初始扫描会很有用,并且 b) 这些参数,尤其是。 # of epochs,当模型表现良好时,会不成比例地影响结果,并且不会真正给我太多关于我的架构其余部分的信息,因为应该有一个机制,在某种程度上,更多的 epochs 更好。我知道这并不完全准确,即 # of epochs 是一个真正的超参数,太多会导致过度拟合问题,例如。目前,我的模型并没有明显改善 # of epochs,尽管在我的研究领域从事类似问题的人建议说这可以通过实施批归一化来缓解,这是我正在测试的另一个参数。最后,我担心批量大小会受到相当大的影响,因为我将数据缩小到 60% 以允许我的代码合理 运行(我认为最终模型将在更多数据上进行训练比我目前可用的模拟数据)。
我同意你对纪元的直觉。为了在相同的工作小时数内完成更多的培训 "experiments",通常将此值保持得尽可能低。我在这里没有很好的参考资料,但欢迎在评论中提供。
对于几乎所有其他内容,Leslie N. Smith 的一篇论文我怎么推荐都不为过,A disciplined approach to neural network hyper-parameters: Part 1 -- learning rate, batch size, momentum, and weight decay。
如您所见,包括批量大小但不包括时期。您还会注意到模型架构不包括在内(层数、层大小等)。 Neural Architecture Search 本身就是一个巨大的研究领域,独立于超参数调整。
至于损失函数,我想不出有任何理由 "tune" 除了在仅用于训练的辅助损失的情况下,我怀疑这不是你在说的。
将应用于验证或测试集的损失函数是问题陈述的一部分。这与数据一起定义了您要解决的问题。您不是通过调整来更改它,而是通过说服产品经理您的替代方案更适合业务需求来更改它。
我对机器学习还很陌生,正在为我的模型优化超参数。我通过随机搜索来做到这一点。我的问题是:我是否应该搜索超过 # 个时期和批量大小以及我的其他超参数(例如损失函数、层数等)?如果不是,我是否应该先修复这些值,找到其他参数,然后 return 调整这些?
我担心的是 a) 搜索多个时期将非常耗时,因此将其保留在一个较低的值以进行初始扫描会很有用,并且 b) 这些参数,尤其是。 # of epochs,当模型表现良好时,会不成比例地影响结果,并且不会真正给我太多关于我的架构其余部分的信息,因为应该有一个机制,在某种程度上,更多的 epochs 更好。我知道这并不完全准确,即 # of epochs 是一个真正的超参数,太多会导致过度拟合问题,例如。目前,我的模型并没有明显改善 # of epochs,尽管在我的研究领域从事类似问题的人建议说这可以通过实施批归一化来缓解,这是我正在测试的另一个参数。最后,我担心批量大小会受到相当大的影响,因为我将数据缩小到 60% 以允许我的代码合理 运行(我认为最终模型将在更多数据上进行训练比我目前可用的模拟数据)。
我同意你对纪元的直觉。为了在相同的工作小时数内完成更多的培训 "experiments",通常将此值保持得尽可能低。我在这里没有很好的参考资料,但欢迎在评论中提供。
对于几乎所有其他内容,Leslie N. Smith 的一篇论文我怎么推荐都不为过,A disciplined approach to neural network hyper-parameters: Part 1 -- learning rate, batch size, momentum, and weight decay。
如您所见,包括批量大小但不包括时期。您还会注意到模型架构不包括在内(层数、层大小等)。 Neural Architecture Search 本身就是一个巨大的研究领域,独立于超参数调整。
至于损失函数,我想不出有任何理由 "tune" 除了在仅用于训练的辅助损失的情况下,我怀疑这不是你在说的。
将应用于验证或测试集的损失函数是问题陈述的一部分。这与数据一起定义了您要解决的问题。您不是通过调整来更改它,而是通过说服产品经理您的替代方案更适合业务需求来更改它。