我目前正在使用 ADAM 优化器,学习率为 0.001,权重衰减值为 0.005。
我知道权重衰减会随着时间的推移降低权重值,并且学习率会在正确的方向上修改为权重。具有比学习率更高的权重衰减值是否有意义?或者权重会比他们学到的更快地变为零吗?
我目前正在使用 ADAM 优化器,学习率为 0.001,权重衰减值为 0.005。
我知道权重衰减会随着时间的推移降低权重值,并且学习率会在正确的方向上修改为权重。具有比学习率更高的权重衰减值是否有意义?或者权重会比他们学到的更快地变为零吗?
训练神经网络意味着最小化一些误差函数,该函数通常包含两部分:数据项(当网络给出不正确的预测时会受到惩罚)和正则化项(确保网络权重满足其他一些假设),在我们的例子中权重衰减惩罚远非零的权重。错误函数可能如下所示:
,
其中是网络预测,是期望的输出(ground truth),是训练集的大小,是网络权重的向量。参数控制误差函数两部分的相对重要性。设置权重衰减对应于设置此参数。如果将其设置为较高的值,则网络不太关心训练集上的正确预测,而是保持较低的权重,希望在未见数据上具有良好的泛化性能。
如何最小化误差函数是完全不同的事情。您可以使用一种花哨的方法,例如 Adam,或者您可以采用简单的随机梯度下降法:两者都基于相同的迭代原理:
评估误差函数 wrt 权重的导数:
小步更新导数负方向的权重。
可以这样写:
参数称为学习率:它控制步长的大小。
因此,这两个参数相互独立,原则上将权重衰减设置为大于学习率是有意义的。实际上,这完全取决于您的具体场景:您使用的是哪种网络架构?有多少个权重?什么是误差函数?你在使用其他正则化器吗?等等。找到正确的超参数是你的工作。