有没有人设法让异步优势演员评论家与Mujoco实验合作?

时间:2016-09-28 04:06:46

标签: tensorflow deep-learning reinforcement-learning

我在Tensorflow中使用了a3c implementation的开源版本,这对于atari 2600实验非常有效。但是,当我修改Mujoco的网络时,outlined in the paper,网络拒绝学习任何有意义的东西。有没有人设法使a3c的任何开源实现与连续域问题一起工作,例如mujoco?

2 个答案:

答案 0 :(得分:6)

我做了Pendulum的连续动作,效果很好。

首先,您将构建您的神经网络并输出平均值(μ)和标准差(sigma)以选择动作。

持续行动的基本部分是包括正态分布。我使用tensorflow,所以代码看起来像:

normal_dist = tf.contrib.distributions.Normal(mu, sigma)
log_prob = normal_dist.log_prob(action)
exp_v = log_prob * td_error
entropy = normal_dist.entropy()  # encourage exploration
exp_v = tf.reduce_sum(0.01 * entropy + exp_v)
actor_loss = -exp_v  

当您想要采样动作时,请使用tensorflow函数:

sampled_action = normal_dist.sample(1)

Pendulum的完整代码可以在我的Github中找到。 https://github.com/MorvanZhou/tutorials/blob/master/Reinforcement_learning_TUT/10_A3C/A3C_continuous_action.py

答案 1 :(得分:3)

我很长时间都被挂了,希望这可以帮助我的人:

优势离散空间中的演员 - 评论家很容易:如果你的演员比你期望的更好,那就增加这种移动的可能性。如果情况更糟,请减少它。

在连续的空间中,你是怎么做到的?您的政策功能输出的整个向量就是您的行动 - 如果您处于政策上,并且您做得比预期的要好,那么就没有办法说“让我们更多地输出该行动!”因为你已经输出了那个矢量。

这就是Morvan的答案发挥作用的地方。您不是仅输出操作,而是为每个输出要素输出mean和std-dev。要选择一个操作,您可以传入输入以为每个输出要素创建一个均值/标准值,然后从此正态分布中对每个要素进行采样。

如果运行良好,则调整策略网络的权重以更改mean / stddev以鼓励此操作。如果你做得不好,你会做相反的事情。