Actor-Critic の損失計算
A2Cでエージェントを学習させる前の最後のステップとして、両ネットワークの損失を返す calculate_losses() 関数を実装してください。
参考として、アクター損失とクリティック損失の式はそれぞれ次のとおりです。
この演習はコースの一部です
Pythonで学ぶDeep Reinforcement Learning
演習の手順
- TDターゲットを計算します。
- アクターネットワークの損失を計算します。
- クリティックネットワークの損失を計算します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def calculate_losses(critic_network, action_log_prob,
reward, state, next_state, done):
value = critic_network(state)
next_value = critic_network(next_state)
# Calculate the TD target
td_target = (____ + gamma * ____ * (1-done))
td_error = td_target - value
# Calculate the actor loss
actor_loss = -____ * ____.detach()
# Calculate the critic loss
critic_loss = ____
return actor_loss, critic_loss
actor_loss, critic_loss = calculate_losses(
critic_network, action_log_prob,
reward, state, next_state, done
)
print(round(actor_loss.item(), 2), round(critic_loss.item(), 2))