본문 바로가기
Deep Learning/RL

[모두RL-⑤] Q-Network

by 룰루셩 2022. 3. 7.

2022.03.07 - [Deep Learning/RL] - [모두RL-④] Stochastic (non-deterministic)에 이어서 김성훈 교수님의 모두를 위한 RL강좌 lecture 6를 듣고 작성하였다.

 


만약 Q table이 100x100 table이라면, 혹은 그보다 더 많은 pixel을 가진다면?

연산량이 어마어마할 것이다.

그래서 제안된 기법이 Q-Network이다.

 

Q-function approximation

테이블을 쓰지 않고, 
테이블보다 더 작은 수의 뉴런을 사용해서 이런 네트워크를 만들면
어떤 값이든 출력할텐데...
그 출력하는 값을 우리가 원하는 값으로 approximation하면 되지 않을까?

Q-table과 다르게 state(s)만 input으로 사용한다.

그리고 각 action에 대한 결과(reward)를 출력한다.

즉, 모든 가능한 action에 대해서 Q값을 만들어 내도록 한다.

 

 

 

Q-Network training (linear regression)

위처럼 linear regression network라고 할 때, 예측값(output)은 Ws일 것이다. 이게 Q의 optimal한 값이 되도록 학습해야한다. 우리는 linear regression을 학습할 때 우측 상단의 식처럼, 예측값 (Wx)와 실제값 (y)의 차이가 최소가 되도록 학습해야한다. 이걸 Q-Network로 보면, 예측값(Qpred)이 Ws인 것이고 실제값이 $Q^*$인것이다. 

 

식을 다시 써보면 다음과 같다. 

$cost(W)=(Ws-y)^2$

$y=r+\gamma maxQ(s')$

 

 

Q-Network training(math notations)

위의 경우를 좀더 일반화 시켜보면,  $Q^*$를 $\theta$를 사용하여 approximate하는 것으로 볼 수 있다.

(Approximate $Q^*$ function using $\theta$)

이를 수식으로 표현하면  $\hat{Q}(s,a|\theta) \sim Q^*(s,a)$이다. 즉, 위의 Ws가 $\hat{Q}(s,a|\theta)$로 표현되는 것이다. 여기서 $\theta$는 network의 weight이다.

 

그리고 이를 학습하는 방법은 아래 식을 minimize하는 $\theta$를 찾는 것이다.

 

 

Algorithm

1. Q 초기화

2. 첫번째 s1 만들고 전처리 있을 경우 전처리($\phi$)

3. a 고르기 (E&E)

4. action을 하면 s와 r을 돌려준다. 

5. 학습

   1) y를 설정한다.($Q^*$를 y라고 한다.)

      - 그 다음 단계의 reward가 없을 때 (마지막단계) 그 단계를 terminal이라고 한다.

        이때는 다음 state가 없으므로 r이다.

      - 그 이전의 state에서의 y는 앞에서 정의한 Q의 식과 같다.

        다시말해 우리가 얻고자 하는 $Q^*$를 target, label로 정한다.

   2) loss $(y_j-Q(\phi,a_j;\theta))^2$를 gradient descent하여 $\theta$를 업데이트 한다.

 

 

 

하지만 이 방법은 $\hat{Q}$가 $Q$로 converge 하지 않는다. 이를 극복하기 위한 방법으로 DQN이 제안되었다. (다음 게시물)

댓글