/ REINFORCEMENT

Reinforcement Learning - Deep Q-Learning

Deep Q-Learning

Deep Q-Learning(DQL)은 Q-Learning과 Deeplearning을 결합한 것이다. Q-Learning에 ANN을 통합해보면, 신경망의 입력은 입력 상태가 될것이다. 이 입력 상태는 환경에서 어떤 일이 발생했는지를 인코딩한 1차원 벡터이거나 이미지일 수 있다. 출력은 각 행동에 대한 Q-value의 집합으로 수행 가능한 행동 각각에 부여된 Q-value로 구성된 1차원 벡터가 될것이다. 그 이후 AI는 Q-value가 최대인 행동을 취해 수행한다.

벨만 방정식을 사용해 반복적인 업데이트를 통해 Q-value를 예측하는 대신 입력으로 입력 상태를 취하고 행동별로 Q-value를 출력으로 반환하는 ANN을 사용해 예측한다.

여기서 예측의 target은 실제 값이거나 이상적으로 원하는 예측이다. 예측이 target에 가까울수록 더 정확하다. 예측과 타깃 사이의 손실 오차 $C$를 계산하고 확률적 경사 하강법이나 미니 배치 경사 하강법으로 역전파하여 이를 줄여나가는 이유다.

Target이 분명하지 않을때, target은 시간차 공식의 왼편의 첫번째 요소이다.

Target = $R_(s_{t}, a_{t}) + \gamma max_{a}(Q(s_{t+1}, a))$

그러면 다음 공식을 얻을 수 있다.

$TD_{t}(s_{t}, a_{t})$ = Target - $Q(S_{t}, a_{t})$ = Target - Prediction

처음에는 Q-value가 null이므로 target은 보상과 같다.

softmax 기법

softmax 기법은 Q-value를 예측한 다음 수행할 행동을 선택하는 방법이다. Q-Learning에서 이 과정이 간단했는데, argmax로 Q-value가 가장 높은 행동을 수행하면 된다. 하지만 DQL에서는 상황이 다르다. 문제가 일반적으로 더 복잡하기 때문에 최적의 솔루션을 찾으려면 Exploration이라는 프로세스를 거쳐야 한다.

Q-value가 최대인 행동을 수행하는 대신 각 행동에 Q-value에 비례하는 확률을 부여해 Q-value가 높을수록 확률이 높아진다. 이렇게 하면 수행 가능한 행동의 분포를 생성한다. 마지막으로 수행할 행동은 해당 분포에서 무작위로 추첨하여 선택된다.

수행 가능한 행동이 전진, 좌회전, 우회전이 있다고 가정하자 그 다음 특정 시간에 AI가 다음 Q-value를 예측한다고 하자

전진 좌회전 우회전
24 38 11

각 Q-value를 세개의 Q-value의 합으로 나누어 매시간마다 특정 행동의 확률을 산출함으로써 필요한 확률분포를 생성할 수 있다.

  • 전진할 확률 = $\frac{24}{24+38+11} = 33%$
  • 좌회전할 확률 = $\frac{38}{24+38+11} = 52%$
  • 우회전할 확률 = $\frac{11}{24+38+11} = 15%$

전체의 확률합은 1이고 이 확률은 Q-value에 비례한다. 이를통해 행동의 분포를 알 수 있다. softmax 기법은 이 분포에서 무작위로 추첨해 수행할 행동을 선택한다.

이렇게 하는 이유는, 다른 행동을 탐험함으로써 순수한 활용으로 얻는 보상보다 더 높은 보상을 가져오는 전환으로 이어지는 경우를 대비해야 하기 때문이다.

Summary

입력은 인코딩된 벡터로 각 요소는 환경의 상태를 정의한다. ANN에 이 입력이 공급되면 각 행동에 대해 예측된 Q-value가 포함된 출력이 반환된다. 즉 AI가 취할 수 있는 행동이 n개가 있을 때 인공 신경망의 출력은 n개의 요소로 구성된 1차원 벡터이며 이 벡터의 각 요소는 현재 상타에서 수행될 수 있는 각 행동의 Q-value에 해당한다. 그 후 softmax 기법을 통해 선택된다.

따라서 상태 $s_{t}$에서

  1. Prediction은 Q-value $Q(s_{t}, a_{t})$이며, softmax 기법에 의해 수행된다.
  2. Target은 $R(s_{t},a_{t}) + \gamma max_{a}(Q(s_{t+1}, a))$이다.
  3. Prediction과 Target 사이의 Loss는 시간차의 제곱이다.
$Loss = \frac{1}{2} (R(s_{t},a_{t}) + \gamma max_{a}(Q(s_{t+1}, a)) - Q(s_{t},a_{t}))^{2} = \frac{1}{2}TD_{t}(s_{t},a_{t})^{2}$

이 Loss는 신경망으로 역전파되어 오차에 얼마나 기여하는지에 따라 확률적 경사 하강법이나 미니 배치 경사하강법을 통해 업데이트 된다.

경험재현

지금까지 하나의 상태 $s_{t}$에서 다음 상태 $s_{t+1}$로 전이하는 것만 고려했다. 하지만 대부분의 경우 $s_{t}$는 $s_{t+1}$과 상관관계가 있다. 매번 마지막 전이만 고려하는 대신 마지막 $m$개의 전이를 고려하면($m$은 큰수) 개선 될 수 있다. 마지막 $m$개의 전이의 집하을 경험 재현 메모리 또는 간단하게 메모리라고 부른다. 이 메모리에서 일부 전이를 무작위로 샘플링해서 작은 크기의 배치를 만든다. 그 후 이 배치를 사용해 신경망을 훈련시킨 다음 미니 배치 경사 하강볍을 통해 가중치를 업데이트 한다.

DQL Algorithm

Initialization

  • 경험 재현 메모리를 빈 리스트 $M$으로 초기화한다.
  • 메모리의 최대 크기를 선택한다.
  • 시간 $t$에서 다음 프로세스를 세대가 끝날 때까지 반복한다.

  • 현재 상태 $s_{t}$의 Q-value를 예측한다.
  • softmax 기법에 의해 선택된 행동을 수행한다. $a_{t} = Softmax_{a} {Q(s_{t}, a)}$

  • 보상 $R(s_{t}, a_{t})$를 받는다.
  • 다음 상태 $s_{t+1}$에 도달한다.
  • 메모리 $M$에 전이 $(s_{t}, a_{t}, r{t}, s_{t+1})$를 추가한다.
  • 메모리 $M$에서 무작위로 선택한 전이로 배치 $B \subset M$을 구성한다. 무작위 배치 $B$의 $(s_{tB}, a_{tB}, r{tB}, s_{tB+1})$ 전이 전체에 대해
    1. Prediction을 가져온다 : $Q(s_{tB}, a_{tB})$
    2. Target을 가져온다 : $R(s_{tB}, a_{tB}) + \gamma max_{a}(Q(s_{tB+1}, a))$
    3. 전체 배치 $B$에서 Prediction과 Target 사이의 손실을 계산한다.
    $Loss = \frac{1}{2} \sum_{B} (R(s_{tB},a_{tB}) + \gamma max_{a}(Q(s_{tB+1}, a)) - Q(s_{tB},a_{tB}))^{2} = \frac{1}{2} \sum_{B} TD_{tB}(s_{tB},a_{tB})^{2}$

    4.Loss를 다시 신경망으로 역전파하고 확률적 경사 하강법을 통해 손실 오차에 얼마나 기여하는 정도에 따라 가중치를 업데이트 한다.

참고 : 아들랑 드 폰테베 강화학습/심층강화학습특강, 위키북스(2021), p138-144