问题标签 [policy-gradient-descent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
188 浏览

pytorch - 训练双足系统时奖励不增加

我对强化学习完全陌生,这是我在实践中的第一个程序。我正在尝试使用策略梯度算法在 OpenAI 健身房环境中训练双足系统。

然而,奖励永远不会改变,无论是在第 0 集还是在第 1000 集,我都不知道出了什么问题。谁能帮帮我..

TIA。

代码如下:

调用如下

0 投票
3 回答
815 浏览

python - 在强化学习的策略梯度中反向传播了哪些损失或奖励?

我用 Python 编写了一个小脚本来解决各种带有策略梯度的 Gym 环境。

应该向后传递什么来计算梯度?我正在使用梯度上升,但我可以将其切换为下降。有些人将奖励函数定义为totalReward*log(probabilities)。这会使分数导数totalReward*(1/probs)log(probs)还是其他什么?您是否使用交叉熵之类的成本函数?我试过了
totalReward*np.log(probs)
totalReward*(1/probs)
totalReward*(probs**2)
totalReward*probs

和其他几个。最后一个是唯一能够解决其中任何一个问题的,它只在 Cartpole 上有效。我已经在 Cartpole、Pendulum 和 MountainCar 上测试了数千个带有梯度上升和下降的情节的各种损失或评分函数。有时它会改善一点,但它永远不会解决它。我究竟做错了什么?

这是 RLPolicy 代码。它写得不好或伪编码不好,但我认为这不是问题,因为我用梯度检查多次检查过它。但即使我可以将其缩小到神经网络或我代码中的其他地方的问题,它也会有所帮助。

感谢您的任何回答,这是我在这里的第一个问题。

0 投票
2 回答
330 浏览

reinforcement-learning - 如何解决策略梯度中的零概率问题?

最近,我尝试将朴素的策略梯度方法应用于我的问题。但是,我发现最后一层神经网络的不同输出之间的差异是巨大的,这意味着在应用了 softmax 层之后,只有一个动作会被标记为 1,而其他动作会被标记为 0。例如,最后一层的输出如下图所示:

应用 softmax 函数后,很明显只会选择一个动作。

这个问题严重影响了最终的性能,因为神经网络只会在几步之后尝试不断的动作。因此,有没有办法解决这个问题?

(顺便说一句,即使我试图给神经网络一些负奖励,它选择的动作仍然没有改变。)

我的训练曲线如下图所示: 训练曲线

0 投票
1 回答
101 浏览

python - PPO2强化学习“灾难性遗忘”?

我正在对我的自建任务实施 PPO2 强化学习,并且总是遇到代理似乎接近成熟然后突然灾难性地失去其性能并且无法保持其稳定性能的情况。我不知道用什么词来形容它是正确的。

我只是想知道造成这种灾难性性能下降的原因是什么?任何提示或提示?

非常感谢

学习 过程1 学习过程2

0 投票
1 回答
76 浏览

reinforcement-learning - MlpPolicy 仅返回 1 和 -1 与 action spece[-1,1]

我尝试使用 Stable Baseliens 训练带有 MlpPolicy 的 PPO2。在 100k 时间步之后,我只能得到 1 和 -1 的作用。我将动作空间限制为 [-1, 1] 并直接使用动作作为控制。不知道是不是因为我直接用action作为控制?

0 投票
0 回答
53 浏览

reinforcement-learning - Policy Gradient 与函数逼近的收敛保证

是否有任何具有“一般”值/Q 函数逼近的策略梯度算法的收敛证明?开创性论文 (Sutton1999 & Tsitsiklis1999) 使用兼容性假设证明了该定理(即 Q 函数近似与策略特征是线性的)。此外,后来的改进如 DPG(Silver14)也有类似的假设。

然而在实践中,不满足这种兼容性假设,策略网络和 Q 功能网络有自己的、独立的参数集。

因此,我想知道这些方法在多大程度上得到了理论保证的支持。

谢谢,

(Sutton1999):使用函数近似进行强化学习的策略梯度方法,Sutton 等人,1999 (Silver2014):确定性策略梯度算法,Silver 等人,2014 (Tsitsiklis1999):Actor-Critic 算法,Tsitsiklis 等人,1999

0 投票
1 回答
1204 浏览

deep-learning - DDPG 不收敛于一个简单的控制问题

我正在尝试用 DDPG 解决控制问题。这个问题很简单,所以我可以对其离散化版本进行价值函数迭代,因此我有一个“完美”的解决方案来比较我的结果。但我想用 DDPG 解决问题,希望将 RL 应用到更难的版本。

关于问题的一些细节

  1. 控制空间为[0,1],状态空间维度为2
  2. 这是一个随机环境,状态之间的转换不是确定性的
  3. 在任何时期都有一些非常量的奖励,所以稀疏的奖励应该不是问题
  4. 价值函数迭代只需要10分钟左右,又是一个相当简单的控制问题

有什么问题

我的代理最终总是收敛到一个退化的策略,动作总是 1 或 0。在训练的某个时候,它可能有点接近正确的策略,但它从来没有真正接近。

同样,我通常无法正确确定 Q 函数的形状:

作为动作函数的典型状态的 Q 值

我试图做的

  1. 我在actor网络的末尾放了一个sigmoid层(自然是因为控制空间是[0,1])
  2. 我有政策和批评的目标网络
  3. 我拍手让它们在 [0.01, 0.99] 之间(完美的解决方案总是在这些范围内)
  4. 我尝试添加一些人为的惩罚来奖励接近 0 和 1 的动作。然后,算法收敛到其他东西,但又没有收敛到好的东西。
  5. 我尝试了随机均匀探索或添加小的正常噪声。我要么随时间降低探索率,要么保持不变但很小
  6. 为了检查我的代码,我进行了以下实验。我会首先将政策修复为“完美”政策并仅更新批评者。在这种情况下,我设法很好地学习了 Q 网络(形状也是如此)。然后,我冻结评论家并使用 DDPG 更新规则仅更新参与者。我设法非常接近完美的政策。但是当我开始同时更新actor和critic时,它们再次分化为退化的东西。
  7. 我对我的超参数进行了很多实验,目前它们如下:

我将非常感谢任何建议,谢谢!

0 投票
0 回答
206 浏览

python - 如何在pytorch中钳制神经元的输出

我正在使用简单的 nn 线性模型(20,64,64,2)进行深度强化学习。我使用这个模型来近似 PPO 算法的策略梯度。因此,输出层给出 2 个值,即均值和标准差。这些参数在环境中进一步用于采样更多数据。对于环境,参数值应该在阈值之间。mean = [max, min]std = [max, min]

在训练时,经过一些迭代,输出层的参数值突然增加,因此环境无法采样更多数据。环境使用模型的输出,我无法改变环境以使其稳定。因此,有什么方法可以限制阈值的参数值或进行钳位。(损失是根据环境采样的数据然后反向传播计算的)

您可以在下面找到该模型的示例代码:

我尝试了以下结构...

但是在反向传播时会出错:

RuntimeError:梯度计算所需的变量之一已被就地操作修改:[torch.DoubleTensor [499, 2]],即 SelectBackward 的输出 0,处于版本 3;而是预期的版本 2。提示:启用异常检测以查找未能计算其梯度的操作,使用 torch.autograd.set_detect_anomaly(True)。

提前致谢!

0 投票
1 回答
55 浏览

python - ValueError:没有为策略梯度中的任何变量提供梯度

我一直在尝试在强化学习中实现策略梯度算法。但是,在计算自定义损失函数的梯度时,我遇到了错误“ValueError:没有为任何变量提供梯度:”,如下所示:

我正在计算梯度如下:

请在这个问题上帮助我。谢谢

0 投票
0 回答
39 浏览

python - Cartpole 的 Actor-Critic 算法的平均奖励没有提高

我一直在尝试在健身房中为 Cartpole env 实施 actor-critic。我已经成功地为同一个环境实现了策略梯度。因此,仅更新了演员部分。但该算法似乎不起作用,因为平均奖励没有提高。

我已经尝试过多次调整网络参数以改进损失函数,但似乎没有任何效果。下面是我的代码。

演员和评论家网络的代码

我正在更新网络如下:

Rest 是相同的标准 RL 代码。不过,我还附上了整个代码。请调查一下并帮助找出我哪里出错了。

代码链接