我正在研究策略梯度方法。我偶然发现了这个实现: https ://gist.github.com/calclavia/cfcd41ad4e47d7b9b6ab8af15410747a 它使用了 Nesterov Adam 优化器。
如果我运行它,它会收敛并在OpenAI Gym 的 CartPole-v0上获得好分数。
但是,如果我将优化器从 Adam 更改为随机梯度下降 (SGD),它永远不会收敛并且似乎是随机运行的。为什么是这样?策略梯度方法是否存在使 SGD 成为糟糕选择的问题?
注意:该代码中存在一个错误,该错误仅将这一集运行 100 个时间步长。这一集最多可以运行 200 个时间步长。我在运行它时解决了这个问题。