👨🏫학습목표
오늘은 Policy Gradient algorithm의 대표적인 모델 REINFORCE에 대해 배워볼 예정이다.
0️⃣ Policy Gradient algorithm

📕 지난 시간에 배운 내용
🔸 Policy Gradient algorithm은 DQN과 구별되는 2가지 특징이 있다.
- Neural Network를 통해 policy를 직접 학습한다.
- Total reward를 maximize하는 방향으로 학습한다.
🔸 Policy Gradient algorithm의 출력
- 입력 state에 대한 action a를 stochastic하게 출력한다.
- 파라미터가 optimal하게 고정되더라고 stochastic하게 출력 가능하다.
- Action을 직접 출력하기 때문에 continuous한 출력이 가능하다.
1️⃣ REINFORCE

🔷 REINFORCE (Monte Carlo Policy Gradient)
- Policy Gradient방식에 Return Gt값을 사용하기 때문에 Monte Carlo Policy Gradient 라고 한다.
- Policy Gradient방식으로 policy를 직접 업데이트한다.
🔻 Pseudo code

🔸 1. Execute M trajectories
- 주어진 policy θ에서 Minibatch의 크기 M개의 episode sample을 수집한다.
- State s에서 시작하여 데이터를 수집한다.
🔸 2. Approximate the gradient of the objective function J(θ)
gθ:=M1i=1∑M(t=0∑T−1Gt(i)∇θlogπθ(at(i)∣st(i)))≈∇θJ(θ)
- Return Gt를 통해 objective function을 계산한다.
- M개의 minibatch에 대한 평균을 통해 gradient를 근사한다.
🔸 3. Update policy to maximize J(θ)
θ:=θ+αgθ≈θ+α∇θJ(θ)
2️⃣ REINFORCE with baseline

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

- Variance가 클수록 학습 과정이 요동치는 것을 확인할 수 있다.
| 종류 | Monte Carlo | Temporal Difference |
|---|
| Bias | X | O |
| Variance | 크다 | 작다 |
Monte Carlo와 Temporal Difference의 bias에 대한 추가적인 내용은 아래 글에서 확인 가능하다.
🔻 Episode sample 데이터 사용 시 목표
- Sample 데이터의 variance를 줄인다.
- Sample 데이터의 bias를 없애야 한다.
🔷 REINFORCE with baseline
∇θJ(θ)=Eπθ[t=0∑T−1(Gt−b(st))∇θlogπθ(at∣st)]
- Baseline b(st)을 추가하여 variance를 줄여준다.
- Baseline b(st)는 action에 독집적이고, state에 의해 결정된다.
- 기존의 ∇θJ(θ)은 unbiased하다.
- Baseline b(st)을 추가하여 bias가 생길 수 있기 때문에 bias가 생기지 않는다는 이론적 근거가 필요한다.
- 즉 expectation값 자체가 변하지 않아야 한다.
🔻 Bias가 생기지 않는다는 이론적 근거
Eπ[t∑b(st)∇logπ(at∣st)]=0
Eπ[t∑b(st)∇logπ(at∣st)]=∫t∑π(at∣st)b(st)∇logπ(at∣st)dτ
- Expectation을 모든 trajectory에 대해 적분으로 표현한다.
∫t∑π(at∣st)b(st)∇logπ(at∣st)dτ=∫t∑b(st)∇π(at∣st)dτ
- log의 미분 형태에 따라 π(at∣st)∇π(at∣st)=∇logπ(at∣st) 이므로 위 식이 성립한다.
∑tb(st)∇π(at∣st)를 살펴보면
at∑b(st)∇π(at∣st)=b(st)∇at∑π(at∣st)=b(st)∇1=0.
- Baseline b(st)은 action과 무관하므로 ∑에서 빠져나온다.
- 모든 action에 대한 π(at∣st)의 합은 1이므로 위 식이 유도된다.
Eπ[t∑b(st)∇logπ(at∣st)]=∫t∑b(st)∇π(at∣st)dτ=0
- 위 내용을 연결하면 Baseline을 추가한 식이 0이 됨을 확인할 수 있다.
- 따라서 Baseline을 추가하더라도 gradient의 값에 영향을 주지 않는다.
🔻 Baseline값
V(s)=Eπθ[Gt∣St=s]
- Baseline은 action에 무관한 값을 사용해야 한다.
- 보통 state-value function을 많이 사용한다.
- State-value function은 return Gt의 평균값이다.
3️⃣ REINFORCE의 pseudo code

🔷 REINFORCE with baseline의 구조
- State-value V(s;ϕ)를 추정하는 Network와 policy π(a∣s;θ)를 추정하는 Network가 있다.
- Network가 2개이므로 step size 역시 2개가 필요하다.
🔻 작동과정
- 주어진 state so에 대한 sample 데이터를 수집한다.
- 수집한 데이터를 통해 return Gt를 구한다.
δ←Gt−V(st;ϕ)
- 파라미터 ϕ와 θ를 업데이트할 때 사용되는 δ값을 정의한다.
ϕ←ϕ+βδ∇ϕV(st;ϕ)
minimizing L(ϕ)=Eπθ[t=0∑T−1(Gt−V(st;ϕ))2]
- State-value function ϕ에 대한 업데이트를 진행한다.
- 파라미터 ϕ를 수집한 return Gt값에 가까워지도록 학습한다.
θ←θ+αγtδ∇θlogπ(at∣st;θ)
∇θJ(θ)=Eπθ[t=0∑T−1(Gt−V(st;ϕ))∇θlogπθ(at∣st)]
- Policy에 대한 파라미터 θ를 업데이트한다.
- Discount factor γt는 practical한 이유로 추가하였다.
- 업데이트의 방향을 의미하는 ∇θlogπθ(at∣st) Network를 actor라고 부른다.
- 업데이트의 크기를 의미하는 V(st;ϕ) 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강에서 배운 내용은 아래와 같다.
- REINFORCE는 Return Gt를 통해 policy를 업데이트한다.
- REINFORCE의 pseudo code에 대해 살펴보았다.
- Return Gt를 통한 학습은 variance가 커진다는 한계가 존재한다.
- Action에 무관한 baseline을 통해 variance를 줄일 수 있다.
- Baseline이 있는 REINFORCE 모델의 pseudo code를 살펴보았다.