我在使用神经网络进行分类问题,现在到了调整所有超参数的阶段。
目前,我看到许多不同的超参数需要调整:
- 学习率
- 批次大小
- 迭代次数(周期)
目前,我的调整方式相当“手动”,我不确定自己是否在以正确的方式进行。调整参数是否有特定的顺序?例如,先调整学习率,然后是批次大小,然后……我不确定所有这些参数是否是独立的。哪些参数显然是独立的,哪些显然不是独立的?我们应该一起调整哪些参数吗?有没有论文或文章讨论以特定顺序正确调整所有参数的方法?
回答:
还有更多!例如,层数,每层的神经元数量,选择哪个优化器,等等……
因此,训练神经网络的真正工作实际上是找到最合适的参数。
我认为没有明确的指导方针,因为一般来说,训练机器学习算法总是任务特定的。你看,有很多超参数需要调整,你不会有时间尝试每种组合。对于许多超参数,你会建立一些关于什么是好选择的直觉,但现在,一个很好的起点总是使用其他人已经证明有效的参数。所以如果你找到一篇关于相同或类似任务的论文,你也可以尝试使用他们相同的或相似的参数。
只是分享一些我个人的小经验:
- 我很少改变学习率。我通常选择Adam优化器并坚持使用它。
- 批次大小我尽量选择尽可能大但不超出内存限制
- 迭代次数可以简单地设置为例如1000。你可以随时查看当前的损失,并根据网络是否不再学习来决定是否停止。
请记住,这些绝不是规则或严格的指导方针。只是在你自己建立更好的直觉之前的一些想法。你读的论文越多,训练的网络越多,你就会越明白在什么时候选择什么。希望这至少能成为一个好的起点。