3.5기(200104~)/강화학습

강화학습팀 20.04.11 DDPG

KAU-Deeperent 2020. 4. 11. 01:49

발표자 : 김성훈

스터디 : 20.04.09 상암 탐앤탐스 DDPG 논문리딩

 

강화학습에서 커리큘럼 순서상 여러가지 기준을 세워 나눈다면 다음과 같다, 1단계는 Model based 방법으로 모든 MDP의 정보가 알려져 있을 때 모든 정보를 한번에 업데이트하는 DP에 대한 방법들이다. 2단계는 unknown MDP. 즉 model free 방법으로 finite state, finite action을 대상으로하는 policy iteration과 value interation 까지 배우게 된다. 마지막으로 state의 개수가 무한한 경우를 처리하기 위하여 인공신경망을 접목한 것부터 시작하여, low dimension action을 처리하는 DQN, high dimension action까지 확장한 Policy gradient를 넘어 action의 종류도 무한한 경우, 즉 contineous action을 다룰수 있게 되는 DDPG 까지 배우게 되는것이 3단계라고 생각한다.

 

이번 주 스터디는 드론 자율주행을 구현하기 위해 많은 시행착오를 거쳐 유한한 action의 종류로는 이런 큰 문제를 다루기 부적합하다고 판단하여 DDPG 논문을 공부하는 것으로 하였다. DDPG는 deep deterministic policy gradient 의 약자로 이 방법 또한 정책경사법 중의 하나이다. 더 세부적으로는 actor network와 critic network를 따로따로 학습시키는 AC방법이라고 말 할 수 있다. 이름의 뜻을 하나하나 해석하면 이 방법이 어떤 것을 대상으로 하는지 알 수 있다. deterministic policy라는 것은 어떤 state에 대하여 policy network가 하나의 action을 결정해 준다는 것이다. 기존 policy들은 stochastic policy로  state를 input으로 했을 때 여러 action들의 확률을 output으로 받게 된다. 따라서 deterministic policy에서 취하는 행동은 single action으로서 따로 확률을 sampling 할 필요가 없는 scalar값이다.  그리고 deep이 붙은 이유는 이러한 policy를 심층신경망으로 구현하였고, 마지막으로 gradient는 policy 자체를 경사하강법으로 학습시키겠다는 의미이다. 

기존 Policy gradient 방법에서 목적함수의 경사를 구하기 위해선 위와 같은 연산이 중간에 들어간다. 그런데 network의 결과가 softmax를 거친 확률함수가 아닌 스칼라 값일 경우 로그연산이 불가능 하게 된다. 따라서 Deterministic policy network의 경우엔 이전과는 다른 목적함수를 도입해야만 한다. 우리가 사용할 목적함수는 각각의 state에서 취하는 action의 기대값들을 state 전체에 대하여 적분한 값이다. 즉 theta를 parameter로 취하는 Actor를 따라갔을 때 시스템 전체를 대상으로 기대되는 action value function이다.

 

수학적인 전개를 생략하고 결론만 말하자면, Actor network의 parameter인 theta가 변화할 때 w를 parameter로 가지는 action value function가 높아지는 쪽으로 학습 해야할 것이다. Critic network parameter w이긴 하지만 theta가 바뀌면 action 이 바뀌어 Critic networkinput이 바뀌므로 두 네트워크의 parameter는 상관관계가 존재한다. 그리고 Critic network는 TD error의 제곱을 loss로 하여 더 잘 예측하는 쪽으로 학습 하고자 한다. 여기까지는 DDPG가 아닌 DPG(deterministic policy gradient)의 아이디어인데, 여기에 심층신경망으로 구성된 Critic network 학습을 안정화 시키고자 DQN과 결합하였다. 따라서 behavier policy가 episode를 진행하며 얻은 s,a,r,s',a'의 정보들을 experience batch로 저장해두고 학습할 때 그때 그때 마다 무작위로 꺼내어 사용하는 방법을 사용하고, s',a'의 기대값을 예측하는 target network가 급변하는 것을 방지하고자 slow target update를 사용한다. 

 

이번 주 스터디는 DDPG의 개념과 실제 코드를 어떻게 구성할지에 대하여 공부하였고, 빠른 시일내에 DDPG agent코드를 작성하는 작업이 끝날 것으로 예상된다. 당장 다음주 안에는 완료할 수 있을 것으로 생각하지만, 이번에는 특별하게 코딩 경험을 위해서 모든 팀원이 서로의 도움없이 agent를 설계하도록 하여 다음 스터디 때 중간점검을 진행할 예정이다. 그리고 environment 부분에서도 큰 변화가 있었는데 Airsim 을 python과 연동하여 작동시키는 작업이 완료되어, 기존에 주먹구구식으로 만들었던 환경 시뮬레이션은 이제 하지 않아도 될 것 같다. 

 

ddpg.pdf
0.63MB
DDPG_04_11.pptx
0.64MB