target 中公式的什么特殊变化将神经网络从梯度下降变为梯度上升?
What particular change of formula in target changes neural network from gradient descent into gradient ascent?
当我在强化学习中遇到它时,我感到很奇怪。损失是 MSE。一切都应该是梯度下降的完美,现在是梯度上升。我想知道魔法我做了 numpy 神经网络。导数的变化导致梯度上升。导数的哪些特定变化导致梯度上升? autograd看是凹还是凸就这么简单吗?
这是一个很好的问题,如果你在做梯度上升,那一定意味着你在做策略梯度强化学习的变体。
首先,让我代表这个社区的一些人道歉,因为他们可能不完全理解这个话题并决定对这个问题投反对票。这个问题非常针对 AI 领域,你在 AI Stack Exchange 上发帖可能会有更好的运气。
回到问题。做梯度上升非常简单,长话短说,你只是应用梯度下降,除了你在梯度项前面加一个负号!
在张量流代码中:
gradients = - tf.compute_gradients(loss)
update = tf.apply_gradients(zip(gradients, vars))
这是基本的梯度下降算法,其中theta是模型的权重,alpha是学习率,dJ/dtheta是损失函数相对于权重的梯度。
在上面,我们下降梯度是因为我们想最小化损失。但是在策略梯度方法中,我们想要 最大化 returns,并且由于我们正在采用关于奖励的梯度(直观地),我们想要最大化它。
请看下面来自 TowardsDataScience 的图片,你可以看到权重自然地更新到 J 最低的方向。(注意正而不是负)
通过简单地改变更新的符号,我们可以改为走另一条路(即最大化奖励
下面是策略梯度方法的梯度梯度形式方程。 policy * Vt 的梯度本质上是 dJ/dtheta.
当我在强化学习中遇到它时,我感到很奇怪。损失是 MSE。一切都应该是梯度下降的完美,现在是梯度上升。我想知道魔法我做了 numpy 神经网络。导数的变化导致梯度上升。导数的哪些特定变化导致梯度上升? autograd看是凹还是凸就这么简单吗?
这是一个很好的问题,如果你在做梯度上升,那一定意味着你在做策略梯度强化学习的变体。
首先,让我代表这个社区的一些人道歉,因为他们可能不完全理解这个话题并决定对这个问题投反对票。这个问题非常针对 AI 领域,你在 AI Stack Exchange 上发帖可能会有更好的运气。
回到问题。做梯度上升非常简单,长话短说,你只是应用梯度下降,除了你在梯度项前面加一个负号!
在张量流代码中:
gradients = - tf.compute_gradients(loss)
update = tf.apply_gradients(zip(gradients, vars))
这是基本的梯度下降算法,其中theta是模型的权重,alpha是学习率,dJ/dtheta是损失函数相对于权重的梯度。
在上面,我们下降梯度是因为我们想最小化损失。但是在策略梯度方法中,我们想要 最大化 returns,并且由于我们正在采用关于奖励的梯度(直观地),我们想要最大化它。
请看下面来自 TowardsDataScience 的图片,你可以看到权重自然地更新到 J 最低的方向。(注意正而不是负)
通过简单地改变更新的符号,我们可以改为走另一条路(即最大化奖励
下面是策略梯度方法的梯度梯度形式方程。 policy * Vt 的梯度本质上是 dJ/dtheta.