Elio Saade
Note

Log-Derivative Trick

Topics: Reinforcement Learning

This note is the proof of the Log-Derivative trick used in policy gradients in RL:
∇θP(τ∣θ)=P(τ∣θ)  .  ∇θ  log[P(τ∣θ)]\nabla_\theta P(\tau|\theta)=P(\tau|\theta)\;.\;\nabla_\theta\;log[P(\tau|\theta)]

Proof

τ\tau : trajectory of states and actions
θ\theta : parameters of the actor network

Let
y=P(τ∣θ)y=P(\tau|\theta)
z=log  [P(τ∣θ)]z=log\;[P(\tau|\theta)]

Then

d  log[P(τ∣θ)]dθ=dzdθ=dzdy⋅dydθchain  ruled  log[P(τ∣θ)]dθ=d  log[P(τ∣θ)]d(P(τ∣θ))⋅d(P(τ∣θ))dθd  log[P(τ∣θ)]dθ=d  log[P(τ∣θ)]d(P(τ∣θ))⋅d(P(τ∣θ))dθd  log[P(τ∣θ)]dθ=1P(τ∣θ)⋅d(P(τ∣θ))dθddxlog(x)=1x∇θ  log[P(τ∣θ)]=1P(τ∣θ)⋅∇θP(τ∣θ)∇θP(τ∣θ)=P(τ∣θ)  .  ∇θ  log[P(τ∣θ)]\begin{align*} & \frac{d\;log[P(\tau|\theta)]}{d\theta}=\frac{dz}{d\theta}=\frac{dz}{dy}\cdot \frac{dy}{d\theta} \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad chain \; rule \\ \\ & \frac{d\;log[P(\tau|\theta)]}{d\theta}=\frac{d\;log[P(\tau|\theta)]}{d(P(\tau|\theta))}\cdot\frac{d(P(\tau|\theta))}{d\theta} \\ \\ & \frac{d\;log[P(\tau|\theta)]}{d\theta}=\frac{d\;log[P(\tau|\theta)]}{d(P(\tau|\theta))}\cdot\frac{d(P(\tau|\theta))}{d\theta} \\ \\ & \frac{d\;log[P(\tau|\theta)]}{d\theta}=\frac{1}{P(\tau|\theta)}\cdot \frac{d(P(\tau|\theta))}{d\theta} \quad\quad\quad\quad\quad\quad\quad\quad\frac{d}{dx}log(x)=\frac{1}{x} \\ \\ & \nabla_\theta\;log[P(\tau|\theta)] = \frac{1}{P(\tau|\theta)} \cdot \nabla_\theta P(\tau|\theta) \\ \\ & \nabla_\theta P(\tau|\theta)=P(\tau|\theta)\;.\;\nabla_\theta\;log[P(\tau|\theta)] \end{align*}

References

  1. https://spinningup.openai.com/en/latest/spinningup/rl_intro3.html
  2. https://davidmeyer.github.io/ml/log_derivative_trick.pdf

Connections

Direct relationships to this note.