[Deep Reinforcement Learning] 22강 REINFORCE

Woosci·2025년 7월 25일

👨‍🏫학습목표

오늘은 Policy Gradient algorithm의 대표적인 모델 REINFORCE에 대해 배워볼 예정이다.

👨‍🎓강의영상: https://www.youtube.com/watch?v=CH09gfU7ko4&list=PLvbUC2Zh5oJtYXow4jawpZJ2xBel6vGhC&index=22

0️⃣ Policy Gradient algorithm

📕 지난 시간에 배운 내용

🔸 Policy Gradient algorithm은 DQN과 구별되는 2가지 특징이 있다.

  1. Neural Network를 통해 policy를 직접 학습한다.
  2. Total rewardmaximize하는 방향으로 학습한다.

🔸 Policy Gradient algorithm의 출력

  • 입력 state에 대한 action aa를 stochastic하게 출력한다.
  • 파라미터가 optimal하게 고정되더라고 stochastic하게 출력 가능하다.
  • Action을 직접 출력하기 때문에 continuous한 출력이 가능하다.


1️⃣ REINFORCE

🔷 REINFORCE (Monte Carlo Policy Gradient)

  • Policy Gradient방식에 Return GtG_t값을 사용하기 때문에 Monte Carlo Policy Gradient 라고 한다.
  • Policy Gradient방식으로 policy를 직접 업데이트한다.

🔻 Pseudo code

🔸 1. Execute M trajectories

  • 주어진 policy θ\theta에서 Minibatch의 크기 MM개의 episode sample을 수집한다.
  • State ss에서 시작하여 데이터를 수집한다.

🔸 2. Approximate the gradient of the objective function J(θ)J(\theta)

gθ:=1Mi=1M(t=0T1Gt(i)θlogπθ(at(i)st(i)))θJ(θ)g_\theta := \frac{1}{M} \sum_{i=1}^M \left( \sum_{t=0}^{T-1} G_t^{(i)} \nabla_\theta \log \pi_\theta(a_t^{(i)} | s_t^{(i)}) \right) \approx \nabla_\theta J(\theta)
  • Return GtG_t를 통해 objective function을 계산한다.
  • MM개의 minibatch에 대한 평균을 통해 gradient를 근사한다.

🔸 3. Update policy to maximize J(θ)J(\theta)

θ:=θ+αgθθ+αθJ(θ)\theta := \theta + \alpha g_\theta \approx \theta + \alpha \nabla_\theta J(\theta)
  • 파라미터를 업데이트한다.


2️⃣ REINFORCE with baseline

🔷 Episode sample 데이터의 한계

  • 모델에 policy를 따라 데이터를 수집할 때, 매 step마다 stochastic하게 선택되기 때문에 step이 길어질수록 점점 variance가 커진다.

  • Variance가 클수록 학습 과정이 요동치는 것을 확인할 수 있다.

종류Monte CarloTemporal Difference
BiasXO
Variance크다작다

Monte Carlo와 Temporal Difference의 bias에 대한 추가적인 내용은 아래 글에서 확인 가능하다.
📃자료: https://velog.io/@tina1975/Deep-Reinforcement-Learning-14강-Temporal-Difference-Learning-2

🔻 Episode sample 데이터 사용 시 목표

  1. Sample 데이터의 variance를 줄인다.
  2. Sample 데이터의 bias를 없애야 한다.

🔷 REINFORCE with baseline

θJ(θ)=Eπθ[t=0T1(Gtb(st))θlogπθ(atst)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^{T-1} (G_t - b(s_t)) \nabla_\theta \log \pi_\theta(a_t | s_t)\right]
  • Baseline b(st)b(s_t)을 추가하여 variance를 줄여준다.
  • Baseline b(st)b(s_t)action에 독집적이고, state에 의해 결정된다.
  • 기존의 θJ(θ)\nabla_\theta J(\theta)unbiased하다.
  • Baseline b(st)b(s_t)을 추가하여 bias가 생길 수 있기 때문에 bias가 생기지 않는다는 이론적 근거가 필요한다.
  • expectation값 자체가 변하지 않아야 한다.

🔻 Bias가 생기지 않는다는 이론적 근거

Eπ[tb(st)logπ(atst)]=0\mathbb{E}_{\pi}\left[\sum_t b(s_t) \nabla \log \pi(a_t | s_t)\right] = 0
  • 우리는 위 식이 성립함을 보여야 한다.

Eπ[tb(st)logπ(atst)]=tπ(atst)b(st)logπ(atst)dτ\mathbb{E}_{\pi}\left[\sum_t b(s_t) \nabla \log \pi(a_t | s_t)\right] = \int \sum_t \pi(a_t | s_t) b(s_t) \nabla \log \pi(a_t | s_t) d\tau
  • Expectation을 모든 trajectory에 대해 적분으로 표현한다.

tπ(atst)b(st)logπ(atst)dτ=tb(st)π(atst)dτ\int \sum_t \pi(a_t | s_t) b(s_t) \nabla \log \pi(a_t | s_t) d\tau=\int \sum_t b(s_t) \nabla \pi(a_t | s_t) d\tau
  • loglog의 미분 형태에 따라 π(atst)π(atst)=logπ(atst)\frac{\nabla \pi(a_t | s_t)}{\pi(a_t | s_t)} = \nabla \log \pi(a_t | s_t) 이므로 위 식이 성립한다.

tb(st)π(atst)\sum_t b(s_t) \nabla \pi(a_t | s_t)를 살펴보면


atb(st)π(atst)=b(st)atπ(atst)=b(st)1=0.\sum_{a_t} b(s_t) \nabla \pi(a_t | s_t) = b(s_t) \nabla \sum_{a_t} \pi(a_t | s_t) = b(s_t) \nabla 1 = 0.
  • Baseline b(st)b(s_t)action과 무관하므로 \sum에서 빠져나온다.
  • 모든 action에 대한 π(atst)\pi(a_t | s_t)의 합은 1이므로 위 식이 유도된다.

Eπ[tb(st)logπ(atst)]=tb(st)π(atst)dτ=0\mathbb{E}_{\pi}\left[\sum_t b(s_t) \nabla \log \pi(a_t | s_t)\right]=\int \sum_t b(s_t) \nabla \pi(a_t | s_t) d\tau = 0
  • 위 내용을 연결하면 Baseline을 추가한 식이 0이 됨을 확인할 수 있다.
  • 따라서 Baseline을 추가하더라도 gradient의 값에 영향을 주지 않는다.

🔻 Baseline값

V(s)=Eπθ[GtSt=s]V(s) = \mathbb{E}_{\pi_\theta}[G_t | S_t = s]
  • Baselineaction에 무관한 값을 사용해야 한다.
  • 보통 state-value function을 많이 사용한다.
  • State-value function은 return GtG_t의 평균값이다.


3️⃣ REINFORCE의 pseudo code

🔷 REINFORCE with baseline의 구조

  • State-value V(s;ϕ)V(s;\phi)를 추정하는 Network와 policy π(as;θ)\pi(a|s; \theta)를 추정하는 Network가 있다.
  • Network가 2개이므로 step size 역시 2개가 필요하다.

🔻 작동과정

  • 주어진 state sos_o에 대한 sample 데이터를 수집한다.
  • 수집한 데이터를 통해 return GtG_t를 구한다.

δGtV(st;ϕ)\delta \leftarrow G_t - V(s_t; \phi)
  • 파라미터 ϕ\phiθ\theta를 업데이트할 때 사용되는 δ\delta값을 정의한다.

ϕϕ+βδϕV(st;ϕ)\phi \leftarrow \phi + \beta \delta \nabla_\phi V(s_t; \phi)

minimizing L(ϕ)=Eπθ[t=0T1(GtV(st;ϕ))2]\text{minimizing } L(\phi) = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^{T-1} (G_t - V(s_t; \phi))^2\right]
  • State-value function ϕ\phi에 대한 업데이트를 진행한다.
  • 파라미터 ϕ\phi를 수집한 return GtG_t값에 가까워지도록 학습한다.

θθ+αγtδθlogπ(atst;θ)\theta \leftarrow \theta + \alpha \gamma^t \delta \nabla_\theta \log \pi(a_t | s_t; \theta)

θJ(θ)=Eπθ[t=0T1(GtV(st;ϕ))θlogπθ(atst)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^{T-1} (G_t - V(s_t; \phi)) \nabla_\theta \log \pi_\theta(a_t | s_t)\right]
  • Policy에 대한 파라미터 θ\theta를 업데이트한다.
  • Discount factor γt\gamma^tpractical한 이유로 추가하였다.
  • 업데이트의 방향을 의미하는 θlogπθ(atst)\nabla_\theta \log \pi_\theta(a_t | s_t) Network를 actor라고 부른다.
  • 업데이트의 크기를 의미하는 V(st;ϕ)V(s_t; \phi) Network를 critic이라고 부른다.


4️⃣ DQN & Policy Gradient

🔷 DQN

  • Q-learning에서 Q-table을 Q-Network로 근사한다.
  • 대표적인 모델 : Atari DQN
  • Optimal Q-value를 통해 policy를 구한다.
  • Temporal correlation을 막기 위해 Experience Replay를 사용한다.

🔷 Policy Gradient

  • Network를 통해 Policy를 직접 근사한다.
  • 대표적인 모델 : AlphaGo
  • Expected total reward를 통해 policy를 업데이트한다. → Reinforcement Learning의 핵심 아이디어
  • Total Reward를 사용하기 때문에 temporal correlation 문제가 발생하지 않는다.
  • 그 결과 코드 역시 훨씬 간단하다.


5️⃣ 정리

🔷 22강에서 배운 내용은 아래와 같다.

  1. REINFORCE는 Return GtG_t를 통해 policy를 업데이트한다.
  2. REINFORCE의 pseudo code에 대해 살펴보았다.
  3. Return GtG_t를 통한 학습variance가 커진다는 한계가 존재한다.
  4. Action에 무관한 baseline을 통해 variance를 줄일 수 있다.
  5. Baseline이 있는 REINFORCE 모델의 pseudo code를 살펴보았다.
profile
I'm curious about AI

0개의 댓글