2. 흐름보기
Part 2 Lower bound of performance
Part 3 Trust Region Policy Optimization
Part 4 Code review of TRPO
Part 1 Problem of stochastic policy gradient
3. 간단정리
1. Stochastic policy gradient는 parameter space에서의 update
• 실제 policy는 급변 가능 collapse of performance
2. 따라서 Performance의 improvement를 보장하면서 학습하고 싶다
• Policy space에서 조금씩 움직이겠다
3. Policy가 변할 때 performance의 차이를 정의 : lower bound
• 이제부터는 lower bound를 optimize
4. Penalty 문제를 constraint 문제로 바꿈 Trust Region method
• KL-divergence constraint
5. 강화학습 문제의 정의
• MDP : Tuple (𝑆, 𝐴, 𝑃, 𝑟, 𝜌0, 𝛾)
• 𝑃 : state transition probability
• 𝜌0: distribution of initial state 𝑠0
• 𝑟 : reward function
• 𝛾 : discount factor
• 𝜋 ∶ 𝑆 × 𝐴 → 0, 1 : stochastic policy
• 강화학습은 에이전트가 받을 보상을 최대화하는 policy를 구하는 문제
• 환경과의 상호작용을 통해 학습
• 환경의 모델과 보상을 미리 알지 못하는 상태에서 학습
6. 강화학습의 분류
1. Value-based RL
• Q-function을 통해 action을 선택(ex. 𝜀 − 𝑔𝑟𝑒𝑒𝑑𝑦)
• SARSA, Q-Learning, DQN, Dueling Network, PER, etc..
2. Policy-based RL
• Explicit한 policy를 가지며 대부분 policy는 parameterized
• REINFORCE, Actor-Critic, A3C, TRPO, PPO, etc..
7. Policy Gradient
• Optimize할 목표를 정의 : objective function
• Objective function : 𝐽(𝜋 𝜃) policy parameter 𝜃의 함수
• Optimization problem : max
𝜃
𝐽(𝜋 𝜃) 를 구하자
• Policy gradient : iteration마다 objective function의 gradient를 따라 parameter update
𝜃′ = 𝜃 + 𝛼𝛻𝜃 𝐽(𝜃)
https://www.linkedin.com/pulse/logistic-regression-gradient-descent-hands-on-marinho-de-oliveira
8. Policy Gradient
• Objective function 보통 첫 상태의 value function
• Objective function은 policy의 함수여야 함
• PG의 목표는 objective function을 최대화하는 policy를 구하기
• 𝜏 = 𝑠0, 𝑎0, 𝑟1, 𝑠1, 𝑎1, 𝑟2, ⋯
𝐽 𝜋 = 𝐸𝜏~𝜋
𝑡=0
∞
𝛾 𝑡 𝑟(𝑠𝑡)
= 𝐸𝑠0~𝜌0
𝑣 𝜋 𝑠0
11. Stochastic Policy Gradient
• Stochastic PG : Expectation을 계산하지 않고 sampling으로 대체
• 매 episode 혹은 timestep 마다 policy gradient를 estimate
1. Policy gradient of REINFORCE
𝛻𝜃 𝐽 𝜃 ≅
1
𝑇
𝑡=0
𝑇
𝐺𝑡 𝛻𝜃 𝑙𝑜𝑔𝜋 𝜃 𝑎 𝑡 𝑠𝑡
2. Policy gradient of Actor-Critic
𝛻𝜃 𝐽 𝜃 ≅ መ𝐴(𝑠𝑡, 𝑎 𝑡)𝛻𝜃 𝑙𝑜𝑔𝜋 𝜃 𝑎 𝑡 𝑠𝑡
12. Policy Gradient의 문제
1. Sample efficiency is poor
• Policy gradient가 현재 policy에 대한 estimate
• Estimate한 policy gradient로 한 번만 update
• 이전 policy로 얻은 data를 사용하기 어려움
2. Distance in parameter space ≠ distance in policy space
• Policy gradient는 parameter에서 step
• 따라서 parameter에서의 small step이 policy를 크게 변화시킬 수 있음
• Policy가 조금씩 변하게 하는 parameter space에서의 step size를 찾자!
13. PG with Importance sampling
1. PG에서 이전 policy의 sample을 사용하기 위해 importance sampling 사용할 수 있음
𝛻𝜃 𝐽 𝜃 = 𝐸𝑠 𝑡~𝜌 𝜃, 𝑎 𝑡~𝜋 𝜃
𝐴 𝜋 𝜃
(𝑠𝑡, 𝑎 𝑡)𝛻𝜃 𝑙𝑜𝑔𝜋 𝜃 𝑎 𝑡 𝑠𝑡
= 𝐸𝑠 𝑡~𝜌 𝜃 𝑜𝑙𝑑
, 𝑎 𝑡~𝜋 𝜃 𝑜𝑙𝑑
𝜋 𝜃(𝑎 𝑡|𝑠𝑡)
𝜋 𝜃 𝑜𝑙𝑑
(𝑎 𝑡|𝑠𝑡)
𝐴 𝜋 𝜃
(𝑠𝑡, 𝑎 𝑡)𝛻𝜃 𝑙𝑜𝑔𝜋 𝜃 𝑎 𝑡 𝑠𝑡
2. Importance weight는 unbound 학습에 잘 안되게 함
• 관련 논문 ACER(Sample Efficient Actor-Critic with Experience Replay)
14. Step in policy space
• Parameter space가 아닌 policy space에서 조금씩 update 할 수 있나?
• KL-divergence of two policy (old policy & new policy)를 constraint로 (trust region!)
• Update 할 때 monotonic improvement를 보장할 수 있나?
• Performance의 lower bound를 정의하고 lower bound를 최적화
TRPO (Trust Region Policy Optimization)
36. Truncated Natural Policy Gradient
• NPG에서 Neural Network와 같이 parameter가 많은 경우 𝐻−1
𝑔 계산이 어려움
• Parameter 개수가 𝑁개이면 𝐻의 크기는 𝑁2
, 𝐻−1
계산은 𝑂(𝑁3
)
Conjugate gradient method를 통해서 𝐻−1을 계산하지 않고 𝐻−1 𝑔 구하기
Truncated Natural Policy Gradient
• CG(conjugate gradient method)는 𝐴𝑥 = 𝑏의 선형시스템 문제를 푸는 방법
• Analytic하게 구하지 않고 iterative하게 𝑥를 구해내는 방법
• 임의의 벡터 𝑣에 대해 hessian-vector product 𝐻𝑣로 시작해서 𝐻𝑣 = 𝑔가 되도록 𝑣를 조정
37. Truncated Natural Policy Gradient
• Truncated Natural Policy Gradient의 문제
1. Might not be robust to trust region size ; at some iterations may be too large and
performance can degrade
2. Because of quadratic approximation, KL-divergence constraint may be violated
41. Trust Region Policy Optimization
• 전체 문제를 sub-problem으로 나누고 각 sub-problem을 두 step으로 품
1. Finding search direction
2. Do line search on that direction inside trust region
• Trust Region Policy Optimization
1. Search direction ∆=
2𝛿
𝑔 𝑇 𝐻−1 𝑔
𝐻−1 𝑔
2. Backtracking line search 𝜃 𝑛𝑒𝑤 = 𝜃 𝑜𝑙𝑑 + 𝛼 𝑗∆ (𝐿 𝜃 𝑜𝑙𝑑
𝜃 > 0 𝑎𝑛𝑑 𝐷 𝐾𝐿
𝜌 𝑜𝑙𝑑
𝜃 𝑜𝑙𝑑, 𝜃 ≤ 𝛿일 때, stop)
44. TRPO 코드 개요
1. 현재 policy로 sample 모으기
2. 모은 sample로 GAE 계산하기
3. Surrogate advantage function 계산하기
4. Surrogate의 gradient와 KL-divergence의 hessian을 구하기
5. g와 H를 통해 (CG) search direction 계산
6. Search direction에 대해 backtracking line search
45. TRPO baseline 코드 구조
1. run_atari.py : atari 환경에서 학습하는 main loop
2. nosharing_cnn_policy.py : actor-critic network (actor와 critic은 네트워크 공유 X)
3. trpo_mpi.py : cnn_policy를 통해 실제로 학습을 하는 코드
run_atari.py
noshaing_cnn_policy.py trpo_mpi.py
46. 현재 policy로 sample 모으기
def traj_segment_generator(pi, env, horizon, stochastic)