शुरू करेंमुफ़्त में शुरू करें

Clipped surrogate objective function

PPO के लिए calculate_loss() फंक्शन इम्प्लीमेंट करें. इसमें PPO का मुख्य नवाचार — clipped surrogate loss function — कोड करना शामिल है. यह policy update को सीमित रखने में मदद करता है ताकि हर स्टेप पर पॉलिसी पिछली पॉलिसी से बहुत दूर न चली जाए.

Clipped surrogate objective का सूत्र इस प्रकार है

आपके environment में clipping hyperparameter epsilon को 0.2 सेट किया गया है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python में Deep Reinforcement Learning

पाठ्यक्रम देखें

अभ्यास निर्देश

  • \pi_\theta और \pi_{\theta_{old}} के बीच probability ratios प्राप्त करें (unclipped और clipped वर्ज़न).
  • Surrogate objectives निकालें (unclipped और clipped वर्ज़न).
  • PPO clipped surrogate objective की गणना करें.
  • Actor loss की गणना करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

def calculate_losses(critic_network, action_log_prob, action_log_prob_old,
                     reward, state, next_state, done):
    value = critic_network(state)
    next_value = critic_network(next_state)
    td_target = (reward + gamma * next_value * (1-done))
    td_error = td_target - value
    # Obtain the probability ratios
    ____, ____ = calculate_ratios(action_log_prob, action_log_prob_old, epsilon=.2)
    # Calculate the surrogate objectives
    surr1 = ratio * ____.____()
    surr2 = clipped_ratio * ____.____()    
    # Calculate the clipped surrogate objective
    objective = torch.min(____, ____)
    # Calculate the actor loss
    actor_loss = ____
    critic_loss = td_error ** 2
    return actor_loss, critic_loss
  
actor_loss, critic_loss = calculate_losses(critic_network, action_log_prob, action_log_prob_old,
                                           reward, state, next_state, done)
print(actor_loss, critic_loss)
कोड संपादित करें और चलाएँ