目标中公式的哪些特定变化会将神经网络从梯度下降变为梯度上升?

时间:2018-12-25 14:53:00

标签: deep-learning pytorch reinforcement-learning

在强化学习中遇到它很奇怪。亏损是MSE。一切都应该是完美的,以实现梯度下降,现在它是梯度上升。我想知道魔术。我做了numpy神经网络。导数的变化导致梯度上升。导数有什么特别的变化会导致梯度上升? autograd看到它是凹面还是凸面这么简单?

1 个答案:

答案 0 :(得分:2)

这是一个很好的问题,如果您要进行梯度上升,则必须表示您正在进行各种策略梯度强化学习。

首先,让我代表该社区中的一些人道歉,因为他们可能不完全理解该主题,并决定对该问题投反对票。这个问题非常针对AI领域,您可能会在AI Stack Exchange中运气更好。

回到问题。进行梯度上升非常简单,长话短说,只需要应用梯度下降即可,只是在梯度项前面放了一个减号!

在张量流代码中:

gradients = - tf.compute_gradients(loss)
update = tf.apply_gradients(zip(gradients, vars))

这是基本的梯度下降算法,其中theta是模型的权重,alpha是学习率,dJ / dtheta是损失函数相对于权重的梯度。

enter image description here

在上面,我们要减小梯度,因为我们想使损耗最小。但是,在政策梯度方法中,我们要最大化回报,并且由于我们正对奖励采取梯度(直觉上),因此我们希望将其最大化。

请参见TowardsDataScience的下图,您自然可以看到权重已更新为最低J的方向。(请注意,正值而不是负值)

enter image description here

通过简单地更改更新的符号,我们可以改用其他方式(即,最大化奖励

enter image description here

下面是策略梯度方法的梯度形式方程式。策略* Vt的梯度本质上是dJ / dtheta。

enter image description here