Post

Q-Learning의 핵심 직관: Bellman, TD Error, Living Penalty, 탐험–활용, 그리고 V→Q 전환

Bellman부터 TD Error, Living Penalty, 탐험–활용까지 Q-Learning 원리를 직관적으로 정리

Q-Learning의 핵심 직관: Bellman, TD Error, Living Penalty, 탐험–활용, 그리고 V→Q 전환

이 글의 목적

핵심 요약

  • Q-Learning은 강화학습 전체의 사고 방식 원형이다.
  • 수식보다 중요한 것은 왜 이런 업데이트 규칙이 나왔는지다.
  • Bellman → TD Error → Q(s,a) → 탐험 전략은 하나의 흐름이다.
  • 이 글을 이해하면 DQN, A3C, PPO에서 길을 잃지 않는다.

예시

  • 게임 AI에서 “왜 저 행동을 골랐는가?”를 설명할 수 있음
  • 보상 설계가 잘못됐을 때 정책이 어떻게 망가지는지 예측 가능

1. Bellman 방정식: 미래 가치의 재귀적 정의

정의

  • Bellman 방정식은 “지금의 가치는 미래 가치의 함수”라는 원칙이다.

직관 (수식 없이)

핵심 요약

  • 현재 상태의 가치는 다음 상태가 얼마나 좋은지에 달려 있다.
  • 강화학습은 “정답”이 아니라 예측을 반복 수정하는 문제다.
  • Bellman은 이 반복 구조를 공식화한 것이다.

텍스트 직관

1
2
지금 상태가 좋다
= 지금 보상 + (미래에 받을 보상들의 기대값)

왜 필요했나

  • 전체 미래를 한 번에 계산할 수 없기 때문
  • “한 스텝 앞”만 보고 점진적으로 갱신해야 현실적인 학습이 가능

2. TD Error: 학습을 움직이는 유일한 신호

정의

  • TD Error(Temporal Difference Error) = 예측한 가치 − 실제로 경험한 가치

직관

핵심 요약

  • TD Error는 틀린 정도다.
  • 강화학습에서 “손실 함수” 역할을 한다.
  • 값이 클수록 더 많이 수정해야 한다는 의미다.

개념적 표현

1
2
3
TD Error
= (즉시 보상 + 미래 가치 추정)
  - (현재 내가 믿고 있던 가치)

왜 중요한가

  • 강화학습은 정답 라벨이 없다.
  • 오직 예측 오차(TD Error) 만이 학습 방향을 알려준다.

3. 왜 V(s)로는 부족한가? → Q(s,a)가 필요한 이유

문제 제기

핵심 요약

  • V(s)는 “상태가 좋다/나쁘다”만 말해준다.
  • 하지만 실제 문제는 항상 행동 선택이다.
  • 행동 비교가 안 되면 정책을 만들 수 없다.

직관적 반례

1
2
3
4
5
상태 s는 좋다 (V(s) 높음)
하지만:
  - 행동 a1 → 바로 실패
  - 행동 a2 → 성공
V(s)는 이 차이를 말해주지 못함

해결

  • Q(s,a) 는 “이 상태에서 이 행동을 하면 얼마나 좋은가”를 직접 평가
  • 평가 + 선택을 동시에 해결

4. Living Penalty: 정책을 ‘움직이게’ 만드는 장치

정의

  • Living Penalty: 살아 있는 매 스텝마다 주는 작은 음의 보상

직관

핵심 요약

  • 보상이 없으면 에이전트는 가만히 있으려 한다.
  • Living Penalty는 “빨리 끝내라”는 압박이다.
  • 경로 길이와 행동 속도를 조절한다.

정책에 미치는 영향

Living Penalty결과 정책
없음무한 배회
작음신중하지만 진행
공격적, 최단 경로

예시

  • 미로 문제에서 목표까지 빠르게 가게 만들고 싶을 때 필수

5. 탐험–활용 트레이드오프와 ε-greedy

정의

  • 탐험(Exploration): 새로운 행동 시도
  • 활용(Exploitation): 지금까지 최고라고 아는 행동 선택

ε-greedy 전략

핵심 요약

  • 확률 ε로 랜덤 행동
  • 확률 1−ε로 최적 행동
  • 단순하지만 강력한 기준선
if random() < ε:
    action = random_action()
else:
    action = argmax_a Q(s, a)

실패 사례

  • ε가 너무 작음 → 초기에 잘못 배운 정책에 고착
  • ε가 너무 큼 → 끝까지 랜덤, 수렴 안 됨

6. 장난감 환경 예시: Gridworld 3-step 업데이트

환경 설정

  • 목표 도달 시 +10
  • 매 스텝 Living Penalty −1
  • γ = 0.9

Step-by-step 업데이트

Step상태행동보상TD TargetQ 업데이트
1s0a→−1−1 + 0.9·0 = −1Q(s0,a)=−1
2s1a↑−1−1 + 0.9·0 = −1Q(s1,a)=−1
3s2a→+1010Q(s2,a)=10

관찰

  • 보상이 뒤에서 와도 Bellman 구조로 앞쪽 상태가 점점 수정된다.

7. Q-Learning 업데이트 의사코드

initialize Q(s,a) arbitrarily

for each episode:
    s = initial_state
    while not terminal:
        choose a using ε-greedy(Q)
        s', r = env.step(a)

        td_target = r + γ * max_a' Q(s', a')
        td_error  = td_target - Q(s, a)
        Q(s, a)  += α * td_error

        s = s'

구현 포인트

  • terminal 상태에서는 미래 항 제거
  • α(learning rate), γ(discount)가 안정성에 결정적

8. 흔히 하는 실수 3가지와 교정

실수 1: γ를 의미 없이 설정

  • 교정: 문제의 “장기성”을 반영해야 함

실수 2: 보상을 너무 복잡하게 설계

  • 교정: 단순한 보상 + Living Penalty부터 시작

실수 3: terminal 상태 처리 누락

  • 교정: 종료 시 미래 Q를 반드시 0으로 처리

핵심 체크리스트 (재학습용)

  • Bellman을 “미래 가치의 재귀”로 설명할 수 있는가
  • TD Error가 왜 유일한 학습 신호인지 이해했는가
  • V(s)와 Q(s,a)의 역할 차이를 말할 수 있는가
  • Living Penalty가 정책에 미치는 영향을 예측할 수 있는가
  • ε-greedy 실패 조건을 알고 있는가
  • Q 업데이트에서 terminal 처리를 정확히 하는가
  • 이 구조가 DQN으로 어떻게 확장되는지 떠올릴 수 있는가

한 줄 요약

Q-Learning은 수식이 아니라, “미래를 예측하고 틀린 만큼 고친다”는 사고 방식이다.


This post is licensed under CC BY 4.0 by the author.