أساليب تدرّج السياسة: REINFORCE
مبرهنة تدرّج السياسة، وخوارزمية REINFORCE، وطرح خط الأساس، وتقليل التباين
أساليب تدرّج السياسة: REINFORCE درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
التعلّم المعتمد على القيمة مقابل التعلّم المعتمد على السياسة في RL
تتعلّم بعض أساليب RL قيمة الأفعال، ثم تتصرف بطريقة جشعة. أما أساليب تدرّج السياسة فتتعلّم السياسة مباشرةً، وهي دالة تُخرج احتمالات الأفعال. ويتعامل هذا النهج طبيعيًا مع الأفعال المستمرة والسياسات العشوائية.
السياسة pi(a|s)
تعيّن السياسة ذات المعلمات pi(a|s, theta) الحالة إلى توزيع احتمالي على الأفعال، مع المعلمات theta (وهي شبكة عصبية). ويعدّل التدريب theta لتفضيل الأفعال التي تحقق مكافأة أكبر.
class Policy(nn.Module):
def __init__(self, obs_dim, n_actions):
super().__init__()
self.net = nn.Sequential(
nn.Linear(obs_dim, 128), nn.ReLU(),
nn.Linear(128, n_actions)
)
def forward(self, s):
return torch.softmax(self.net(s), dim=-1)أخذ عينات من الأفعال
بما أن السياسة توزيع احتمالي، فإنك تأخذ عينة من فعل بدلًا من اختيار القيمة العظمى. ويوفّر أخذ العينات الاستكشاف ويجعل السياسة عشوائية.
probs = policy(state)
dist = torch.distributions.Categorical(probs)
action = dist.sample()
log_prob = dist.log_prob(action)تنفيذ مسار زمني
الحلقة (المسار الزمني) هي تسلسل الحالات والأفعال والمكافآت من البداية إلى النهاية. وتجمع مسارًا زمنيًا كاملًا من خلال التفاعل مع البيئة حتى تنتهي الحلقة.
states, actions, rewards, log_probs = [], [], [], []
state, _ = env.reset()
done = False
while not done:
probs = policy(torch.tensor(state).float())
dist = torch.distributions.Categorical(probs)
a = dist.sample()
state, r, term, trunc, _ = env.step(a.item())
rewards.append(r); log_probs.append(dist.log_prob(a))
done = term or truncالعائد المخصوم G_t
العائد G_t هو إجمالي المكافأة المستقبلية بدءًا من الزمن t، بعد خصمها باستخدام gamma بحيث تحظى المكافآت الأقرب بوزن أكبر. وهو يخبرنا بمدى جودة الأفعال المتخذة ابتداءً من الخطوة t.
def returns(rewards, gamma=0.99):
G, out = 0, []
for r in reversed(rewards):
G = r + gamma * G
out.insert(0, G)
return torch.tensor(out)دالة هدف REINFORCE
REINFORCE ينفّذ صعود التدرج على العائد المتوقع. بديهياً: زِد احتمال الأفعال التي أدت إلى عائد مرتفع، وخفّض احتمال تلك التي أدت إلى عائد منخفض. يُوزَن كل فعل باستخدام G_t.
تدرج السياسة
الخسارة هي -sum(log_prob * G_t). تحوّل الإشارة السالبة صعود التدرج إلى هبوط، بحيث يعظّم المحسّن العائد. تُرفَع قيمة لوغاريتم احتمال الأفعال ذات العائد المرتفع.
G = returns(rewards)
loss = -torch.sum(torch.stack(log_probs) * G)تحديث السياسة
نفّذ الانتشار العكسي وخطوة التحسين كالمعتاد. يستخدم كل تحديث مساراً كاملاً، ثم تتخلّص منه؛ إذ إن REINFORCE يعمل وفق نمط on-policy، أي باستخدام بيانات السياسة الحالية فقط.
optimizer.zero_grad()
loss.backward()
optimizer.step()مشكلة التباين المرتفع
تتسم REINFORCE التقليدية بأنها غير مستقرة وذات تباين مرتفع للغاية: إذ تتغير العوائد بشدة بين الحلقات، فتكون تقديرات التدرج مشوشة ويصبح التعلم بطيئاً ومتذبذباً.
خط الأساس لتقليل التباين
يؤدي طرح خط أساس، مثل متوسط العائد، من G_t إلى تقليل التباين من دون إحداث انحياز في التدرج. فنحن نكافئ الأفعال لأنها أفضل من المتوقع، لا لمجرد أنها حققت عائداً موجباً.
baseline = G.mean()
advantage = G - baseline
loss = -torch.sum(torch.stack(log_probs) * advantage)أهمية REINFORCE
تُعد REINFORCE أساس جميع أساليب تدرج السياسة. وتدفع عيوبها، وهي التباين المرتفع وضعف كفاءة العينات، إلى استخدام أسلوبي الممثّل-الناقد وPPO اللذين ستتعرّف إليهما تالياً.
اختبار سريع
اختبر فهمك لتدرج السياسة.
مراجعة: REINFORCE
لقد تعلّمتَ كيفية بناء سياسة ذات معلمات pi(a|s,theta)، وتشغيل المسارات، وحساب العائد المخصوم G_t، وتنفيذ صعود التدرج باستخدام الخسارة -sum(log_prob * G_t). كما تعرّفتَ إلى التباين المرتفع في REINFORCE وكيف يقلله خط الأساس.
الأسئلة الشائعة
هل درس «أساليب تدرّج السياسة: REINFORCE» مجاني؟
نعم — نص درس «أساليب تدرّج السياسة: REINFORCE» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «أساليب تدرّج السياسة: REINFORCE»؟
مبرهنة تدرّج السياسة، وخوارزمية REINFORCE، وطرح خط الأساس، وتقليل التباين تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أساليب تدرّج السياسة: REINFORCE»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساليب تدرّج السياسة: REINFORCE
- أساليب الفاعل والناقد (A2C)
- تحسين السياسة القريب (PPO)
- بيئات Gymnasium المخصصة