한양과학기술고등학교

에듀테크 프로젝트 대시보드

Q-러닝 (Q-Learning)

🎮 Q-러닝 (Q-Learning)

강화학습(Reinforcement Learning)은 정답을 알려주는 선생님 없이, 보상(reward)이라는 점수만 보고 시행착오로 좋은 행동을 스스로 찾아내는 학습이다. 에이전트는 어떤 상태(state)에서 행동(action)을 고르고, 환경은 다음 상태와 보상을 돌려준다. Q-러닝은 각 (상태, 행동) 쌍의 가치를 Q(s, a) 표에 적어두고, 매 걸음마다 벨만 방정식으로 이 값을 조금씩 수정한다. 표가 정확해지면 각 칸에서 Q가 가장 큰 행동만 따라가는 것이 곧 최적 경로가 된다.

그리드 월드에서 길 배우기

로봇(●)은 왼쪽 아래에서 출발해 별(+1)에 도착해야 한다. 함정(−1)에 빠지면 그 판은 끝. 한 걸음마다 −0.02의 작은 벌점이 있어 되도록 빨리 도착하는 길을 선호하게 된다. 벽(■)으로는 못 지나간다. 각 칸의 네 삼각형은 그 방향으로 갈 때의 Q 값 — 초록일수록 좋고 빨강일수록 나쁘다. 흰 화살표는 현재 탐욕 정책(greedy policy)이다.

로봇 목표 +1 함정 −1 벽 Q 낮음→높음
0.50
0.90
0.20
140
에피소드
0
최근 20 평균 보상
–
최근 20 성공률
–
이번 판 걸음 수
–

처음엔 표가 전부 0이라 아무 데나 헤맨다. 함정과 목표를 몇 번 겪고 나면 그 값이 이웃 칸으로 번져(전파) 화살표가 목표를 향해 정렬된다.

에피소드가 쌓이며 점점 잘하게 된다

세로축은 한 판에서 받은 총 보상. 초반엔 함정에 빠지거나 오래 헤매서 음수로 출렁이다가, 표가 정확해질수록 +0.8 근처(짧은 성공 경로)로 수렴한다. ε을 크게 두면 학습 후에도 가끔 일부러 엉뚱한 데로 가서 곡선이 계속 튄다 — 그래서 실전에선 학습이 끝나면 ε을 0으로 낮춰 배운 대로만 행동한다.

핵심 한 줄: Q값을 어떻게 고치나

Q(s,a) ← Q(s,a) + α [ r + γ·maxa' Q(s',a') − Q(s,a) ] 새 추정치 = 옛 추정치 + 학습률 × (실제로 받은 보상 + 다음 칸의 최선의 가치 − 옛 추정치)
r — 이번 행동으로 즉시 받은 보상 (목표 +1, 함정 −1, 그 외 −0.02)
γ·max Q(s',·) — 다음 상태에서 가장 좋은 행동의 가치를 할인해 더한 값. 미래에 대한 기대.
r + γ·max Q(s',·) − Q(s,a) — TD 오차. 예상과 현실의 차이. 이만큼 표를 당긴다.
α — 이 차이를 얼마나 반영할지. 크면 빨리 배우지만 요동치고, 작으면 안정적이지만 느리다.

Q-러닝은 다음 칸에서 실제로 한 행동이 아니라 가능한 최선(max)을 기준으로 갱신하기 때문에, 탐험하느라 엉뚱하게 움직이는 중에도 최적 정책을 학습한다 — 이를 off-policy 학습이라 한다.

탐험(explore) vs 활용(exploit)

아는 길만 가면(활용) 더 좋은 지름길을 영영 못 찾고, 매번 새 길만 뚫으면(탐험) 배운 걸 못 써먹는다. ε-탐욕(ε-greedy) 정책은 확률 ε로는 무작위 행동, 확률 1−ε로는 Q가 최대인 행동을 골라 둘의 균형을 맞춘다.

0.20
활용 80%
탐험 20%

흔한 전략은 ε을 크게 시작해 점점 줄이는 것(예: 1.0 → 0.05). 처음엔 넓게 돌아다니고, 나중엔 배운 대로 간다.

알고리즘 (한 판 = 한 에피소드)

# Q: 모든 (상태, 행동) 값을 0으로 시작 for episode in range(N): s = 시작상태 while not 종료: # ε-탐욕으로 행동 선택 a = 무작위행동() if random() < eps else argmax(Q[s]) s2, r, done = env.step(s, a) # 환경에게 물어봄 target = r if done else r + gamma * max(Q[s2]) Q[s][a] += alpha * (target - Q[s][a]) # ← 벨만 업데이트 s = s2

상태 수가 적을 땐 이렇게 표(Q-table) 하나면 충분하다. 바둑·비디오게임처럼 상태가 천문학적이면 표 대신 신경망이 Q값을 근사하는데, 그게 DQN(Deep Q-Network) — 2015년 아타리 게임을 사람 수준으로 플레이해 화제가 됐다. 로봇 제어, 추천, 자원 스케줄링, 대규모 언어모델의 RLHF까지 뿌리는 같은 아이디어다.