$p(a|s; \theta)$
여기서 $p$는 파라메터 $\theta$로 표현되는 망의 출력 값이고, 상태 $s$를 입력받아 계산된 action 확률값이다.
만일 action 라벨이 있다면 교사학습이 되고 cross-entropy식은
$loss = -\log {p(a|s)*y}$
이다. $loss$를 줄이도록 학습을 진행하면 된다. 이 때 $p$는 prediction값이고 $y$는 교사값이다.
그런데 강화학습(RL)에서는 입력 $s$에 대해 어떤 action이 유리한지를 표현하는 $y$가 직접 주어지지 않는다.
강화학습에서 망의 학습 방법을 살펴 보자.
$p(a|s; \theta)$에 임의 상태 $s$를 입력하여 얻은 action 중에서 하나($a_s$라 하자)를 택한다.
이 값을 제어 대상인 환경 $env$에 작용시켜 응답을 얻는다. 이 응답을 미래보상의 근사치 계산을 위해 이용한다.
($p(a|s)$는 정책(policy)이라 부른다. 주어진 상태에서 어떤 행동을 택할지에 대해 각각 행동에 분배한 확률이다.)
환경 $env$에 $a_s$를 가하면,
$s', r, d, = env.step(a_s)$
이고 출력은 다음상태 $s'$, 즉각보상 $r$ 등이다.
만일 우리가 큐함수 $Q(s,a)^{각주1}$를 가지고 있다면 현재 상태 $s$에 대해 어떤 action이 좋은지 Q값에서 직접 얻을 수 있다. 그러나 $Q(s,a)$는 최적 미래 보상을 나타내는 일종의 매직함수이므로 직접 구하기 어렵다.
Q를 구하기 어렵기 때문에 근사화 하기 위해 가치망 $V$를 이용한다. $V(s)$로 각 스텝(state)에서 얼마나 행동이 좋은지 판단한다.
따라서 최적 미래 보상(reward)인 교사치 $y$는
$y = Q(s,a) = r + V(s')$
이고, 이 식이 Bellman 방정식이다.
(DQN에서는 $V(s')$ 대신에 max $Q(s',:)$를 이용했었고 $r$+max $Q(s',:)$를 best action으로 사용하였다.)
이상에서 $p(a|s; \theta)$는 정책망(policy net)이고 $V(s)$는 가치망(value net)이다.
정리하면, 정책 근사는 정책망 $p(a|s; \theta)$로 하였고, Q함수를 표현하기 위해 망이 하나 더 필요한데 이를 위해 가치망이 사용된다. 가치망은 정책 근사망인 $p$를 평가한다.
따라서, 이를 actor-critic이라고 부른다. actor는 정책 발전의 역할, critic은 정책 평가의 역할을 맡는다. 2개 망 동시 학습이 필요하다. 정책망의 경우 교사치
$loss = -\log {p(a_s|s; \theta)*[y-V(s)]}$
를 gradient descent로 학습하면 된다. 수렴은 policy gradient에 기반하며 다음을 참고한다. $y$에서 $V(s)$를 뻼은 학습 시 variance를 줄인다.
여기서 $p(a_s|s)$는 정책망 $\theta$에 $s$를 입력하여 출력으로 나온 여러 action 중에서 $a_s$에 대응하는 확률 값이다.
가치망의 학습은
$loss=(y-V(s))^2$
을 직접 줄이도록 진행된다.
참고 문헌
[1] Naver D2
[2] DennyBritz github
(각주 1) $Q(s,a)$ 함수는 Quality 함수라 하고, 상태 $s$에 대해 어떤 action $a$를 선택할지를 미리 Lookup table로써 만들어 놓은 것이다. $s$나 $a$ 공간을 이산화 했을 때, 개수가 몇 개 안되면 생성 가능 하지만 상태공간이 커지면 만들기 어려워 진다.
[1] Naver D2
[2] DennyBritz github
(각주 1) $Q(s,a)$ 함수는 Quality 함수라 하고, 상태 $s$에 대해 어떤 action $a$를 선택할지를 미리 Lookup table로써 만들어 놓은 것이다. $s$나 $a$ 공간을 이산화 했을 때, 개수가 몇 개 안되면 생성 가능 하지만 상태공간이 커지면 만들기 어려워 진다.
댓글 없음:
댓글 쓰기