제1장: 강화학습 소개

WIA-AI-025 강화학습 표준 | 🎮 상호작용을 통한 학습

1.1 강화학습이란?

강화학습(Reinforcement Learning, RL)은 에이전트가 환경과 상호작용하며 의사결정을 학습하는 머신러닝의 한 분야입니다. 지도학습처럼 레이블된 데이터에 의존하거나 비지도학습처럼 패턴을 찾는 것이 아니라, 시행착오를 통해 학습하며 보상이나 벌칙 형태의 피드백을 받습니다.

핵심 통찰:

강화학습은 무엇을 할지 학습하는 것입니다. 상황을 행동에 매핑하여 수치적 보상 신호를 최대화합니다. 학습자는 어떤 행동을 취해야 하는지 직접 알려주지 않고, 시도해보며 가장 많은 보상을 주는 행동을 발견해야 합니다.

강화학습의 세 가지 핵심 요소

시간 t에서:
1. 에이전트가 상태 sₜ 관찰
2. 행동 aₜ 선택 및 실행
3. 보상 rₜ₊₁ 수신
4. 새로운 상태 sₜ₊₁ 관찰

1.2 강화학습 문제

강화학습의 목표는 시간에 따른 기대 누적 보상을 최대화하는 최적 정책 π*를 찾는 것입니다:

Gₜ = Rₜ₊₁ + γRₜ₊₂ + γ²Rₜ₊₃ + ... = Σ γᵏRₜ₊ₖ₊₁

where:
- Gₜ: 시간 t부터의 수익(return)
- γ: 할인 계수 (0 ≤ γ ≤ 1)
- Rₜ: 시간 t의 보상

할인 계수 γ의 역할

1.3 탐색 vs 활용 딜레마

강화학습의 가장 근본적인 딜레마는 탐색-활용 트레이드오프입니다:

딜레마:

많은 보상을 얻으려면 과거에 효과적이었던 행동을 선호해야 합니다(활용). 하지만 그러한 행동을 발견하려면 이전에 선택하지 않은 행동을 시도해야 합니다(탐색).

엡실론-탐욕 전략

def epsilon_greedy(Q, state, epsilon=0.1):
    if random() < epsilon:
        return random_action()  # 탐색
    else:
        return argmax(Q[state])  # 활용

1.4 강화학습 vs 다른 머신러닝 패러다임

측면 지도학습 강화학습
학습 신호 정확한 레이블 제공 보상 신호 (평가적)
피드백 지시적 (무엇이 정답인지) 평가적 (얼마나 좋은지)
데이터 수집 정적 데이터셋 상호작용으로 데이터 수집
목표 예측 오류 최소화 누적 보상 최대화
시간적 측면 독립적 샘플 순차적 의사결정

1.5 실제 응용 사례

게임 플레이

로보틱스

// 로봇 제어 예제
class RobotAgent:
    def act(self, observation):
        # 관찰: 관절 각도, 속도, 촉각 피드백
        state = self.process_sensors(observation)

        # 출력: 모터 명령
        action = self.policy(state)
        return action

자율주행

금융

1.6 첫 번째 강화학습 에이전트

import numpy as np
import gym

# 환경 생성
env = gym.make('FrozenLake-v1')

# Q-테이블 초기화
Q = np.zeros([env.observation_space.n, env.action_space.n])

# 하이퍼파라미터
alpha = 0.1      # 학습률
gamma = 0.99     # 할인 계수
epsilon = 0.1    # 탐색 비율
episodes = 10000

# 학습 루프
for episode in range(episodes):
    state = env.reset()
    done = False

    while not done:
        # 엡실론-탐욕 행동 선택
        if np.random.random() < epsilon:
            action = env.action_space.sample()  # 탐색
        else:
            action = np.argmax(Q[state])        # 활용

        # 행동 실행
        next_state, reward, done, _ = env.step(action)

        # Q-러닝 업데이트
        Q[state, action] = Q[state, action] + alpha * (
            reward + gamma * np.max(Q[next_state]) - Q[state, action]
        )

        state = next_state

print("학습 완료!")

1.7 강화학습의 과제

샘플 효율성

강화학습은 효과적인 정책을 학습하기 위해 수백만 번의 상호작용이 필요한 경우가 많습니다. 다음과 같은 경우 문제가 됩니다:

신용 할당 문제

보상을 받았을 때, 어떤 과거 행동이 책임이 있는가? 다음과 같은 경우 어렵습니다:

1.8 강화학습 라이브러리

주요 라이브러리

라이브러리 설명 최적 사용처
OpenAI Gym 표준 환경 인터페이스 환경 개발
Stable-Baselines3 신뢰할 수 있는 RL 알고리즘 구현 프로덕션 준비 에이전트
Ray RLlib 분산 RL at scale 대규모 학습

1.9 앞으로의 여정

이 장에서는 강화학습의 기초를 소개했습니다. 다음 장에서는 더 깊이 파고들 것입니다:

요약

  • 강화학습은 상호작용을 통해 누적 보상을 최대화하는 학습입니다
  • 에이전트-환경 인터페이스: 상태, 행동, 보상
  • 탐색-활용 딜레마는 강화학습의 근본적인 과제입니다
  • 강화학습은 평가적이고 순차적인 특성에서 지도학습과 다릅니다
  • 실제 응용 사례는 게임, 로보틱스, 금융, 의료 등을 포함합니다
  • 주요 과제는 샘플 효율성, 신용 할당, 안정성을 포함합니다
  • Gym과 Stable-Baselines3 같은 현대 도구로 강화학습이 접근 가능해졌습니다
  • 할인 계수 γ는 즉각적 보상과 미래 보상의 균형을 맞춥니다
  • 모델 프리와 모델 기반 접근법은 서로 다른 트레이드오프를 제공합니다
  • 강화학습은 순차적 의사결정 문제에 특히 적합합니다

복습 문제

1. 강화학습 시스템의 세 가지 주요 구성 요소는 무엇입니까?

답변: 에이전트(학습자), 환경(에이전트가 상호작용하는 세계), 보상(피드백 신호)입니다.

2. 탐색-활용 트레이드오프를 설명하세요. 왜 중요한가요?

답변: 활용은 즉각적인 보상을 최대화하기 위해 이전에 잘 작동한 행동을 선택하는 것을 의미합니다. 탐색은 잠재적으로 더 나은 전략을 발견하기 위해 새로운 행동을 시도하는 것입니다. 트레이드오프가 중요한 이유는 둘 다 필요하기 때문입니다: 보상을 얻기 위한 활용, 더 나은 행동을 찾기 위한 탐색.

3. 강화학습에서 할인 계수 γ의 목적은 무엇입니까?

답변: 할인 계수는 (1) 무한 수평선 문제를 수학적으로 다루기 쉽게 만들고, (2) 미래에 대한 불확실성 때문에 즉각적인 보상이 미래 보상보다 더 가치 있다는 아이디어를 나타냅니다.

4. 강화학습은 지도학습과 어떻게 다릅니까?

답변: 강화학습은 지시적 피드백(정확한 행동이 무엇인지) 대신 평가적 피드백(행동이 얼마나 좋은지)을 사용합니다. 강화학습은 행동이 미래 상태에 영향을 미치는 순차적 결정을 다루는 반면, 지도학습은 일반적으로 독립적인 샘플을 가정합니다.