clipnorm是在keras动量之前还是之后应用的?

2024-09-26 18:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

在Keras或Tensorflow中clipnorm重新调整大“梯度”以具有特定范数,并且clipvalue限制“梯度”的所有值

但是如果你把它们中的一个和moemntum或者类似的东西结合起来会发生什么呢?它是应用在梯度上,还是更确切地说,应用在速度上

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)

或者也有可能是‘’

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

A(和A')将面临这样一个问题,即即使梯度的范数有界,由于动量的作用,速度可能会变得任意大,而clipnorm会使分解速度或改变方向的速度变得更慢

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

对于clipvalueadam以及其他基于动量的算法,可以类似地问同样的问题

PS:如果clipnorm没有按照B中的建议实施,我想知道是否也有可能通过使用不同的选项在keras中获得B


Tags: 范数参数ratetensorflow动量速度keraslearning

热门问题