강화학습

coticoger·2026년 5월 6일

Background

순차적 의사결정 문제를 해결하기 위해, 각 행동의 최적 가치를 추정하도록 학습할 수 있다. 행동의 최적 가치는 해당 행동을 취한 뒤 이후에는 최적 정책을 따른다고 할 때 기대되는 미래 보상의 합으로 정의된다.

주어진 정책 π\pi에서, 상태 ss에서 행동 aa를 했을 때 가치는 다음과 같다.

Qπ(s,a)=E[R1+γR2+γ2R3+...S0=s,A0=a,π]Q_{\pi}(s,a) = \mathbb{E}\left[R_1 + \gamma R_2 + \gamma^2 R_3 + ... \mid S_0 = s, A_0 = a, \pi\right]
  • π\pi : 정책
  • ss : 상태
  • aa : 행동
  • γ\gamma : 할인율 (미래 보상을 얼마나 중요하게 볼지를 결정)

최적의 가치는 다음과 같이 정의된다.

Qπ(s,a)=maxπQπ(s,a)Q_{\pi}^*(s,a) = max_{\pi}Q^{\pi}(s,a)

이때 최적 정책은 각 상태에서 가장 높은 가치를 가지는 행동을 선택함으로써 최적 가치로부터 도출할 수 있다.

Q-learning

실제 문제 공간은 매우 크기때문에 모든 상태와 행동의 가치를 학습하기에는 너무 크다. 그래서 매개변수화된 가치 함수 Q(s,a;θ)Q(s,a;\theta)를 학습한다.

Q-learning 매개변수 업데이트는 다음과 같다

θt+1=θt+α(YtQQ(St,At;θt))θtQ(St,At;θ)\theta_{t+1} = \theta_t + \alpha(Y^Q_t - Q(S_t,A_t;\theta_t))\nabla_{\theta_t}Q(S_t,A_t;\theta)
  • θt\theta_t : 현재 모델 파라미터
  • YtQY^Q_t : 목표값
  • Q(St,At;θt)Q(S_t,A_t;\theta_t) : 현재 모델이 예측한 Q값
  • θtQ(St,At;θ)\nabla_{\theta_t}Q(S_t,A_t;\theta) : gradient

이때 목표값 YtQY^Q_t는 다음과 같이 정의된다

YtQ=Rt+1+γmaxaQ(St+1,a;θt)Y^Q_t = R_{t+1} + \gamma max_a Q(S_{t+1},a;\theta_t)
  • maxaQ(St+1,a;θt)max_a Q(S_{t+1},a;\theta_t) : 다음 상태에서 가능한 행동에서 얻을 수 있는 가치 중 최대 가치

Deep Q Networks

주어진 상태 ss에 대해 행동 가치들의 벡터 Q(s,;θ)Q(s,\cdot ; \theta)를 출력함. θ\theta는 네트워크의 매개변수이다. nn차원의 상태 공간과 mm개의 행동을 포함하는 행동 공간이 있을 때, 이 신경망은 Rn\mathbb{R}^n에서 Rm\mathbb{R}^m으로 가는 함수이다.

DQN은 두 가지 중요한 구성 요소로 이루어 진다

  • target network (θ\theta^-)
    타겟 계산에 사용되는 고정된 네트워크로, 일정 주기 τ\tau마다 online network 파라미터를 복사한다 θt=θt\theta^{-}_t = \theta_t. (online network는 실제 매 step 학습되는 네트워크이다)
YtDQN=Rt+1+γmaxaQ(St+1,a;θt)Y^{DQN}_t = R_{t+1} + \gamma max_a Q(S_{t+1}, a ; \theta^-_{t})

즉, 매개변수 업데이트는 Q-learning과 비슷하지만 target 계산에는 target network를 사용한다.

  • experience replay
    에이전트가 환경과 상호작용하면서 얻은 transition(St,At,Rt+1,St+1S_t,A_t, R_{t+1}, S_{t+1})을 메모리에 저장한다.

Double Q-learning

Q-learning과 DQN에 있는 max 연산자는 overestimation의 원인이므로 이를 방지하기 위해, max 대신 행동 선택과 평가를 분리한다.

경험을 무작위로 할당하여 두 가치 함수 중 하나를 업데이트함으로써 두 개의 가치 함수를 학습한다. 그 결과 두 개의 가중치 θ\theta, θ\theta'이 생긴다.

YtDoubleQ=Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt);θt)Y^{DoubleQ}_t = R_{t+1} + \gamma Q(S_{t+1}, argmax_aQ(S_{t+1},a;\theta_t);\theta'_t)
  • argmaxaQ(St+1,a;θt)argmax_a Q(S_{t+1},a;\theta_t) : 행동 선택, online network가 보기에 가장 좋은 행동 선택
  • Q(St+1,a;θt)Q(S_{t+1},a^*;\theta_t') : 가치 평가, 선택된 행동의 Q값을 같은 network로 평가

행동을 고르는 기준은 여전히 현재 Q함수 θt\theta_t이지만, 그 행동의 가치를 평가할 때는 다른 Q함수 θt\theta'_t를 사용한다.

정리
▶️Q-learning, DQN, Double Q-learning 모두 파라미터 업데이트 방식은 동일하고 target 계산 방법만 다르다

YtQ=Rt+1+γmaxaQ(St+1,a;θt)YtDQN=Rt+1+γmaxaQ(St+1,a;θt)YtDoubleQ=Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt);θt)Y^Q_t = R_{t+1} + \gamma max_a Q(S_{t+1},a;\theta_t) \\ Y^{DQN}_t = R_{t+1} + \gamma max_a Q(S_{t+1}, a ; \theta^-_{t}) \\ Y^{DoubleQ}_t = R_{t+1} + \gamma Q(S_{t+1}, argmax_aQ(S_{t+1},a;\theta_t);\theta'_t)

Q-learning과 DQN은 선택과 평가에 동일한 파라미터를 사용했다면, Double Q-learning은 선택과 평가에 다른 파라미터를 사용한다.

전체 미래 보상합은 재귀적으로 쓸 수 있다
Gt=Rt+1+γRt+2+γ2Rt+3+...G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ...이걸 다음과 같이 묶으면
Gt=Rt+1+γ(Rt+2+γ2Rt+3+...)G_t = R_{t+1} + \gamma(R_{t+2} + \gamma^2 R_{t+3} + ...) 이때 괄호 안 Rt+2+γ2Rt+3+...R_{t+2} + \gamma^2 R_{t+3} + ...는 다음 상태 St+1S_{t+1}로부터의 미래 보상합으로 이 부분을 Q값으로 표현하면 다음과 같다 Q(St+1,a)Q(S_{t+1},a) 즉, Q(St,At)Rt+1+γQ(St+1,a)Q(S_t,A_t) \approx R_{t+1} + \gamma Q(S_{t+1},a)가 된다.

이때 우리는 모델을 활용하여 St+1S_{t+1}에서 행동 aa를 했을 때, 그 이후 받을 보상들의 할인합인 Q(St+1,a;θ)Q(S_{t+1},a;\theta)를 예측한다. 이 때 다음 두가지를 주의하자
1. 그 보상들을 실제로 다 관측해서 더한 값이 아니다.
2. 단순합이 아닌 할인합으로 미래 보상일수록 작게 반영됨

Double DQN

YtDoubleDQN=Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt),θt)Y^{DoubleDQN}_t = R_{t+1} + \gamma Q(S_{t+1}, argmax_a Q(S_{t+1},a;\theta_t),\theta^-_{t})

Double DQN은 Double Q-learning에서 θt\theta'_t의 역할을 θt\theta^-_t가 대신한다. 즉 DQN 구조에 맞게 Double Q-learning을 적용하였다. DQN에서와 동일하게 target network 업데이트 방법은 동일하다


내가 궁금했던거 정리

1. target에도 예측값이 들어가는데 학습이 제대로되는건가?

target이 전부 예측값이 아니라 실제 보상 Rt+1R_{t+1}을 포함하고, 이 실제 보상 정보가 반복 업데이트를 통해 Q값 전체로 전파되므로 가능하다.

0개의 댓글