ポリシー勾配とREINFORCE

Pythonで学ぶDeep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

DQNとの違い

  • REINFORCE: モンテカルロ方式、TDではない
    • 毎ステップではなく、エピソード末に更新
    • 複数エピソード後に更新も可
  • 価値関数なし
  • 目標ネットワークなし
  • ε-greedy なし
  • 経験再生なし

行動価値関数Q、経験再生、ε-greedy、固定Qターゲットの図が積み重なり、打ち消し線で示されている

Pythonで学ぶDeep Reinforcement Learning

REINFORCE の学習ループ構造

 

for episode in range(num_episodes):

# 1. エピソード初期化
while not done:
# 2. 行動を選択
# 3. 行動実行し次状態と報酬を取得
# 4. (割引)報酬をリターンに加算
# 5. 状態を更新
# 6. 損失を計算
# 7. 勾配降下でポリシーネットを更新
Pythonで学ぶDeep Reinforcement Learning

行動選択

 

from torch.distributions import Categorical

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)
return action.item(), log_prob.reshape(1)
action, log_prob = select_action( policy_network, state)

 

  • ネットワークから確率を取得
  • 行動を1つサンプリング
  • 行動と対応する対数確率を返す

 

Sampled action index: 1
Log probability of sampled action: -1.38
Pythonで学ぶDeep Reinforcement Learning

損失の計算

 

ポリシー勾配定理を思い出しましょう:

ポリシー勾配定理:J(pi_theta) の θ に関する勾配は、pi_theta に従う軌跡 τ 上でのエピソードリターンと、軌跡内の全行動に対する対数確率勾配の和の積の期待値に等しい

REINFORCE のエピソード損失関数:L(theta) はマイナスのエピソードリターンに、行動対数確率の和を掛けたもの

Pythonでは:

  • $R_{\tau}$ は episode_return
  • $\log\pi_\theta(a_t|s_t)$ のベクトルは episode_log_probs
loss = -episode_return * episode_log_probs.sum()
Pythonで学ぶDeep Reinforcement Learning

REINFORCE の学習ループ

for episode in range(50):
  state, info = env.reset(); done = False; step = 0;
  episode_log_probs = torch.tensor([])

R = 0
while not done: step += 1 action, log_prob = select_action(policy_network, state)
next_state, reward, terminated, truncated, _ = env.step(action) done = terminated or truncated
R += (gamma ** step) * reward
episode_log_probs = torch.cat((episode_log_probs, log_prob))
state = next_state
loss = - R * episode_log_probs.sum()
optimizer.zero_grad(); loss.backward(); optimizer.step()
Pythonで学ぶDeep Reinforcement Learning

¡Vamos a practicar!

Pythonで学ぶDeep Reinforcement Learning

Preparing Video For Download...