REINFORCE에서의 행동 선택
REINFORCE 에이전트가 매 스텝에서 행동을 고를 때 사용할 select_action 함수를 작성하세요.
DQN에서는 네트워크의 순전파가 Q-값을 반환했지만, REINFORCE에서는 행동 확률을 반환하며, 이 확률에서 바로 행동을 샘플링할 수 있어요.
정책 네트워크와 상태가 이미 환경에 로드되어 있어요.
torch.distributions.Categorical은 Categorical로 임포트되어 있어요.
이 연습은 강의의 일부입니다
Python으로 배우는 Deep Reinforcement Learning
연습 안내
- 행동 확률을 torch 텐서로 구하세요.
- 해당 행동 확률에 대응하는 torch Distribution을 구하세요.
- 그 분포에서 행동을 샘플링하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def select_action(policy_network, state):
# Obtain the action probabilities
action_probs = ____
print('Action probabilities:', action_probs)
# Instantiate the action distribution
action_dist = Categorical(____)
# Sample an action from the distribution
action = ____
log_prob = action_dist.log_prob(action)
return action.item(), log_prob.reshape(1)
state = torch.rand(8)
action, log_prob = select_action(policy_network, state)
print('Sampled action index:', action)
print(f'Log probability of sampled action: {log_prob.item():.2f}')