JINWOOJUNG

[RL] CS285: Lecture 05. Policy gradients(2) 본문

Reinforcement Learning

[RL] CS285: Lecture 05. Policy gradients(2)

Jinu_01 2026. 1. 28. 16:32
728x90
반응형

본 포스팅은 UC Berkeley 에서 진행된 CS285: Deep Reinforcement Learning, Decision Making and Control
강의자료 및 강의를 기반으로 공부한 내용을 정리하는 포스팅입니다.


https://jinwoo-jung.tistory.com/175

 

[RL] CS285: Lecture 05. Policy gradients(1)

본 포스팅은 UC Berkeley 에서 진행된 CS285: Deep Reinforcement Learning, Decision Making and Control강의자료 및 강의를 기반으로 공부한 내용을 정리하는 포스팅입니다.https://jinwoo-jung.tistory.com/174 [RL] CS285: Lecture

jinwoo-jung.com


Off-Policy Policy Gradients

기존에 On-Policy, Off-Policy에 대해서 잠깐 정리했었다.

  • On-Policy: Latest policy로 직접 환경과 상호작용하여 얻은 Samples(Trajectories) 만으로 학습. 학습하려는 정책(Target policy) = 데이터 수집 정책(Behavior policy)
  • Off-Policy: 새로운 Samples를 생성하지 않고, 이전에 생성한 samples를 재사용 가능

 

지금까지의 Policy gradient는 On-Policy 이다. 즉, $\tau \sim p_\theta(\tau)$의 경우 매번 Latest policy를 기반으로 Samples를 생성해야 하는 어려움이 있다. 특히, NN 기반의 DRL의 경우, 경사하강법의 기본 이론은 테일러 근사 이론이기에 Gradient step이 매우 작을 때만 성립하므로, On-Policy는 매우 비효율적이다.

 

다시 말하면, 1번 단계를 매번 반복해야 하기 때문에 비효율적이다.

 

따라서 Off-Policy에 대해서 살펴보자. Trajectory를 얻은 $p_\theta(\tau)$가 Latest policy가 아닌 다른 Distribution(Old policy, , distribution by person, ...)로 부터 왔다고 가정하자. 그러면 우리는 Importance sampling을 통해 Objective function을 아래와 같이 재정의할 수 있다. 만약 $p_\theta = \bar{p}$라면 우리가 알고 있던 식과 동일하다.

Importance sampling: 다른 Distribution으로 부터 얻은 Sample을 통해 특정 Distribution의 Expectation을 평가하는 방법

 

이때, 두 Distribution에 대한 식을 전개하면, 우리가 알고 있는 Policy probability의 곱만 남게 된다. 

 

이러한 수학적 개념을 가지고 Off-Policy Policy Gradient를 다시 한번 살펴보자. 데이터를 생성한 Parameter

(Behavior Policy)를 $\theta$라 하고, 우리가 평가하고 싶은 Parameter(Target Policy)를 $\theta'$이라 하자. 그렇다면 Objective function과 Gradient of objective function을 아래와 같이 계산할 수 있으며, 만약 $\theta=\theta'$이면 우리가 알고 있떤 식과 동일함을 확인할 수 있다.

 

앞서 구한 값을 기반으로 Gradient of objective function을 조금 더 전개 해 보자. 우리는 앞에서 Variance를 줄이기 위해 Causality를 배웠으므로 이를 적용 해 보자.

 

여기서 첫번째 $\prod$ 항은 현재의 행동만이 영향을 미치기에 Weight로써 동작한다. 두번째 $\prod$ 항은 앞으로의 Reward에 영향을 미치는데, 이를 무시하면 Policy iteration algorithm으로 이어지는데, 이는 나중에 배우게 된다. 

 

 

Implementing Policy Gradients

이제 실제 구현 단계이다. 실제로 해당 식을 분석해 보면, 만약 Policy가 NN이라면 매 Sample, Timestep 마다 log probability의 gradient를 매번 계산해야 하는데, 이는 매우 비효율적인 방법이다. 

$$\nabla_\theta J(\theta) \approx \frac{1}{N}\sum_{i=1}^{N}\sum_{t=1}^{T} \nabla_\theta log \pi_\theta (a_{i,t}|s_{i,t}) \hat{Q}_{i,t}$$

 

따라서 우리는 PyTorch, TF 등에서 사용되는 Automatic differentiation이 요구된다. 즉, 어떠한 함수가 주어지면 단순히 Gradient를 계산할 수 있도록 해야한다.

L = f(theta)
L.backward()

 

따라서 우리가 구하고자하는 $\nabla_\theta J(\theta)$는 이미 Gradient 형태이므로, 이 Gradient를 가지는 Objective function이 요구된다. 이때, $\hat{Q}_{i,t}$는 이미 계산된 상수이므로, 미분을 해도 앞으로 빠지게 된다. 따라서 우리는 실제 RL의 Objective function은 아니지만 유사한 형태를 만들 수 있다. 

 

실제 이것은 Maximum likelihood와 유사하기에 weighted maximum likelihood라 칭하게 된다. 

 

실제 Sudo-code를 살펴보자. 먼저 Maximum likelihood이다. 

Policy를 이용해 prediction 하면서 각 Sample($i$)에서 각 Timestep($t$)에 대한 Action의 확률 logits를 반환하게된다. 이후, Discrete actions에서는 보통 Policy를 softmax로 paramter화하기 때문에, Softmax cross entropy를 통해 $-log \pi_\theta(a|s)$를 계산하게 된다. 이후 reduce_mean을 통해 평균을 내주면, 쉽게 gradients를 계산할 수 있다.

 

그렇다면 실제로 우리가 원하는 Objective function에 대해서는 어떻게 계산할까? 단순히 $\hat{Q}_{i,t}$만 q_values로써 추가됨을 확인할 수 있다. 

 

실제로 Policy gradient는 Variance가 매우 크다. 그래서 큰 Batch size를 고려해야 되며, Learning rate를 적절히 조절해야 되는데, 이는 이후에 자세히 배운다.

 

728x90
반응형