원리 중심 공부 방식 다섯 가지

강화학습과 제어 강의를 수학과 알고리즘 원리 중심으로 읽기 위한 안입니다. 각 안에 예시를 하나씩 붙였습니다. 노란 상자는 먼저 스스로 채워 본 뒤 눌러서 확인합니다.

안 1. 유도 빈칸형

방식강의의 유도를 줄 단위로 따라가되, 핵심이 되는 한두 줄을 비워 두고 직접 채웁니다. 결과보다 "왜 이 줄이 다음 줄로 넘어가는가"를 손으로 확인하는 방식입니다.

예시: 정책 경사 (CS285 5강)

  1. 목표는 궤적 보상의 기댓값입니다. $J(\theta) = E_{\tau \sim p_\theta}[r(\tau)] = \int p_\theta(\tau) r(\tau)\, d\tau$
  2. 기울기를 적분 안으로 넣습니다. $\nabla_\theta J = \int \nabla_\theta p_\theta(\tau)\, r(\tau)\, d\tau$
  3. 빈칸: $\nabla_\theta p_\theta(\tau)$를 기댓값으로 다시 쓸 수 있는 형태로 바꾸십시오.
    확인로그 미분 트릭입니다. $\nabla_\theta p_\theta = p_\theta \nabla_\theta \log p_\theta$이므로 $\nabla_\theta J = E_{\tau \sim p_\theta}[\nabla_\theta \log p_\theta(\tau)\, r(\tau)]$가 됩니다. 이제 표본 평균으로 추정할 수 있습니다.
  4. 궤적 확률을 풉니다. $\log p_\theta(\tau) = \log p(s_1) + \sum_t [\log \pi_\theta(a_t|s_t) + \log p(s_{t+1}|s_t,a_t)]$
  5. 빈칸: 이 식의 기울기에서 어떤 항이 남습니까?
    확인초기 분포와 전이 확률은 $\theta$에 의존하지 않아 기울기가 0입니다. 남는 것은 정책 항뿐입니다. $$\nabla_\theta J = E_\tau\Big[\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \sum_t r(s_t,a_t)\Big]$$ 환경 모델을 몰라도 기울기를 구할 수 있는 이유가 바로 이 줄입니다.

확인 질문

미래의 행동이 과거의 보상에 영향을 줄 수 없다는 사실(인과성)을 쓰면 식이 어떻게 바뀝니까?시각 $t$의 로그 확률 항에는 $t$ 이후 보상만 곱하면 됩니다. 이것이 reward to go $\hat Q_t = \sum_{t' \ge t} r_{t'}$이고, 기댓값은 그대로인 채 분산만 줄어듭니다.

안 2. 가정 깨기형

방식잘 풀리는 알고리즘의 가정을 표로 적고, 하나씩 깨 보면서 무엇이 무너지고 무엇이 새로 필요해지는지 따라갑니다. 다음 강의들이 왜 존재하는지가 이 표에서 나옵니다.

예시: LQR 시스템 $x_{t+1} = A x_t + B u_t + w_t$, 비용 $\sum_t x_t^T Q x_t + u_t^T R u_t$

깨는 가정먼저 스스로 예상하기확인
잡음이 없다가우시안 잡음 $w_t$를 넣으면 최적 이득 $K$가 바뀝니까?
확인바뀌지 않습니다(확실성 등가). 기대 비용만 단계마다 $\mathrm{tr}(P\Sigma_w)$만큼 커집니다.
상태를 다 본다잡음 섞인 관측만 있으면 어떻게 합니까?
확인칼만 필터로 추정한 상태에 같은 $K$를 씁니다(LQG, 분리 원리). 다만 LQR이 갖던 안정 여유는 사라질 수 있습니다(Doyle, 1978).
입력에 제한이 없다모터 토크가 포화되면 $u = -Kx$를 그냥 잘라 써도 됩니까?
확인최적이 아니고 불안정해질 수도 있습니다. 제약을 최적화 안에 넣고 매 순간 다시 푸는 것이 MPC입니다.
시스템이 선형이다비선형이면 무엇을 반복합니까?
확인현재 궤적 주변에서 선형화와 이차 근사를 하고 LQR을 푼 뒤 궤적을 갱신하기를 반복합니다. iLQR과 DDP이며 CS285 10강의 내용입니다.
모델 A, B를 안다모델을 모르면?
확인데이터로 모델을 배우고 그 모델로 계획합니다. 모델 오차가 계획에서 증폭되는 문제가 CS285 11강과 12강의 주제입니다.

안 3. 최소 구현 후 고장 내기

방식알고리즘을 가장 작은 코드로 짜서 돌린 뒤, 일부러 조건을 바꿔 고장 내고 그 원인을 수식으로 설명합니다. 숫자가 먼저 보이고 이론이 뒤따릅니다.

예시: Q러닝의 과대평가 (Sutton과 Barto 6.7절의 환경) 상태 A에서 오른쪽은 바로 끝나고 보상은 0입니다. 왼쪽은 상태 B로 가고, B에는 행동이 10개 있으며 어느 것을 골라도 보상은 평균 $-0.1$, 표준편차 1입니다. 그러니 왼쪽은 손해이고, 최적 정책은 왼쪽을 탐험 확률의 절반(5%)만 고릅니다.

import numpy as np
rng = np.random.default_rng(0)
NB, ALPHA, EPS = 10, 0.1, 0.1

def update(Q1, Q2, s, a, r, s2, double):
    if double and rng.random() < 0.5:
        Q1, Q2 = Q2, Q1                       # update the other table this time
    if s2 is None:
        target = r
    elif double:
        target = r + Q2[s2][np.argmax(Q1[s2])]  # choose with one table, evaluate with the other
    else:
        target = r + np.max(Q1[s2])
    Q1[s][a] += ALPHA * (target - Q1[s][a])

def run(double, episodes=300):
    Q1 = {"A": np.zeros(2), "B": np.zeros(NB)}
    Q2 = {"A": np.zeros(2), "B": np.zeros(NB)}
    left = []
    for _ in range(episodes):
        qA = Q1["A"] + Q2["A"] if double else Q1["A"]
        a = rng.integers(2) if rng.random() < EPS else int(np.argmax(qA))
        left.append(a == 0)
        if a == 1:
            update(Q1, Q2, "A", 1, 0.0, None, double); continue
        update(Q1, Q2, "A", 0, 0.0, "B", double)
        qB = Q1["B"] + Q2["B"] if double else Q1["B"]
        b = rng.integers(NB) if rng.random() < EPS else int(np.argmax(qB))
        update(Q1, Q2, "B", b, rng.normal(-0.1, 1.0), None, double)
    return np.array(left, float)

for double in (False, True):
    L = np.mean([run(double) for _ in range(300)], axis=0)
    print("double" if double else "plain ", L[:25].mean(), L[100:125].mean(), L[-25:].mean())

실제로 돌린 결과입니다(300번 평균, 왼쪽을 고른 비율).

1~25회101~125회276~300회
Q러닝0.940.370.13
Double Q0.340.100.06

확인 질문

보상의 평균이 모두 음수인데 왜 Q러닝은 처음에 B가 좋다고 믿습니까?목표값에 $\max_b Q(B,b)$를 쓰기 때문입니다. 추정치에 잡음이 있으면 $E[\max_b \hat Q_b] \ge \max_b E[\hat Q_b]$이므로, 같은 잡음으로 행동을 고르고 그 값을 평가하면 체계적으로 부풀려집니다. Double Q는 고르는 표와 평가하는 표를 나눠 이 상관을 끊습니다. DQN에서 쓰는 Double DQN(CS285 8강)이 같은 원리입니다.
B의 행동 수 NB를 1, 10, 100으로 바꾸면 Q러닝의 과대평가는 어떻게 변할까요?행동이 많을수록 잡음의 최댓값이 커져서 과대평가가 심해집니다. 직접 바꿔 돌려 보십시오.

안 4. 두 알고리즘 잇기

방식서로 다른 강의나 분야에 나오는 두 식이 같은 원리의 다른 모습임을 직접 계산으로 연결합니다. 외울 것이 줄고, 새 알고리즘을 보면 "어느 것의 특수한 경우인가"를 먼저 묻게 됩니다.

예시: 가치 반복과 리카티 방정식

  1. 벨만 백업을 씁니다. $V_t(x) = \min_u \big[x^T Q x + u^T R u + V_{t+1}(Ax + Bu)\big]$
  2. 다음 가치함수가 이차식이라고 가정합니다. $V_{t+1}(x) = x^T P x$
  3. 빈칸: 괄호 안을 $u$로 미분해 최적 입력을 구하십시오.
    확인$2Ru + 2B^T P (Ax + Bu) = 0$에서 $u^* = -(R + B^T P B)^{-1} B^T P A\, x = -Kx$입니다.
  4. 빈칸: $u^*$를 대입하면 $V_t$는 어떤 꼴이 됩니까?
    확인다시 이차식 $x^T P' x$가 되고, $P'$은 리카티 방정식입니다. $$P' = Q + A^T P A - A^T P B (R + B^T P B)^{-1} B^T P A$$ 즉 LQR은 가치함수가 이차식 안에서 닫혀 있어서 표 없이 행렬 $P$ 하나로 가치 반복을 하는 경우입니다.

확인 질문

비용에 $|u|$ 같은 항이 들어가면 왜 이 닫힘이 깨집니까? 그러면 무엇으로 가치함수를 표현해야 합니까?최소화 결과가 더 이상 이차식이 아니어서 $P$ 하나로 표현할 수 없습니다. 일반적인 경우에는 함수 근사기로 가치함수를 맞추는 fitted value iteration(CS285 7강)이 필요하고, 그때부터 수렴 보장이 약해집니다.

안 5. 질문 사슬형

방식설명 대신 질문을 하나씩 이어 갑니다. 앞 질문의 답이 다음 질문의 전제가 되도록 놓아서, 마지막 질문에 닿으면 다음 알고리즘이 저절로 나옵니다.

예시: 정책 경사의 기준선 $b$ (CS285 5강에서 6강으로) 기울기 추정량은 $g = \nabla_\theta \log \pi_\theta(a|s)\,(r - b)$입니다.

  1. $b$를 빼도 왜 편향이 생기지 않습니까?
    확인$E_{a \sim \pi}[\nabla_\theta \log \pi_\theta(a|s)\, b] = b \int \nabla_\theta \pi_\theta(a|s)\, da = b\, \nabla_\theta 1 = 0$입니다.
  2. 분산을 가장 줄이는 상수 $b$는 무엇입니까?
    확인$\nabla_\theta \log \pi$를 $\nabla$라 하면 $b^* = E[\nabla^2 r] / E[\nabla^2]$입니다. 기울기 크기로 가중한 보상의 평균이며, 실제로는 보상의 평균으로 근사합니다.
  3. $b$가 상태 $s$에 따라 달라져도 됩니까?
    확인됩니다. 1번의 계산을 $s$를 고정한 채 하면 그대로 성립합니다.
  4. $b$가 행동 $a$에 따라 달라지면 무엇이 깨집니까?
    확인$b(s,a)$를 적분 밖으로 꺼낼 수 없어서 편향이 생깁니다. 이 편향을 해석적으로 보정하는 것이 Q-Prop 같은 control variate 방법입니다.
  5. 그렇다면 상태 의존 기준선 중 가장 자연스러운 것은 무엇이고, 그것을 쓰면 $r - b$는 무엇이 됩니까?
    확인$b(s) = V^\pi(s)$이고, $r - b$는 이점 함수 $A^\pi(s,a)$의 추정이 됩니다. $V$를 따로 학습하는 것이 액터 크리틱이며 CS285 6강의 출발점입니다.

고르기

마음에 드는 안을 디스코드 스레드에 번호로 알려 주십시오. 여러 안을 섞어도 됩니다. 예를 들어 "유도는 1, 끝에는 5의 질문 사슬, 알고리즘 강의는 3"처럼 강의 종류마다 다르게 정할 수도 있습니다. 고른 방식은 앞으로 만드는 강의 노트의 형식이 됩니다.