딥 강화학습 소개

Python으로 배우는 Deep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

왜 딥 강화학습인가

 

  • 전통적 RL은 저차원 과제에 적합

 

 

  • 많은 응용은 고차원 상태/행동 공간을 가짐

 

에이전트가 Frozen Lake 환경을 탐색

에이전트가 고전 게임 Space Invaders를 플레이

Python으로 배우는 Deep Reinforcement Learning

DRL의 재료

 

  1. 강화학습 개념
  2. 딥러닝과 PyTorch

 

  • DRL은 심층 신경망으로 이 개념들을 결합

 

재료를 섞는 요리사 픽셀 아트 일러스트

Python으로 배우는 Deep Reinforcement Learning

RL 프레임워크

 

  • 단계 t:

 

두 개의 작은 상자(‘Agent’, ‘Environment’)가 들어있는 큰 상자

Python으로 배우는 Deep Reinforcement Learning

RL 프레임워크

 

  • 단계 t:
    • 에이전트가 상태 $s_t$를 관측

 

빨간 화살표(라벨: 상태 s_t)가 환경에서 에이전트로 향함.

Python으로 배우는 Deep Reinforcement Learning

RL 프레임워크

 

  • 단계 t:
    • 에이전트가 상태 $s_t$를 관측
    • 에이전트가 행동 $a_t$ 수행

 

빨간 화살표(라벨: 행동 a_t)가 에이전트에서 환경으로 향함. 상태 화살표는 이제 검정색.

Python으로 배우는 Deep Reinforcement Learning

RL 프레임워크

 

  • 단계 t:
    • 에이전트가 상태 $s_t$를 관측
    • 에이전트가 행동 $a_t$ 수행
  • 단계 t+1:
    • 환경이 보상 $r_t$ 제공
    • 상태가 $s_{t+1}$로 변화

 

상태 s_t 화살표 라벨이 상태 s_t+1로 바뀌고 다시 빨간색. 새 빨간 화살표(라벨: 보상 r_t+1)가 환경에서 에이전트로 향함. 행동 화살표는 검정색.

Python으로 배우는 Deep Reinforcement Learning

RL 프레임워크

 

  • 단계 t:
    • 에이전트가 상태 $s_t$를 관측
    • 에이전트가 행동 $a_t$ 수행
  • 단계 t+1:
    • 환경이 보상 $r_t$ 제공
    • 상태가 $s_{t+1}$로 변화
  • 에피소드가 끝날 때까지 반복

 

이전 슬라이드와 동일하나 모든 화살표가 검정색.

Python으로 배우는 Deep Reinforcement Learning

정책 $\pi(s_t)$

 

  • 상태에서 행동으로의 매핑: 주어진 상태 $s_t$에서의 에이전트 행위 규정

 

  • 결정론적:
    • 선택된 행동을 반환
  • 확률적:
    • 행동 분포를 반환
    • 정책은 가능한 행동에 대한 확률분포
Python으로 배우는 Deep Reinforcement Learning

궤적과 에피소드 반환값

 

궤적 tau: 한 에피소드의 모든 상태와 행동의 순서; tau = ((s0, a0), (s1, a1), ... (sT, aT))

 

에피소드 반환 Rtau: 궤적 tau를 따라 누적된 (할인) 보상의 합. Rtau = sum over t of gamma to the power of t times r_t

Python으로 배우는 Deep Reinforcement Learning

환경 설정

env = gym.make("ALE/SpaceInvaders-v5")

# Define neural network architecture class Network(nn.Module): def __init__(self, dim_inputs, dim_outputs): super(Network, self).__init__() self.linear = nn.Linear(dim_inputs, dim_outputs) def forward(self, x): return self.linear(x)
# Instantiate network network = Network(dim_inputs, dim_outputs)
# Instantiate optimizer optimizer = optim.Adam(network.parameters(), lr=0.0001)
Python으로 배우는 Deep Reinforcement Learning

기본 루프

for episode in range(1000):
  state, info = env.reset()
  done = False

while not done:
action = select_action(network, state)
next_state, reward, terminated, truncated, _ = ( env.step(action)) done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done) optimizer.zero_grad() loss.backward() optimizer.step()
state = next_state

 

  • 바깥 루프: 에피소드 반복
  • 안쪽 루프: 스텝 반복
    • 행동 선택
    • 새 상태와 보상 관측
    • 손실 계산 및 네트워크 업데이트
    • 상태 갱신
  • (손실?)
Python으로 배우는 Deep Reinforcement Learning

다음 내용

 

 

  • DRL은 강력합니다!
  • 가치 기반과 정책 기반 접근
  • DQN과 개선들
  • 정책 경사 방식

딥 강화학습의 비밀을 발견하기 위해 심해로 잠수하는 Datacamp 학습자

Python으로 배우는 Deep Reinforcement Learning

Ayo berlatih!

Python으로 배우는 Deep Reinforcement Learning

Preparing Video For Download...