← AI 놀이터 홈으로

🏃 강화학습 (Q-learning)

정답을 알려주는 사람은 없어요. 🎯 도착 +10, 💀 함정 −10, 한 걸음 −0.1 — 오직 보상만으로 로봇이 시행착오 끝에 스스로 길을 찾아냅니다.

📖 따라하기 가이드 — 1 / 7 단계

Step 1. 정답 없이 배운다고요?

지금까지의 모델은 "이 입력의 정답은 이거야"라는 라벨로 배웠어요(지도학습). 강화학습은 달라요 — 정답을 알려주는 사람이 없고, 행동한 뒤에 받는 보상이 전부예요. 화면의 미로에서 🤖는 🎯에 도착하면 +10, 💀에 빠지면 −10, 한 칸 걸을 때마다 −0.1을 받아요. 검은 칸은 벽이라 못 지나갑니다. 이 숫자들만 가지고 스스로 길을 찾아내는 게 오늘의 실험이에요.

🗺️ 미로 — 칸 색이 로봇의 '기대값 메모'(Q)

초록 = 기대 보상이 좋은 칸, 빨강 = 나쁜 칸 (진할수록 확신), 화살표 = 그 칸에서의 최선 행동이에요. S에서 출발한 🤖가 🎯(+10)을 찾아가요. 💀(−10)에 빠지면 그 판은 끝, 검은 칸은 벽. 초록이 🎯 근처부터 S쪽으로 번져 오는 걸 관찰해 보세요.

📉 학습 곡선 — 목표까지 걸린 스텝 수

에피소드가 지날수록 선이 내려오면(스텝 수 감소) 학습이 되고 있는 거예요. 실패한 판(함정·60스텝 초과)은 60으로 표시돼요.

🎛️ 학습 조절하기

📊 지금 상태

에피소드
0
평균 스텝 (최근10)
—
성공률 (최근20)
—

한 에피소드 = S에서 출발해 목표/함정/60스텝으로 끝나는 한 판이에요. 최단 경로는 10스텝 — 평균 스텝이 여기에 가까워질수록 잘 배운 거예요.

🧪 이렇게 실험해 보세요

  1. 학습 초반, 🎯 옆 칸부터 초록이 켜지는 순간을 포착해 보세요 — 보상이 거꾸로 번지는 출발점이에요
  2. ε=0으로 초기화 후 재학습 — 처음 찾은 길만 고집하나요? (탐험 vs 활용)
  3. ε=100%면? 아무리 배워도 행동은 완전 랜덤 — 색은 학습되는데 로봇은 계속 헤매요
  4. γ를 0.3으로 내리고 초기화 — 근시안 로봇은 멀리 있는 +10에 무덤덤해져요
  5. α=1로 올리면? 마지막 경험 하나에 메모를 통째로 덮어써요

🧮 수식과 파이썬

Q(s,a) ← Q + α[ r + γ·maxQ(s′) − Q ]
지금 받은 보상 r과 다음 칸의 최대 기대값으로 내 예상을 조금씩 고쳐요
🐍 파이썬 코드로 보면? (펼치기)
import numpy as np

Q = np.zeros((5, 7, 4))            # Q테이블: 세로 5 × 가로 7 × 행동 4
alpha, gamma, eps = 0.5, 0.9, 0.2  # 학습률, 할인율, 탐험률

for episode in range(500):
    y, x = 4, 0                          # 시작 칸 S
    for step in range(60):               # 최대 60스텝
        if np.random.rand() < eps:       # 탐험: 가끔은 아무 방향
            a = np.random.randint(4)
        else:                            # 활용: 지금까지의 최선
            a = np.argmax(Q[y, x])
        (ny, nx), r, done = env_step(y, x, a)   # 한 칸 이동, 보상 받기
        target = r if done else r + gamma * np.max(Q[ny, nx])
        Q[y, x, a] += alpha * (target - Q[y, x, a])  # 예상을 조금 수정
        y, x = ny, nx
        if done:                         # 목표 도착/함정이면 한 판 끝
            break