강화학습의 전략적 기울기 접근법

목차

서론

1. 가치 기반 접근법 재검토

1.1 핵심 개념

1.2 한계점

2. 전략 직접 최적화 이유

2.1 전략 기울기의 핵심 원리

2.2 직관적 이점

3. 전략 기울기 정리

3.1 유도 과정

3.2 최종 표현식

4. REINFORCE 알고리즘

4.1 알고리즘 단계

4.2 코드 예시

5. 분산 감소: 기준선 도입

5.1 기준선 기법

5.2 최적 기준선

6. REINFORCE에서 현대 알고리즘으로

7. 결론

서론

강화학습(AI)에서는 에이전트가 환경에서 최적의 결정을 내리는 것을 목표로 한다. 이는 두 가지 주요 접근법으로 나뉜다: 가치 기반(Value-Based) 접근법과 전략 기반(Policy-Based) 접근법. 오늘은 전략 기반 접근법의 핵심 기술인 전략 기울기(Policy Gradient)를 탐구할 것이다.

Q-Learning과 DQN과 같은 가치 기반 접근법이 이미 강력한데, 왜 전략을 직접 최적화해야 할까? 이 질문이 오늘의 핵심이다.

1. 가치 기반 접근법 재검토

1.1 핵심 개념

가치 기반 접근법(Q-Learning, DQN)은 가치 함수를 학습하는 것이 핵심이다:

  • 상태 가치 함수 V(s): 정책을 따를 때 얻는 기대 누적 보상
  • 행동 가치 함수 Q(s, a): 상태 s에서 행동 a를 취한 후 정책을 따를 때 얻는 기대 누적 보상

정확한 Q 함수가 존재하면 정책은 자동으로 결정된다: Q 값이 가장 큰 행동을 선택한다.

1.2 한계점

이 방법은 다음 문제가 있다:

  1. 이산 행동 공간만 처리 가능
  2. 정책이 결정적
  3. 가치 함수의 미세한 변화가 정책을 극적으로 변화시킴

2. 전략 직접 최적화 이유

2.1 전략 기울기의 핵심 원리

가치 함수를 거쳐 정책을 유도하는 대신, 전략을 파라미터화하고 기울기 상승으로 최적화한다.

전략 파라미터화 시각화 매개변수 θ로 정의된 전략 πθ는 상태 s에서 행동 a의 확률을 출력한다. 최적 θ는 기대 누적 보상을 최대화해야 한다.

2.2 직관적 이점

  • 연속 행동 공간 지원
  • 확률적 전략 학습 가능
  • 최적화 과정의 안정성
  • 직접 목적 함수 최적화

3. 전략 기울기 정리

3.1 유도 과정

목표 함수는 다음과 같다:

수식 1 매개변수 θ에 대한 기울기를 계산할 때, 로그 도함수 기법(log-derivative trick)을 활용한다.

3.2 최종 표현식

전략 기울기 정리:

수식 2 환경 모델 없이도 기울기를 추정할 수 있다.

4. REINFORCE 알고리즘

4.1 알고리즘 단계

REINFORCE 알고리즘
================
1. 전략 매개변수 θ 초기화
2. 반복:
   a. πθ로 경로 τ 샘플링
   b. 경로 총 보상 R(τ) 계산
   c. 기울기 추정: g = Σ_t ∇_θ log πθ(a_t|s_t) · R(τ)
   d. 매개변수 업데이트: θ ← θ + α · g

4.2 코드 예시

import torch
import torch.nn as nn
import torch.optim as optim
from torch.distributions import Categorical

class AgentModel(nn.Module):
    def __init__(self, input_dim, output_dim, hidden_size=128):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(input_dim, hidden_size),
            nn.ReLU(),
            nn.Linear(hidden_size, hidden_size),
            nn.ReLU(),
            nn.Linear(hidden_size, output_dim),
            nn.Softmax(dim=-1)
        )
    
    def forward(self, state):
        return self.net(state)
    
    def generate_choice(self, state):
        probs = self.forward(state)
        dist = Categorical(probs)
        action = dist.sample()
        log_prob = dist.log_prob(action)
        return action.item(), log_prob

def train(env, model, optimizer, episodes=1000, gamma=0.99):
    for episode in range(episodes):
        state = env.reset()
        probabilities_log = []
        rewards = []
        
        done = False
        while not done:
            state_tensor = torch.FloatTensor(state)
            action, log_prob = model.generate_choice(state_tensor)
            next_state, reward, done, _ = env.step(action)
            
            probabilities_log.append(log_prob)
            rewards.append(reward)
            state = next_state
        
        returns = []
        G = 0
        for r in reversed(rewards):
            G = r + gamma * G
            returns.insert(0, G)
        returns = torch.tensor(returns)
        
        returns = (returns - returns.mean()) / (returns.std() + 1e-8)
        
        loss = []
        for log_p, G in zip(probabilities_log, returns):
            loss.append(-log_p * G)
        
        optimizer.zero_grad()
        loss = torch.stack(loss).sum()
        loss.backward()
        optimizer.step()

5. 분산 감소: 기준선 도입

5.1 기준선 기법

보상에서 상태에 의존하지 않는 기준선을 빼도 기울기 기대값은 변하지 않는다:

수식 3

5.2 최적 기준선

최적 기준선은 상태 가치 함수 V(s)이다. 이 경우:

수식 4 이는 우월도(Advantage) 함수로, 상태 평균보다 얼마나 우수한지를 측정한다.

6. REINFORCE에서 현대 알고리즘으로

REINFORCE는 기초가 되었지만 현대 알고리즘은 다음과 같은 개선을 포함한다:

알고리즘주요 개선
Actor-Critic (A2C)Critic 도입으로 분산 감소
A3C비동기 병렬 학습
TRPO신뢰 영역 제약
PPO클립 메커니즘 적용
SAC최대 엔트로피 프레임워크

7. 결론

핵심 요약:

  • 전략 직접 최적화의 이점
  • 정책 기울기 정리의 중요성
  • REINFORCE 알고리즘의 기본 원리
  • 우월도 기반 최적화

정책 기울기 방법은 복잡한 문제를 해결하는 새로운 문을 열었다. 이 글이 정책 기울기의 직관적 이해에 도움이 되길 바란다.

태그: Reinforcement Learning Policy Gradient Deep Learning Actor-Critic PPO

5월 26일 22:42에 게시됨