tensorflow-reinforce icon indicating copy to clipboard operation
tensorflow-reinforce copied to clipboard

Compute policy gradient using cross entropy loss

Open weiliu620 opened this issue 7 years ago • 2 comments

This is not an issue of the code per se, but I am learning RL and am wondering how the policy gradient is calculated in pg_reinforce.py. In this line

self.cross_entropy_loss = tf.nn.sparse_softmax_cross_entropy_with_logits(
logits=self.logprobs, labels=self.taken_actions)

A loss defined as the cross entropy between the action distribution from policy, and the actual action taken. But standard text such as Sutton define the policy gradient in the the REINFORCE algorithm simply as the 'log grad' of the policy function.

What is the difference of the two definitions? It seems cross entropy loss is a more general definition because it includes not just the action taken but all remaining actions. Can you give a reference of your method?

This is great project. Thank you for sharing this.

weiliu620 avatar Oct 11 '17 21:10 weiliu620

Did you get an answer? @weiliu620 Currently I am learning RL. Please help

Utsavz avatar Dec 13 '17 06:12 Utsavz

@Utsavz @weiliu620

  • The 'log grad' of the policy function is the log(p(x)).
  • The loss function of cross-entropy is \sum q * log(p).

These two are the same because q is a one-hot vector (the index of x is 1, others are 0). That's is two say,when the q is a one-hot vector, \sum q * log(p) = log(p(x)), where x refers to the sampled example.

luofuli avatar Jan 06 '19 03:01 luofuli