κ°•ν™”ν•™μŠ΅ (Reinforcement Learning) Overview

κ°•ν™”ν•™μŠ΅ (Reinforcement Learning) Overview

μ†Œκ°œ

이 ν΄λ”λŠ” κ°•ν™”ν•™μŠ΅(Reinforcement Learning, RL)의 κΈ°μ΄ˆλΆ€ν„° μ‹¬ν™”κΉŒμ§€ μ²΄κ³„μ μœΌλ‘œ ν•™μŠ΅ν•  수 μžˆλŠ” 자료λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€. μ—μ΄μ „νŠΈκ°€ ν™˜κ²½κ³Ό μƒν˜Έμž‘μš©ν•˜λ©° 보상을 μ΅œλŒ€ν™”ν•˜λŠ” 방법을 ν•™μŠ΅ν•˜λŠ” RL의 핡심 κ°œλ…κ³Ό μ•Œκ³ λ¦¬μ¦˜μ„ λ‹€λ£Ήλ‹ˆλ‹€.

λŒ€μƒ λ…μž

  • λ¨Έμ‹ λŸ¬λ‹/λ”₯λŸ¬λ‹ 기초λ₯Ό μ΄ν•΄ν•˜κ³  μžˆλŠ” ν•™μŠ΅μž
  • κ²Œμž„ AI, λ‘œλ΄‡κ³΅ν•™, μžμœ¨μ£Όν–‰ 등에 관심 μžˆλŠ” 개발자
  • AlphaGo, ChatGPT(RLHF) λ“±μ˜ 기술 원리λ₯Ό μ΄ν•΄ν•˜κ³  싢은 λΆ„

μ„ μˆ˜ 지식

  • ν•„μˆ˜: Python ν”„λ‘œκ·Έλž˜λ°, 기초 ν™•λ₯ /톡계
  • ꢌμž₯: Deep_Learning 폴더 ν•™μŠ΅ μ™„λ£Œ, PyTorch 기초

ν•™μŠ΅ λ‘œλ“œλ§΅

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚         κ°•ν™”ν•™μŠ΅ 기초 (01-04)         β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                    β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                           β”‚                           β”‚
        β–Ό                           β–Ό                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   RL κ°œμš”     β”‚         β”‚  MDP & Bellman  β”‚         β”‚  Dynamic        β”‚
β”‚   (01)        │────────▢│  (02)           │────────▢│  Programming    β”‚
β”‚               β”‚         β”‚                 β”‚         β”‚  (03)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                               β”‚
                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                    β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚       Monte Carlo Methods (04)       β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                    β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚                               β”‚
                    β–Ό                               β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚              κ°€μΉ˜ 기반 방법 (05-07)                   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                       β”‚                           β”‚
        β–Ό                       β–Ό                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  TD Learning  │────▢│  Q-Learning &   │────▢│  Deep Q-Network β”‚
β”‚  (05)         β”‚     β”‚  SARSA (06)     β”‚     β”‚  (07)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚              μ •μ±… 기반 방법 (08-10)                   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                       β”‚                           β”‚
        β–Ό                       β–Ό                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Policy        │────▢│  Actor-Critic   │────▢│  PPO & TRPO     β”‚
β”‚ Gradient (08) β”‚     β”‚  A2C/A3C (09)   β”‚     β”‚  (10)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                  심화 κ³Όμ • (11-12)                    β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚                               β”‚
                β–Ό                               β–Ό
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β”‚  Multi-Agent RL β”‚             β”‚  μ‹€μ „ ν”„λ‘œμ νŠΈ   β”‚
      β”‚  (11)           β”‚             β”‚  (12)           β”‚
      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

파일 λͺ©λ‘

번호 파일λͺ… 주제 λ‚œμ΄λ„ μ£Όμš” λ‚΄μš©
00 Overview.md κ°œμš” - ν•™μŠ΅ μ•ˆλ‚΄, λ‘œλ“œλ§΅, ν™˜κ²½ μ„€μ •
01 RL_Introduction.md RL κ°œμš” ⭐ μ—μ΄μ „νŠΈ-ν™˜κ²½, 보상, μ—ν”Όμ†Œλ“œ/연속 νƒœμŠ€ν¬
02 MDP_Basics.md MDP 기초 ⭐⭐ Markov Decision Process, Bellman 방정식, V/Q ν•¨μˆ˜
03 Dynamic_Programming.md 동적 ν”„λ‘œκ·Έλž˜λ° ⭐⭐ μ •μ±… 반볡, κ°€μΉ˜ 반볡, DP의 ν•œκ³„
04 Monte_Carlo_Methods.md λͺ¬ν…ŒμΉ΄λ₯Όλ‘œ 방법 ⭐⭐ μƒ˜ν”Œ 기반 ν•™μŠ΅, First-visit/Every-visit MC
05 TD_Learning.md TD ν•™μŠ΅ ⭐⭐⭐ TD(0), TD Target, Bootstrapping, TD vs MC
06 Q_Learning_SARSA.md Q-Learning & SARSA ⭐⭐⭐ Off-policy, On-policy, Epsilon-greedy
07 Deep_Q_Network.md DQN ⭐⭐⭐ Experience Replay, Target Network, Double/Dueling DQN
08 Policy_Gradient.md μ •μ±… 경사 ⭐⭐⭐⭐ REINFORCE, Baseline, μ •μ±… 경사 정리
09 Actor_Critic.md Actor-Critic ⭐⭐⭐⭐ A2C, A3C, Advantage ν•¨μˆ˜, GAE
10 PPO_TRPO.md PPO & TRPO ⭐⭐⭐⭐ Clipping, KL Divergence, Proximal Policy Optimization
11 Multi_Agent_RL.md 닀쀑 μ—μ΄μ „νŠΈ RL ⭐⭐⭐⭐ ν˜‘λ ₯/경쟁, Self-Play, MARL μ•Œκ³ λ¦¬μ¦˜
12 Practical_RL_Project.md μ‹€μ „ ν”„λ‘œμ νŠΈ ⭐⭐⭐⭐ Gymnasium ν™˜κ²½, Atari κ²Œμž„, μ’…ν•© ν”„λ‘œμ νŠΈ
13 Model_Based_RL.md λͺ¨λΈ 기반 RL ⭐⭐⭐⭐ Dyna μ•„ν‚€ν…μ²˜, 세계 λͺ¨λΈ, MBPO, MuZero, Dreamer
14 Soft_Actor_Critic.md SAC ⭐⭐⭐⭐ μ΅œλŒ€ μ—”νŠΈλ‘œν”Ό RL, μžλ™ μ˜¨λ„ μ‘°μ •, 연속 μ œμ–΄

λ‚œμ΄λ„ κ°€μ΄λ“œ

λ‚œμ΄λ„ μ„€λͺ… μ˜ˆμƒ ν•™μŠ΅ μ‹œκ°„
⭐ μž…λ¬Έ - κ°œλ… 이해 쀑심 1-2μ‹œκ°„
⭐⭐ 기초 - μˆ˜ν•™μ  κΈ°μ΄ˆμ™€ κΈ°λ³Έ μ•Œκ³ λ¦¬μ¦˜ 2-3μ‹œκ°„
⭐⭐⭐ 쀑급 - 핡심 μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ 3-4μ‹œκ°„
⭐⭐⭐⭐ κ³ κΈ‰ - μ΅œμ‹  μ•Œκ³ λ¦¬μ¦˜κ³Ό μ‹€μ „ 적용 4-6μ‹œκ°„

ν™˜κ²½ μ„€μ •

ν•„μˆ˜ νŒ¨ν‚€μ§€ μ„€μΉ˜

# κΈ°λ³Έ ν™˜κ²½
pip install gymnasium
pip install torch torchvision
pip install numpy matplotlib

# μΆ”κ°€ ν™˜κ²½ (Atari κ²Œμž„ λ“±)
pip install "gymnasium[atari]"
pip install "gymnasium[accept-rom-license]"

# λ©€ν‹°μ—μ΄μ „νŠΈ RL
pip install pettingzoo

# μ‹œκ°ν™” 및 λ‘œκΉ…
pip install tensorboard
pip install wandb  # 선택사항

ν™˜κ²½ ν…ŒμŠ€νŠΈ

import gymnasium as gym
import torch

# Gymnasium ν…ŒμŠ€νŠΈ
env = gym.make("CartPole-v1", render_mode="human")
observation, info = env.reset()

for _ in range(100):
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        observation, info = env.reset()

env.close()

# PyTorch ν…ŒμŠ€νŠΈ
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")

ꢌμž₯ 개발 ν™˜κ²½

도ꡬ μš©λ„ μ„€μΉ˜
Jupyter Notebook μ‹€ν—˜ 및 μ‹œκ°ν™” pip install jupyter
VS Code μ½”λ“œ νŽΈμ§‘ 곡식 μ‚¬μ΄νŠΈ
TensorBoard ν•™μŠ΅ λͺ¨λ‹ˆν„°λ§ pip install tensorboard

μΆ”μ²œ ν•™μŠ΅ μˆœμ„œ

1단계: 기초 λ‹€μ§€κΈ° (1-2μ£Ό)

  1. 01_RL_Introduction.md - RL의 κΈ°λ³Έ κ°œλ… 이해
  2. 02_MDP_Basics.md - MDP와 Bellman 방정식 ν•™μŠ΅
  3. 03_Dynamic_Programming.md - μ •μ±…/κ°€μΉ˜ 반볡 이해
  4. 04_Monte_Carlo_Methods.md - μƒ˜ν”Œ 기반 ν•™μŠ΅ μž…λ¬Έ

2단계: κ°€μΉ˜ 기반 방법 (2-3μ£Ό)

  1. 05_TD_Learning.md - TD ν•™μŠ΅μ˜ 핡심 원리
  2. 06_Q_Learning_SARSA.md - ν…Œμ΄λΈ” 기반 Q-Learning
  3. 07_Deep_Q_Network.md - λ”₯λŸ¬λ‹κ³Ό RL의 κ²°ν•©

3단계: μ •μ±… 기반 방법 (2-3μ£Ό)

  1. 08_Policy_Gradient.md - 직접 μ •μ±… μ΅œμ ν™”
  2. 09_Actor_Critic.md - κ°€μΉ˜μ™€ μ •μ±…μ˜ κ²°ν•©
  3. 10_PPO_TRPO.md - μ•ˆμ •μ μΈ μ •μ±… ν•™μŠ΅

4단계: 심화 ν•™μŠ΅ (2μ£Ό)

  1. 11_Multi_Agent_RL.md - 닀쀑 μ—μ΄μ „νŠΈ ν™˜κ²½
  2. 12_Practical_RL_Project.md - μ’…ν•© ν”„λ‘œμ νŠΈ μˆ˜ν–‰

μ£Όμš” μ•Œκ³ λ¦¬μ¦˜ 비ꡐ

μ•Œκ³ λ¦¬μ¦˜ μœ ν˜• On/Off Policy 연속 행동 νŠΉμ§•
Q-Learning Value-based Off X 간단, ν…Œμ΄λΈ” 기반
SARSA Value-based On X μ•ˆμ „ν•œ ν•™μŠ΅
DQN Value-based Off X λ”₯λŸ¬λ‹ κ²°ν•©
REINFORCE Policy-based On O 직접 μ •μ±… μ΅œμ ν™”
A2C/A3C Actor-Critic On O λΆ„μ‚° ν•™μŠ΅ κ°€λŠ₯
PPO Actor-Critic On O μ•ˆμ •μ , λ²”μš©μ 
TRPO Actor-Critic On O 이둠적 보μž₯
SAC Actor-Critic Off O μ΅œλŒ€ μ—”νŠΈλ‘œν”Ό RL

참고 자료

ꡐ재

  • Sutton & Barto: "Reinforcement Learning: An Introduction" (2nd Edition) - 무료 PDF
  • Deep RL: "Spinning Up in Deep RL" by OpenAI - 링크

온라인 κ°•μ˜

  • David Silver's RL Course (DeepMind/UCL)
  • CS285: Deep Reinforcement Learning (UC Berkeley)
  • Hugging Face Deep RL Course

라이브러리

  • Gymnasium - RL ν™˜κ²½ ν‘œμ€€
  • Stable-Baselines3 - RL μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„
  • PettingZoo - 닀쀑 μ—μ΄μ „νŠΈ ν™˜κ²½
  • RLlib - λΆ„μ‚° RL ν”„λ ˆμž„μ›Œν¬

핡심 μš©μ–΄ 정리

μš©μ–΄ 영문 μ„€λͺ…
μ—μ΄μ „νŠΈ Agent ν™˜κ²½κ³Ό μƒν˜Έμž‘μš©ν•˜λ©° ν•™μŠ΅ν•˜λŠ” 주체
ν™˜κ²½ Environment μ—μ΄μ „νŠΈκ°€ ν–‰λ™ν•˜λŠ” 세계
μƒνƒœ State ν™˜κ²½μ˜ ν˜„μž¬ 상황
행동 Action μ—μ΄μ „νŠΈκ°€ μ·¨ν•˜λŠ” κ²°μ •
보상 Reward 행동에 λŒ€ν•œ 즉각적인 ν”Όλ“œλ°±
μ •μ±… Policy μƒνƒœμ—μ„œ 행동을 μ„ νƒν•˜λŠ” μ „λž΅
κ°€μΉ˜ ν•¨μˆ˜ Value Function μƒνƒœ/ν–‰λ™μ˜ μž₯기적 κ°€μΉ˜
ν• μΈμœ¨ Discount Factor (Ξ³) 미래 λ³΄μƒμ˜ ν˜„μž¬ κ°€μΉ˜ λΉ„μœ¨
μ—ν”Όμ†Œλ“œ Episode μ‹œμž‘λΆ€ν„° μ’…λ£ŒκΉŒμ§€μ˜ μƒν˜Έμž‘μš©
νƒν—˜/ν™œμš© Exploration/Exploitation μƒˆλ‘œμš΄ μ‹œλ„ vs μ•Œλ €μ§„ 쒋은 행동

κ΄€λ ¨ 폴더

  • Deep_Learning/: λ”₯λŸ¬λ‹ 기초 (신경망, CNN, RNN)
  • Machine_Learning/: λ¨Έμ‹ λŸ¬λ‹ 기초 (지도/비지도 ν•™μŠ΅)
  • Python/: 파이썬 κ³ κΈ‰ 문법
  • Statistics/: ν™•λ₯  및 톡계

λ§ˆμ§€λ§‰ μ—…λ°μ΄νŠΈ: 2026-02

to navigate between lessons