Lecture 8: Deep RL with Q-Functions
이전에 Value Function Methods 를 다루었는데 이번에는 실제로 Deep RL 에서 Q function 을 어떻게 사용하는지 다룬다.
Value based 방식이 수렴성을 보장하지 않는다는 것을 알았지만, 실용적으로는 굉장히 잘 되게 만들 수 있고 유용한 방식이다.
Part 1
What’s wrong in online Q-learning?
이전 시간에 배웠듯이, Q-learning 에서 3번 step 은 target value 에 대해서는 chain rule 을 적용하지 않았기 때문에 gradient descent 가 아니다.
Correlated samples in online Q-learning
online Q iteration 의 step 1 을 보면, 연속적인 state 은 서로 가까운 시점에 있기 때문에 연관성이 매우 높은 것을 생각할 수 있다.
그렇기에 step 2 에서 target value 를 계산할 때 매번 변하게 된다. 그래서 매 시점에 하기 보다는 어떤 window 안에 있는 state 끼리 계산을 하는 것이 전체 함수를 예측하는데 더 효과적일 것이다.
사진의 아래 부분과 같이 synchronized / asynchronous parallel Q-learning 방식을 사용할 수 있다.
Another solution: replay buffers
Replay buffer 는 99년도에 제안된 오래된 방식이지만 제시된 문제를 해결할 수 있는 방법 중 하나이다.
online Q iteration 을 full FQI 에서 K=1 인 경우로 생각한다면,
아래의 FQI 알고리즘에서 데이터셋에서 iteration 을 하지 않고, 단순히 buffer 에서 데이터를 가져와서 iteration 을 수행할 수 있다.
이렇게 하면 더이상 샘플들이 연관성을 가지지 않고, 여러 개의 샘플을 한번에 사용하여 분산을 낮출 수 있다.
초기의 policy 는 좋지 않기 때문에 개선된 최신의 policy 를 이용해 replay buffer 를 주기적으로 채워주어야 한다.
Part 2: Target Networks
Part 1 에서는 correlated 된 sample 문제를 해결하였다.
하지만 gradient descent 가 아닌 문제는 아직 해결되지 않았다. 본 파트에서는 해당 내용을 다룬다.
Q-Learning and Regression
Replay buffer 를 활용한 Q-learning 알고리즘에서 일반적으로 를 선택한다. 이유는 잘못된 target value 로 gradient 를 여러 번 수행하며 좋지 않기 때문이다.
Fitted Q-iteration 에서 를 업데이트 하는 방식은 잘 구성되어있기 때문에 우리는 이 중간 정도의 적절한 수식을 구성해야 한다.