20.2 가치 기반·정책 기반 강화학습

실습 · 연습문제 2개

Q-learning 갱신 q-learning-update

경험 (s,a,r,s′)(s, a, r, s') 하나로 행동 가치 표를 갱신한다.

Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)].Q(s, a) \leftarrow Q(s, a) + \alpha\Big[r + \gamma \max_{a'} Q(s', a') - Q(s, a)\Big].

s′s'가 종료 상태이면 그 뒤의 가치는 0이므로 목표는 rr뿐이다. 함수 q_learning_update(Q, s, a, r, s_next, done, alpha, gamma)를 완성해 갱신된 표를 반환한다.

인자 뜻
Q shape (S, A)의 행동 가치 표. 바꾸지 않고 복사본을 갱신해 반환한다
s, a, s_next 정수 상태·행동 번호
r 받은 보상
done s_next가 종료 상태이면 True
alpha, gamma 학습률, 할인율

테스트는 손으로 계산한 갱신(퀴즈와 같은 값 2.85), Q[s, a] 말고는 바뀌지 않는지, 종료 처리, 목표에 평균이 아니라 max⁡\max를 쓰는지, 작은 사슬에서 무작위 경험으로 반복하면 Q∗Q^*로 수렴하는지 확인한다.

생각해 볼 것: 목표의 max⁡a′Q(s′,a′)\max_{a'} Q(s', a')를 실제로 다음에 고른 행동의 Q(s′,a′)Q(s', a')로 바꾸면 SARSA가 된다. 두 갱신이 같은 경험에서 다른 값을 내는 예를 하나 만들어 본다.

REINFORCE 기울기와 baseline reinforce-gradient

행동이 AA개인 softmax 정책 πθ(a)=eθa/∑beθb\pi_\theta(a) = e^{\theta_a} / \sum_b e^{\theta_b}에서 score는

∇θlog⁡πθ(a)=ea−πθ\nabla_\theta \log \pi_\theta(a) = \mathbf{e}_a - \boldsymbol{\pi}_\theta

다(ea\mathbf{e}_a는 aa번째 성분만 1인 벡터). 표본 NN개 (ai,Gi)(a_i, G_i)로 만든 REINFORCE 추정량

g^=1N∑i=1N(Gi−b) (eai−πθ)\hat{\mathbf{g}} = \frac{1}{N} \sum_{i=1}^{N} (G_i - b)\,\big(\mathbf{e}_{a_i} - \boldsymbol{\pi}_\theta\big)

을 계산하는 함수 reinforce_grad(theta, actions, returns, baseline=0.0)을 완성한다.

인자 shape 뜻
theta (A,) 로짓
actions (N,) 정수 행동
returns (N,) 각 행동 뒤의 이득
baseline 스칼라 이득에서 뺄 상수 bb

반환하는 기울기의 shape은 (A,)다. 테스트는 손으로 계산한 표본 하나, baseline을 뺀 결과, 성분의 합이 0인지, 표본이 많을 때 정확한 기울기 πa(μa−π⊤μ)\pi_a(\mu_a - \boldsymbol{\pi}^\top\boldsymbol{\mu})에 가까운지(baseline이 있어도 없어도), 로짓이 클 때 수치적으로 안정한지를 확인한다.

힌트: np.eye(A)[actions]가 shape (N, A)의 one-hot 행렬이다. softmax는 theta - theta.max()로 계산한다.