我在caffe中使用Adam方法。它具有delta / epsilon调整参数(用于避免除以零)。在caffe中,其默认值为1e-8。我可以将它改为1e-6或1-e0。从tensorflow,我听说这个参数会影响训练的表现,特别是有限的数据集。
一般来说,epsilon的默认值1e-8可能不是一个好的默认值。例如,在ImageNet上训练Inception网络时,当前的好选择是1.0或0.1。
如果有人试过改变这个参数,请给我一些关于这个参数对性能影响的建议吗?
答案 0 :(得分:2)
考虑Adam的更新方程:epsilon是在梯度标准偏差为零(指数衰减平均值)的情况下防止除以零。
为什么低值的epsilon会导致问题?也许有些情况下,某些参数在其他参数之前会达到良好的值,并且ε太低意味着这些参数会获得巨大的学习率并被推离这些良好的价值。我猜这会像resnet这样的问题更多,其中很多层对大部分示例都没有什么影响。
另一方面,将epsilon设置得更高既限制了参数学习率的影响,又降低了所有学习率,减慢了培训速度。有可能找到更高的epsilon值的例子,因为学习率太高而不能开始。