始める無料で始める

REINFORCE における行動選択

REINFORCE エージェントが各ステップで行動を選択するために使う、REINFORCE の select_action 関数を実装してください。

DQN ではネットワークの順伝播は Q 値を返しましたが、REINFORCE では行動の確率を返し、その確率から直接サンプリングして行動を選びます。

ポリシーネットワークと状態は、すでに環境に読み込まれています。

torch.distributions.CategoricalCategorical としてインポート済みです。

この演習はコースの一部です

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}')
コードを編集して実行