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

Clipped probability ratio

अब आप clipped probability ratio इम्प्लीमेंट करेंगे, जो PPO objective function का एक जरूरी हिस्सा है.

संदर्भ के लिए, probability ratio इस प्रकार परिभाषित है: $$\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$$

और clipped probability ratio है: \(\mathrm{clip}(r_t(\theta), 1-\varepsilon, 1+\varepsilon)\).

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

Python में Deep Reinforcement Learning

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

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

  • action_log_prob से action probability prob प्राप्त करें, और action_log_prob_old से prob_old प्राप्त करें.
  • पुराने action log prob को torch gradient computation graph से detach करें.
  • probability ratio की गणना करें.
  • surrogate objective को clip करें.

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

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

log_prob = torch.tensor(.5).log()
log_prob_old = torch.tensor(.4).log()

def calculate_ratios(action_log_prob, action_log_prob_old, epsilon):
    # Obtain prob and prob_old
    prob = ____
    prob_old = ____
    # Detach the old action log prob
    prob_old_detached = ____.____()
    # Calculate the probability ratio
    ratio = ____ / ____
    # Apply clipping
    clipped_ratio = torch.____(ratio, ____, ____)
    print(f"+{'-'*29}+\n|         Ratio: {str(ratio)} |\n| Clipped ratio: {str(clipped_ratio)} |\n+{'-'*29}+\n")
    return (ratio, clipped_ratio)

_ = calculate_ratios(log_prob, log_prob_old, epsilon=.2)
कोड संपादित करें और चलाएँ