Udacity Deep RL Nanodegree — Actor Critic Methods
actor-critic은 value-based와 policy-based의 중간이다. value-based를 이용해 policy-based를 개선하는 방식이다. 이부분은 정말 어려웠고 어떤 flow를 가지고 이 정리글을 쓰지 못했다 ㅠㅠ.. 그냥 나온 내용들을 쭉 정리했다…

- bias — 목표치와의 차이
- variance — 예측값이 너무 크게 분포하는 문제
예를 들면
- MC methods — no bias, high variance
- TD methods — low variance, low bias
TD Based와 MC를 함께 학습해서 서로간의 좋은것만 가져온다면? 즉 no bias하면서 low variance할 수 없을까? 보통의 방법들은 이둘을 교환하며 최적의 에이전트를 찾는다. variance를 희생해서 bias를 얻거나, bias를 희생해서 variance를 줄이는…
On-policy, Off-policy
- On-policy → policy 기반으로 environment와 상호작용. 이후 policy 학습
- Off-policy → policy 기반으로 상호작용 안하고, policy 학습. 예: Q-Learning, DQN, e-greedy, MC control
DDPG
Actor-critic은 Policy-based와 value-based를 섞는방식이다. policy based agent(이하 actor)는 어떤 행동을 할지 결정하고, value-based agent(이하 critic)가 현재 state와 action의 가치를 결정한다. 주요 Actor-critic 학습 프로세스인 DDPG(Deep Deterministic Policy Gradients)는 아래와 같은 방식으로 학습한다.
- actor는 state를 바탕으로 action을 만든다.
- critic이 state, action을 바탕으로 reward를 예측하고 실제 reward와 비슷한 값을 만들도록 학습한다.
- actor는 state로부터 자신이 만든 action을 critic에 전달하여 예상 reward를 받고, 예상 reward가 최대가 되도록 학습한다.
actor와 critic은 next Q target을 알아내기 위한 critic_target과 actor_target까지 포함하므로 총 4개의 모델을 사용하게된다.
n-step bootstraping
몇 번의 step마다 모델을 학습할 것인가? 1step이면 TD Control이고, infinite step(1 episode)면 MC Control이 된다.
A3C (Asynchronous Advantage Actor)
여러개의 actor를 각자 env에서 비동기적으로 병렬 학습하고(Parallel Training), 그 gradient를 저장해둔 뒤 Global Model에 반영한다. 공유는 비동기적으로 이루어진다(한번에 다같이 갱신하지 않는다는 의미). A3C는 Replay Buffer를 사용하지 않는다. 각자의 경험이 비동기적으로 갱신되기 때문에, correlation이 사라진다.
https://arxiv.org/abs/1602.01783
A2C(no async)
A3C에서 asynchronous를 뺐다. gradient를 정해진 시점에 다같이 공유한다. 이후 모든 gradient를 global model에 반영하고, 다시 모든 actor가 적용된 global model을 가져온다.
GAE: Generalized Advantage Estimation
만약 n-step bootstraping을 할 때 어떤 N값을 결정할지 알기는 힘들다. GAE방식은 step 1~inf까지를 일정 확률로 선택하여 학습하는 방식이다. 하이퍼파라미터 λ(lambda)를 바탕으로, 각 확률을 아래 식으로 만든다.
i = 1 ~ inf
p_i = (1-λ)λ^(i-1)
만약 λ = 0.5면, 1step일 확률은 0.5, 2step일 확률은 0.25, 3step일 확률은 0.125, …