Reinforcement Learning(강화학습) #1 강화학습 value-based method : Q learning, DQN, DDQN
이번 글에서는 MDP model을 모를 때(model free) 강화학습(RL)으로 최적 policy를 구하는 법에 대해서 알아보려고 한다.
model을 알고 policy를 DP(dynamic programmingg)로 구할 때도 value-iteration과 policy-iteration이 있던 것과 같이, RL에서도 value-base 방법이 있고 policy-base 방법이 있다. 이 글에서는 이 중 value-base 방법에 대해서 설명하고자 한다.
value-base 방법은 Q-learning - DQN - DDQN 순으로 발전했다.
value-base 방법은 policy를 직접 구하지 않고 optimal value function 만을 구하고, optimal value function으로 부터 policy를 구해서 쓰는 방법이다.
이 때, value function update 과정 중 남은 누적 reward 기대값을 구하려고 할 때 state transition probability(model)을 알아야 한다. 이걸 Q function ( state-action value function )으로 대체하는 것이 Q learning의 idea이다.
Q-function은 State-action value function이라고도 한다. 이전 글에서 본 state value function이 특정 state에서 시작했을 때 기대하는 최대 누적 reward였다면, state-action value function은 특정 state에서 특정 action으로 시작했을 때 기대하는 최대 누적 reward 이다.
model free 하게 Q function만으로 optimal Q function으로 update 해나가는 과정은 아래와 같다.
아래 과정에서는 1번 단계에서 Q function을 update하기 위해 k번째 value function으로 다음 state의 value 기대 값을 구해야하는데 이 때, transition function이 필요하다.
이를 없애기 위해 sample ( s_t, a_t, s_t+1, r_t )를 수집하고 이를 토대로 기대값이 아닌 한 번의 sample로 얻어진 값으로
Q function을 update 하는 방법으로 대체하였다. model을 몰라도 Q function 을 update해 나갈 수 있게 된다.
여기서 더 나아가서 value function 은 Q function에서 Q value를 최대로하는 action을 선택한 것이므로, value function을 Q function으로 치환하면 아래와 같이 된다. 이제 value function도 없이 Q function 만으로 update 해 나갈 수 있다.
위 과정을 optimal
Q function은 모든 state와 action에 대한 q value를 table로 가지고 있어야 해서, 문제 크기가 커지면 감당이 안됨.
이를 해결하고자 나온 것이 Q function을 DL로 근사하고자한 DQN
DQN은 Q learning에서 Q function을 approximate 한 것인데, 이 뿐 아니라 추가적으로 성능 향상에 큰 영향을 끼친 2가지 idea가 더 있음.
- Q learning에서 data가 i.i.d가 아니기 때문에 발생하는 correlation 문제를 해결한 replay buffer
- evaluation에 사용하는 policy와 target policy를 다르게하여 target policy update 를 천천히 update하는 것
DQN은 overestimation 문제가 있음.
이를 해결하기 위해서 Q function을 2개 둬서 action selection과 value estimate에 서로 다른 function을 사용한 것이 DDQN.
이후 policy base 방법은 다음글에
policy-base 방법은 policy를 직접 구함.
policy gradient로 policy를 최적화하는데, 간단하지만 on-policy 방식이기 때문에, policy가 update 될 때마다 sample을 다시 수집해야하는 문제가 있고, variance가 커서 baseline( 결론적으로는 Q value )를 빼서 variance를 낮춤
결국 variance를 낮추려고 baseline을 빼야되고, baseline은 Q function으로 구하게 됨.
value-base와 policy-base를 모두 섞어 쓰자 -> actor-critic
이거 계산하려고 policy는 stocastic policy로 놓고 풀었는데, 너무 복잡함. deterministic policy gradient로 놓고 풀어보자 -> DPG
DPG(actor-critic) 에서 value function을 DQN으로 추정하자! -> DDPG