是在角动量动量之前或之后应用clipnorm吗?

问题描述

在Keras或Tensorflow中,clipnorm重新缩放大型“渐变”以具有特定范数,clipvalue限制了“渐变”的所有值。

但是,如果将其中之一与moemntum或类似adam的东西合并会发生什么?是应用在梯度上还是应用在速度上?

A)将clipnorm应用于关于参数的损耗的实际纯数学梯度g上,然后使用该修剪的梯度使用旧梯度的动量来计算更新步长和学习率?

veLocity = momentum * veLocity - learning_rate * clipnorm(g)
w = w + veLocity

B)首先,将旧梯度的动量与未修改的新梯度结合起来。然后,通过clipnorm缩放结果矢量(“速度”)。

veLocity = clipnorm(momentum * veLocity - learning_rate * g)
w = w + veLocity

或B')

veLocity = momentum * veLocity - learning_rate * g
w = w + clipnorm(veLocity)

否则也可能会出现A')

veLocity = momentum * veLocity - clipnorm(learning_rate * g)
w = w + veLocity

???

A(和A')将受到以下问题的困扰:即使梯度的范数有界,由于动量,速度也可能会变得任意大,而裁剪范数会使分解速度或改变方向的速度变得更慢

从我的角度来看,B是最合理的选择,但我不知道它是如何实现的。

可以类似地询问clipvalueadam以及其他基于动量的算法。

PS:如果未按照B的建议实施clipnorm,那么如果也有可能通过使用其他选项在keras中获得B,我会感到困惑吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)