데이터사이언스/강화학습

강화학습 - (20) Q러닝

Johnny Yoon 2020. 11. 5. 10:12
728x90
반응형

강화학습

Q러닝

Q러닝 알고리즘은 SARSA와 많이 유사하다.

위 알고리즘을 보면 SARSA와는 다르게, 행동가치함수를 갱신할 때 최댓값(maximum)을 취한다.

그렇다면 왜 Q러닝은 다음 상태-행동 페어 대신 최댓값을 취할까?

 

다시한번 행동가치함수 벨만방정식을 살펴보자.

$q_{\pi}(s,a) = \sum_{s',r} p(s',r|s,a) \left (r + \gamma \sum_{a'} \pi(a'|s') q_{\pi} (s',a')\right)$

 

아래는 이에 기반한 SARSA의 갱신 수식이다.

$Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha (R_{t+1} + \gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t))$

 

하지만 Q러닝은 기본적인 벨만방정식이 아닌 벨만최적방정식을 활용한다.

$q_{\pi}(s,a) = \sum_{s',r} p(s',r|s,a) \left (r + \gamma \max_{a'} q_{\pi} (s',a')\right)$

 

이 역시 같은 항들을 대입해 볼 수 있다.

$Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha (R_{t+1} + \gamma \max_{a'} Q(S_{t+1},a')-Q(S_t,A_t))$

 

SARSA vs. Q러닝

SARSA와 Q러닝은 모두 벨만방정식에 기반하긴 하지만,

매우 속성이 다른 두가지 벨만방정식에 기반한다.

 

위 수식에서 본것과 같이, Q러닝은 SARSA에서와 같이,

모든 행동가치를 살핀 후 정책 평가를 하여 정책 향상을 한다.

하지만 Q러닝은 그렇지 않고 바로 최댓값을 취한다.

이는 이전에 살펴본 정책 반복과 가치 반복의 차이와 같다.

 

SARSA가 정책 반복의 샘플 기반 구현법이라면,

Q러닝은 가치 반복의 샘플 기반 구현 기법이다.

 

왜 Q러닝은 오프폴리시 인가?

결론부터 이야기하면, Q러닝은 오프폴리시이면서 중요도 샘플링을 사용하지 않는다.

SARSA는 행동하는 정책과 학습하는 정책이 같기 때문에, 온폴리시 알고리즘이다.

하지만 Q러닝의 경우는, 행동은 모든 Q를 고려하는 행동 정책(입실론 그리디)을 사용하지만,

학습시에는 최대의 Q값만을 고려하는 학습을 한다.

따라서 타깃 정책과 행동 정책이 다른 학습 방법이 된다.

Q러닝에서는 이를 구현하기 위해 입실론그리디를 활용하였다.

 

그렇다면 Q러닝은 왜 중요도 샘플링을 사용하지 않는가?

Q러닝의 타깃 정책은 탐욕 정책이다.

이 말은 최대의 Q값을 주는 행동 이외의 다른 것들은 모두 0의 샘플링 확률을 갖는다는 말이다.

따라서 하나의 행동만 1의 확률을 받고 나머지 모두 0의 확률을 받는다면,

중요도 샘플링을 하는 의미가 사라지게 된다.

따라서 Q러닝은 중요도 샘플링이 없이도 오프폴리시 학습을 할 수 있다.

 

728x90
반응형