5장 - 심층 강화 학습

🏷️ cs230 딥러닝 book

5장. 심층 강화 학습

강화 학습은 아마 이 수업에서 내가 가장 좋아하는 강의일 것이다. 딥러닝과 강화 학습의 결합, 그 아기가 바로 심층 강화 학습이다. — Kian Katanforoosh


5.1 왜 강화 학습인가

강화 학습(Reinforcement Learning, RL)은 좋은 의사결정의 시퀀스를 자동으로 만들어내는 기술이다. 지도 학습이 "예시로 가르치는" 방식이라면, 강화 학습은 "경험으로 가르치는" 방식이다.

RL의 주요 이정표

연도

성과

핵심

2015

*DQN* — 50개 이상의 Atari 게임에서 인간 초월

단일 알고리즘으로 다수의 게임 해결

2017

*AlphaGo* — 바둑에서 인간 세계 챔피언 격파

탐색 공간이 체스보다 훨씬 거대한 게임 정복

2019

*AlphaStar*, OpenAI Five — 스타크래프트, Dota에서 프로 수준

다중 에이전트 협력/대결

2022

*RLHF* — 인간 피드백 기반 강화 학습

GPT-2에서 ChatGPT로의 도약을 만든 핵심 기술

바둑을 지도 학습으로 풀 때의 한계

바둑을 지도 학습으로 접근하면, 입력 X를 현재 보드 상태, 출력 Y를 다음 수로 설정하고 프로 기사의 기보로 학습한다. 이 접근의 문제점은 세 가지다.

  1. 관측 불가능한 상태가 너무 많다 — 13x13 격자의 가능한 배치 수는 천문학적이다
  2. 정답이 불확실하다 — 프로 기사의 수가 반드시 최선은 아니며, 최고의 인간조차 최적 전략은 아니다
  3. 장기 전략을 학습할 수 없다 — X→Y 쌍으로는 단일 수만 학습하지, 수십 수 앞을 내다보는 전략을 학습하지 못한다

5.2 강화 학습의 기본 개념

핵심 용어

용어

기호

설명

에이전트(Agent)

의사결정을 내리는 주체

환경(Environment)

에이전트가 상호작용하는 세계

상태(State)

\(s_t\)

시간 \(t\)에서의 환경 상태

행동(Action)

\(a_t\)

에이전트가 취하는 행동

보상(Reward)

\(r_t\)

행동에 대한 즉각적 피드백

관측(Observation)

\(o_t\)

에이전트가 실제로 보는 것

전이(Transition)

\(s_t\)에서 \(a_t\)를 취해 \(s_{t+1}\)로 이동하는 과정

에피소드(Episode)

시작 상태에서 종료 상태까지의 한 게임

관측과 상태의 차이: 체스나 바둑에서는 보드 전체가 보이므로 \(o_t = s_t\)이다. 그러나 스타크래프트나 League of Legends에서는 **전장의 안개(fog of war)**가 있어 관측이 상태보다 적은 정보를 담는다.

할인된 수익 (Discounted Return)

\[R = \sum_{t=0}^{T} \gamma^t r_t\]

할인 계수(discount factor) \(\gamma \in [0, 1]\)는 미래 보상의 현재 가치를 나타낸다. 1달러를 지금 받는 것이 10년 후에 받는 것보다 가치 있는 것과 같은 원리다. 로봇의 에너지 소모, 게임의 시간 제한 등을 반영한다.

RL의 응용 분야


5.3 Q-테이블과 벨만 방정식

재활용 게임 예제

5개의 상태가 있는 간단한 환경을 생각하자.

[S1: 쓰레기통] ← [S2: 시작] → [S3: 빈 곳] → [S4: 초콜릿] → [S5: 재활용통]

보상 구조: S1(쓰레기통)에 도착하면 +2, S4(초콜릿 줍기) +1, S5(재활용통) +10. 쓰레기 수거차가 3분 후에 오고, 상태 간 이동에 1분이 걸린다.

Q-테이블

Q-테이블은 (상태, 행동) 쌍의 가치를 나타내는 행렬이다. 행은 상태, 열은 행동(왼쪽/오른쪽)이다.

Q-테이블이 완성되면 문제가 풀린 것이다. 어떤 상태에서든 테이블을 조회하여 더 높은 Q값의 행동을 선택하면 된다.

역추적을 통한 Q-테이블 계산

\(\gamma = 0.9\)일 때, 트리를 역추적하여 할인된 수익을 계산한다.

최적 전략: 오른쪽, 오른쪽, 오른쪽 → 총 할인 수익 9.

벨만 최적 방정식 (Bellman Optimality Equation)

\[Q^*(s, a) = r + \gamma \max_{a'} Q^*(s', a')\]

최적 Q-테이블은 이 방정식을 만족한다. 의미는 다음과 같다: 상태 \(s\)에서 행동 \(a\)를 취했을 때의 가치는, 즉각 보상 \(r\)에 다음 상태 \(s'\)에서 가능한 최선의 행동의 할인된 가치를 더한 것이다.


5.4 Deep Q-Network (DQN)

Q-테이블의 한계

바둑처럼 상태와 행동의 공간이 거대하면 Q-테이블은 불가능하다. 행렬이 너무 커서 저장도, 역추적도 할 수 없다.

해결: 신경망으로 Q-함수 근사

신경망은 보편적 함수 근사기(universal function approximator)다. Q-테이블 대신 Q-네트워크를 사용한다.

입력: 상태 s (원-핫 벡터 등)
      ↓ [여러 은닉층]
출력: Q(s, 왼쪽), Q(s, 오른쪽) [행동별 Q값]

행동이 더 많으면 출력 뉴런을 추가하면 된다.

핵심 문제: 레이블이 없다

지도 학습에는 (X, Y) 쌍이 있지만, 강화 학습에는 명시적 레이블이 없다. 벨만 방정식과 보상 구조를 이용하여 자기 자신으로부터 타겟을 추정한다.

타겟 계산 과정

  1. 상태 \(s\)를 Q-네트워크에 통과시켜 각 행동의 Q값을 얻는다 (1차 순전파)
  2. Q값이 가장 높은 행동 \(a\)를 선택한다
  3. 행동 \(a\)를 실행하여 보상 \(r\)과 다음 상태 \(s'\)를 관측한다
  4. \(s'\)를 Q-네트워크에 통과시켜 \(\max_{a'} Q(s', a')\)를 얻는다 (2차 순전파)
  5. 타겟 \(Y = r + \gamma \max_{a'} Q(s', a')\) 를 계산한다
  6. 손실 \(L = (Y - Q(s, a))^2\)을 최소화하도록 역전파한다

핵심: 타겟 \(Y\)를 계산할 때 Q-네트워크를 사용하지만, 역전파 시에는 \(Y\)고정된 상수로 취급한다. 그래야 지도 학습처럼 안정적으로 훈련할 수 있다.

초기에는 Q-네트워크가 무작위이므로 타겟도 부정확하다. 그러나 보상을 관측하면서 타겟이 점점 개선되고, 타겟이 개선되면 Q-네트워크도 개선된다. 이 과정이 반복되면 벨만 방정식을 만족하는 최적 Q-함수에 수렴한다.

의사 코드

Q-네트워크 파라미터 θ 초기화
for episode = 1, 2, ... :
    s ← 초기 상태
    while s가 종료 상태가 아닌 동안:
        Q(s, ·) = Q-네트워크 순전파(s)
        a = argmax Q(s, ·)
        r, s' = 환경에서 a 실행
        if s'가 종료 상태:
            Y = r
        else:
            Y = r + γ · max Q(s', ·)    # 2차 순전파
        L = (Y - Q(s, a))²
        θ ← θ - α ∇L                     # 경사 하강법
        s ← s'

5.5 DQN 훈련 기법

전처리 (Preprocessing)

Atari Breakout 게임을 예로 들면:

점수판은 제거할 수 있다 (Breakout에서는 전략에 무관). 그러나 축구 게임에서는 점수에 따라 전략이 달라지므로(이기고 있으면 수비적, 지고 있으면 공격적) 유지해야 한다.

경험 재생 (Experience Replay)

연속된 프레임은 서로 상관관계가 높다. 공이 같은 방향으로 이동하는 수십 프레임을 연속으로 훈련하면, 고양이만 모인 미니배치로 훈련하는 것과 같은 문제가 발생한다.

해결: 경험을 즉시 훈련하지 않고 **재생 메모리(Replay Memory) \(D\)**에 저장한다.

경험 e = (s, a, r, s') → D에 저장
훈련 시: D에서 무작위 미니배치를 샘플링하여 학습

경험 재생의 장점: 1. 연속 데이터의 상관관계를 깨트린다 2. 하나의 경험을 여러 번 재사용하여 데이터 효율성을 높인다 3. 중요한 경험(큰 보상이나 큰 손실)을 우선 샘플링하는 **우선순위 재생(Prioritized Replay)**으로 확장 가능

탐색 vs 활용 (Exploration vs Exploitation)

3개의 행동이 가능한 상태에서 초기 Q값이 [0.5, 0.4, 0.3]이라면, 에이전트는 항상 첫 번째 행동만 선택한다. 첫 번째 행동의 보상이 0이고, 두 번째가 1이고, 세 번째가 1000이라도, 에이전트는 세 번째를 영원히 방문하지 못한다.

자전거 통근에 비유하면: 매일 같은 길로 가면 점점 더 빨라지지만(활용), 반대쪽으로 가면 더 좋은 길이 있을 수도 있다(탐색).

*\(\epsilon\)-greedy 전략*: 확률 \(\epsilon\)(예: 5%)로 무작위 행동을 선택한다. 나머지 \((1-\epsilon)\)에서는 최선의 행동을 따른다. 이를 통해 미방문 경로를 탐색할 기회를 보장한다.

완성된 DQN 훈련 루프

Q-네트워크 파라미터 θ 초기화
재생 메모리 D 초기화
for episode = 1, 2, ... :
    s ← 초기 상태, terminal ← false
    while not terminal:
        if random() < ε:
            a ← 무작위 행동          # 탐색
        else:
            a ← argmax Q(φ(s), ·)   # 활용
        r, s' ← 환경에서 a 실행
        D에 (φ(s), a, r, φ(s')) 저장
        미니배치 ← D에서 무작위 샘플
        미니배치에 대해:
            if 종료 상태: Y = r
            else: Y = r + γ · max Q(φ(s'), ·)
        L = (Y - Q(φ(s), a))²
        θ ← θ - α ∇L
        s ← s'

이 알고리즘으로 훈련된 Breakout 에이전트는 벽돌 뒤로 공을 보내는 "터널 전략"을 스스로 발견했다. 숙련된 인간 플레이어가 쓰는 전략과 동일하다.


5.6 고급 주제: PPO와 경쟁적 자기 대국

PPO (Proximal Policy Optimization)

DQN은 가치 기반(value-based) 방법이다. Q값을 학습하고 정책을 Q값의 argmax로 정의한다. 반면 **PPO**는 정책 기반(policy-based) 방법으로, 정책을 직접 학습한다.

특성

DQN

PPO

학습 대상

Q-함수 (가치)

정책 \(\pi\) (확률 분포)

행동 공간

이산적 (왼쪽/오른쪽)

연속적 가능 (핸들 각도 등)

핵심 개념

Q값의 argmax

기대 이점(Expected Advantage)

PPO는 자율 주행처럼 연속적인 행동 공간이 필요한 환경에 적합하다.

경쟁적 자기 대국 (Competitive Self-Play)

같은 모델의 복사본을 서로 다르게 초기화하여 경쟁시킨다. 스모 게임에서 에이전트들은 상대의 발을 공격하거나 무게 중심을 낮추는 등의 창발적 전략을 스스로 개발했다.

승리한 모델을 나머지에 복사하고 다시 경쟁을 반복하면, \(\epsilon\)-greedy의 무작위성 덕분에 자연스럽게 하나의 모델이 더 나아지고, 전체적인 수준이 끌어올려진다.

AlphaGo의 반직관적 수

AlphaGo 다큐멘터리를 보면, 에이전트가 인간에게는 이해할 수 없는 수를 둔다. 인간은 가능한 한 많이 이기려 하지만, 에이전트는 이기기만 하면 된다. 그래서 한 집 차이로 이기는 수를 두는데, 이는 승리 확률을 최대화하는 최적 전략이다.


5.7 RLHF: 인간 피드백 기반 강화 학습

언어 모델 훈련의 세 단계

1단계: 사전 훈련 (Pre-training)

인터넷 텍스트로 다음 토큰 예측을 수행한다. 결과물은 텍스트를 이어 쓸 수 있는 모델이지만, 두 가지 문제가 있다.

2단계: 지도 미세조정 (Supervised Fine-Tuning, SFT)

인간이 직접 작성한 (프롬프트, 응답) 쌍으로 미세조정한다. InstructGPT 초기 버전에서는 단 13,000개의 쌍만으로도 상당한 효과를 보았다.

한계: - 인간이 직접 응답을 작성해야 하므로 비용이 극히 높다 - 13,000개의 예시로는 모든 상황에 일반화하기 어렵다 - **모방(imitation)**이지 **선호도 최적화(preference optimization)**가 아니다

3단계: RLHF

SFT만으로는 부족하다. 인간의 **선호도(preference)**에 맞추기 위해 강화 학습을 적용한다.

보상 모델 (Reward Model) 훈련

  1. SFT 모델로 같은 프롬프트에 대해 여러 응답을 생성한다 (온도를 조절하여 다양성 확보)
  2. 인간 레이블러에게 "응답 B > 응답 C > 응답 A" 같은 쌍별 선호도를 수집한다
  3. SFT 모델의 마지막 층을 **스칼라 보상 헤드(reward head)**로 교체한다
  4. 선호된 응답에 높은 보상, 비선호 응답에 낮은 보상을 부여하도록 훈련한다

결과: 프롬프트와 응답을 입력하면 인간 선호도를 근사하는 점수를 출력하는 비평가(critic) 모델이 완성된다.

인간에게 응답을 직접 작성하라고 하는 것(SFT)보다, 두 응답 중 어느 것이 나은지 고르라고 하는 것(RLHF)이 훨씬 빠르고 쉽다. ChatGPT를 쓸 때 "어느 응답이 나은가요?"라는 질문을 본 적이 있을 것이다.

RLHF를 강화 학습 프레임워크로 매핑

RL 개념

RLHF에서의 대응

에이전트

미세조정 중인 언어 모델

환경

가능한 모든 프롬프트와 토큰의 공간

상태 \(s_t\)

프롬프트 + 지금까지 생성된 토큰

행동 \(a_t\)

다음 토큰 선택

보상

보상 모델이 추정한 인간 선호도 점수

에피소드

하나의 프롬프트에 대한 전체 응답 생성

핵심 특성: 희소 보상

모델은 매 토큰마다 보상을 받지 않는다. 응답 전체가 완성된 후에야 보상 모델이 점수를 매긴다. 이는 체스에서 마지막에만 승패를 알 수 있는 것과 같다. 모든 중간 보상은 0이며, 이것이 RLHF를 **희소 보상의 에피소딕 과제(sparse reward episodic task)**로 만든다.


5.8 핵심 정리

개념

핵심 내용

강화 학습

좋은 의사결정 시퀀스를 경험으로 학습

Q-테이블

(상태, 행동) 가치 행렬. 소규모 환경에서만 가능

벨만 방정식

\(Q^*(s,a) = r + \gamma \max_{a'} Q^*(s', a')\)

DQN

신경망으로 Q-함수를 근사하여 대규모 환경 처리

경험 재생

과거 경험을 메모리에 저장하고 무작위 샘플링으로 훈련

*\(\epsilon\)-greedy*

탐색(exploration)과 활용(exploitation)의 균형

PPO

정책을 직접 학습. 연속 행동 공간에 적합

RLHF

보상 모델로 인간 선호도를 근사하고, RL로 언어 모델을 정렬

강화 학습 전체를 한 학기 동안 다루는 별도의 수업이 있을 만큼 깊은 분야다. 이 강의에서는 핵심 개념을 1시간 반에 압축했으며, 더 깊이 공부하려면 Andrej Karpathy의 강화 학습 한계에 대한 영상과 AlphaGo 다큐멘터리(Netflix)를 추천한다.


이전 장: 4장 - 적대적 견고성과 생성 모델 다음 장: 6장 - AI 프로젝트 전략