Вибір дії в REINFORCE
Напишіть функцію REINFORCE select_action, яку ваш агент REINFORCE використовуватиме, щоб обирати дію на кожному кроці.
У DQN прямий прохід мережею повертав значення Q; у REINFORCE він повертає ймовірності дій, з яких безпосередньо можна вибрати дію випадковим чином.
Політичну мережу (policy network) і стан уже завантажено у ваше середовище.
torch.distributions.Categorical імпортовано як Categorical.
Ця вправа є частиною курсу
Глибоке навчання з підкріпленням у Python
Інструкції до вправи
- Отримайте ймовірності дій як тензор torch.
- Отримайте обʼєкт розподілу torch, що відповідає цим ймовірностям дій.
- Виберіть дію, згенерувавши вибірку з цього розподілу.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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}')