강화학습(Reinforcement Learning, RL)은 에이전트가 환경과 상호작용하며 보상을 최대화하도록 학습하는 머신러닝 패러다임이다. 알파고, 게임 AI, 로봇 제어에 활용된다.
핵심 요소
| 요소 | 설명 |
|---|
| 에이전트(Agent) | 학습하는 주체 |
| 환경(Environment) | 에이전트가 상호작용하는 세계 |
| 상태(State) | 현재 상황 |
| 행동(Action) | 에이전트의 선택 |
| 보상(Reward) | 행동에 대한 피드백 (양수/음수) |
| 정책(Policy) | 상태 → 행동 매핑 함수 |
학습 과정
에이전트 → 행동 → 환경
↓ ↓
새 상태 + 보상
목표: 누적 보상(Return)의 기댓값 최대화
R = r₁ + γr₂ + γ²r₃ + ... (γ: 할인 인수)
python
import gym
import numpy as np
env = gym.make('CartPole-v1')
Q = np.zeros([env.observation_space.n, env.action_space.n])
for episode in range(1000):
state = env.reset()
for step in range(200):
# ε-greedy 정책
if np.random.random() < 0.1:
action = env.action_space.sample() # 탐험
else:
action = np.argmax(Q[state]) # 활용
next_state, reward, done, _ = env.step(action)
# Q 업데이트 (Bellman 방정식)
Q[state, action] = reward + 0.95 * np.max(Q[next_state])
state = next_state
if done: break
관련 개념
참고문헌
- •Sutton & Barto. Reinforcement Learning: An Introduction, 2nd Ed.