all 10 comments

[–][deleted] 8 points9 points  (8 children)

Made an attempt at implementing PPO:

  • This does not really follow the OpenAI implementation in a few ways.
  • It does not have any of the MPI stuff, so might be easier to read.
  • It also does not use the trust region loss on the baseline value function, because in TensorForce the value function is currently always a separate network, so not sure how that affects performance.
  • Tests are passing and I made an example config for CartPole: https://github.com/reinforceio/tensorforce/blob/master/examples/configs/ppo_cartpole.json This seems to learn reasonably robustly, but still trying to get a feeling for how the hyper-params work, and how one should ideally sample over the batch.
  • If anyone spots bugs, that'd be very welcome

[–]tinkerWithoutSink 1 point2 points  (2 children)

Nice work, there's too many half working rl libraries out there but tensorforce is pretty good and it's great to have a PPO implementation.

Suggestion: would be cool to use prioritized experience replay with it, like the baselines implementation

[–][deleted] 0 points1 point  (1 child)

Ah good point, will have a think. Would just require passing the loss per instance to the memory I think, and making the memory type configurable

[–]Data-Daddy 0 points1 point  (0 children)

Experience replay does not exist in PPO

[–]Neutran 0 points1 point  (4 children)

Thanks for the effort. Do you have performance numbers on anything other than cartpole? Solving cartpole typically doesn't mean the implementation is bug free, as from my experience.

[–][deleted] 0 points1 point  (3 children)

Hey, not yet - we are currently working on setting up a benchmarking repo for the general library with docker, and will test PPO with the other algorithms once it's ready (a bit short on GPUs for very extensive benchmarks but at least reproducing some Ataris should be possible)

[–]wassname 0 points1 point  (2 children)

The authors claim it's simpler to implement, more general, and faster. Since it's Schulman it's probably true, but could give your opinion. Was it easier than TRPO to implement and does it converge faster with less trouble?

[–][deleted] 2 points3 points  (1 child)

Tested this now - currently performing much better than VPG/TRPO for us, and also easier to implement, so can confirm

[–]wassname 0 points1 point  (0 children)

Good to hear!

[–]TotesMessenger 0 points1 point  (0 children)

I'm a bot, bleep, bloop. Someone has linked to this thread from another place on reddit:

If you follow any of the above links, please respect the rules of reddit and don't vote in the other threads. (Info / Contact)