엔트로피 보너스와 PPO

Python으로 배우는 Deep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

엔트로피 보너스

 

 

  • 정책 경사 알고리즘은 결정적 정책으로 붕괴할 수 있음
  • 해결: 엔트로피 보너스 추가
  • 엔트로피는 분포의 불확실성을 측정!

거대한 바위 때문에 바로 앞에서 더 나아가지 못하는 화성 로버.

Python으로 배우는 Deep Reinforcement Learning

확률분포의 엔트로피

 

이산 확률변수 X의 엔트로피(비트 단위) 정의: H(X) = - 값 x에 대해 p(x) log_2 p(x)의 합

  • $\log_2$ 대신 $\ln$ 사용 시: 단위는 nat
  • $1\ nat = \frac{1}{\ln 2}\ bit \approx 1.44 \ bit$

4개 행동에 대한 확률이 모두 0.25인 정책. 엔트로피 2비트.

두 행동에만 동일하게 확률이 집중(나머지는 0)된 정책. 엔트로피 1비트.

한 행동에 확률 1로 완전히 집중된 정책. 엔트로피 0비트.

Python으로 배우는 Deep Reinforcement Learning

엔트로피 보너스 구현

def select_action(policy_network, state):
  action_probs = policy_network(state)
  action_dist = Categorical(action_probs)
  action = action_dist.sample()
  log_prob = action_dist.log_prob(action)

# Obtain the entropy of the policy entropy = action_dist.entropy()
return (action.item(), log_prob.reshape(1), entropy)
  • Actor 손실: actor_loss -= c_entropy * entropy
  • 참고: Categorical.entropy() 는 nat 단위; 비트로는 math.log(2)로 나눔
Python으로 배우는 Deep Reinforcement Learning

PPO 학습 루프

for episode in range(10):
  state, info = env.reset()
  done = False
  while not done:
    action, action_log_prob, entropy = select_action(actor, state)
    next_state, reward, terminated, truncated, _ = env.step(action)
    done = terminated or truncated
    actor_loss, critic_loss = calculate_losses(critic, action_log_prob, action_log_prob,
                                               reward, state, next_state, done)
    actor_loss -= c_entropy * entropy
    actor_optimizer.zero_grad(); actor_loss.backward(); actor_optimizer.step()
    critic_optimizer.zero_grad(); critic_loss.backward(); critic_optimizer.step()
    state = next_state
Python으로 배우는 Deep Reinforcement Learning

배치 업데이트로 가는 PPO

 

  • 매 스텝 업데이트: PPO 목적함수를 충분히 활용 못 함
  • 각 스텝에서 $\theta$ 는 실제로 $\theta_{old}$ 와 동일
  • 완전한 PPO는 다음을 분리함:
    • 파라미터 업데이트(미니배치)
    • 정책 업데이트(롤아웃)
Python으로 배우는 Deep Reinforcement Learning

연습해 봅시다!

Python으로 배우는 Deep Reinforcement Learning

Preparing Video For Download...