انتقل إلى المحتوى الرئيسي

الوحدة 6 — الاستكشاف: إبسيلون الجشع والبدائل

يفترض إثبات تقارب تعلّم Q أنّ كلّ زوج (حالة، فعل) يُزار عدد لا نهائي من المرّات. في الواقع، لدينا ميزانيّة تدريب محدودة، ولذلك السؤال «كيف نستكشف بذكاء؟» يفصل بين خوارزميّات تعمل وأخرى تُعلّق بلا حياة.

المعضلة الأساسيّة

في كلّ حالة يواجه الوكيل خيارًا:

  • الاستغلال: اختيار الفعل الذي يبدو الأفضل الآن (argmaxaQ(s,a)\arg\max_a Q(s, a)).
  • الاستكشاف: تجربة فعل آخر لعلّه أفضل، أو للتحقّق من تقديرنا.

الاستغلال الحصري يُقفل الوكيل في الأمثل المحلّي: إن قاده Q0Q_0 العشوائي إلى تفضيل فعل رديء في حالة معيّنة، فلن يجرّب الأفضل ولن يعرف أبدًا. الاستكشاف الحصري لن يستخدم قطّ ما تعلّمه، وسيبقى أداؤه عشوائيًّا للأبد. المطلوب هو مزج موزون بينهما.

إبسيلون-جشعة

الخوارزميّة الأبسط: بنسبة ϵ\epsilon اختر عشوائيًّا (استكشاف)؛ وإلّا اختر argmax\arg\max (استغلال).

at={عشوائيباحتمال ϵargmaxaQ(st,a)باحتمال 1ϵa_t = \begin{cases} \text{عشوائي} & \text{باحتمال } \epsilon \\ \arg\max_a Q(s_t, a) & \text{باحتمال } 1 - \epsilon \end{cases}

هذه القاعدة بسيطة لكنّها غليظة: عندما نستكشف، جميع الأفعال متساوية الاحتمال، حتّى الأفعال التي نعلم أنّها كارثيّة. ومع ذلك تعمل جيّدًا جدًّا في التبويب.

تناقص إبسيلون: القرار الحاسم

إبسيلون ثابت (مثلًا 0,10{,}1 إلى الأبد) خطأ نموذجيّ. عند نهاية التدريب، وسياسة قريبة من المُثلى، ما زلنا نُنفّذ فعلًا عشوائيًّا مرّة من كلّ عشر خطوات — وهذا يقتل الأداء. الحلّ: جدول تناقص.

ثلاث صيغ شائعة:

تناقص خطّي من ϵ0=1,0\epsilon_0 = 1{,}0 إلى ϵmin=0,05\epsilon_{\min} = 0{,}05 عبر NN حلقة:

ϵ(k)=max(ϵmin,ϵ0kN(ϵ0ϵmin))\epsilon(k) = \max\left(\epsilon_{\min}, \epsilon_0 - \frac{k}{N}(\epsilon_0 - \epsilon_{\min})\right)

تناقص أسّي بمعامل d(0,1)d \in (0, 1): ϵk+1=max(ϵmin,dϵk)\epsilon_{k+1} = \max(\epsilon_{\min}, d \cdot \epsilon_k). مع d=0,9995d = 0{,}9995 نصل من 11 إلى 0,050{,}05 بعد نحو 60006000 حلقة.

تناقص بجدول تكرار: ϵk=11+βk\epsilon_k = \frac{1}{1 + \beta k}، وهو ما يقترحه إثبات التقارب النظري لتعلّم Q.

اختيار الصيغة أقلّ أهمّية من اختيار الحدّ الأدنى ϵmin\epsilon_{\min} والزمن الكامل للتناقص. لا تحسموا هذه الأرقام قبل قياس الأفق: هل يحتاج المسار الأمثل عشر خطوات أم مئة؟ في الأولى ابدأوا تناقصًا سريعًا، وفي الثانية أعطوا وقتًا.

دليل ملموس على الاستكشاف غير الكافي

نُشغّل تعلّم Q على FrozenLake الزلق مرتين، الأولى بإبسيلون ثابت =0,01= 0{,}01، والثانية بتناقص أسّي من 11 إلى 0,050{,}05.

# مقارنة سريعة
resultats = {}
for nom, plan in [("epsilon fixe 0.01", lambda k: 0.01),
("decroissance", lambda k: max(0.05, 0.9995 ** k))]:
Q = np.zeros((16, 4))
victoires = 0
for ep in range(20_000):
etat, _ = env.reset()
done = False
while not done:
eps = plan(ep)
action = env.action_space.sample() if np.random.random() < eps else int(np.argmax(Q[etat]))
etat_prime, r, term, trunc, _ = env.step(action)
cible = r + (0 if term else 0.99 * np.max(Q[etat_prime]))
Q[etat, action] += 0.1 * (cible - Q[etat, action])
etat = etat_prime
done = term or trunc
victoires += 1 if r > 0 else 0
resultats[nom] = victoires / 20_000

النتيجة النمطيّة: بإبسيلون ثابت 0,010{,}01 لا يتعلّم الوكيل شيئًا في FrozenLake الزلق — يعلق عند Q=0Q = 0 لأنّه لا يزور المكافأة أبدًا. مع التناقص يصل إلى 74%\approx 74\%. الفرق ليس ضبطًا دقيقًا بل انفصالًا بين «يعمل» و«لا يعمل».

سوفت‌ماكس (بولتزمان)

بديل يختار فعلًا احتماليًّا بحسب قيمته:

π(as)=exp(Q(s,a)/τ)aexp(Q(s,a)/τ)\pi(a \mid s) = \frac{\exp(Q(s, a) / \tau)}{\sum_{a'} \exp(Q(s, a') / \tau)}

معامل الحرارة τ\tau يتحكّم بالحدّة: τ0\tau \to 0 يجعلها جشعة تمامًا، وτ\tau \to \infty يجعلها منتظمة. مقارنة بإبسيلون-جشعة، سوفت‌ماكس يوزّع الاستكشاف بحسب المعلومات: تُختار الأفعال الجيّدة أكثر من السيّئة، حتّى في وضع الاستكشاف. ميزة عندما تكون هناك أفعال كارثيّة يجب تجنّبها.

الأثر السلبي: يحتاج ضبط τ\tau بحساسيّة، ومع اختلاف مقاييس QQ من مسألة لأخرى قد لا تعمل قيم τ\tau نفسها. لهذا يبقى إبسيلون-جشعة الأكثر استعمالًا في الممارسة.

UCB: التفاؤل تجاه المجهول

فكرة أنيقة من نظريّة قطّاعات المسافرين متعدّدة الأذرع: أضف إلى Q(s,a)Q(s, a) حدًّا يكافئ نقص المعرفة:

at=argmaxa[Q(s,a)+clntN(s,a)]a_t = \arg\max_a \left[ Q(s, a) + c \sqrt{\frac{\ln t}{N(s, a)}} \right]

حيث N(s,a)N(s, a) عدد مرّات زيارة الزوج وtt العدد الكلّي للخطوات. الحدّ الثاني يكبر عندما يكون aa نادرًا في ss، فيجعله جذّابًا حتّى ولو كانت Q(s,a)Q(s, a) متواضعة. يُسمّى هذا التفاؤل تجاه المجهول: نُفضّل ما لا نعرفه بما يكفي لنُصدر حكمًا.

UCB يعمل جيّدًا على القطّاعات (بحالة واحدة)، لكن على MDP كبير يصبح تتبّع N(s,a)N(s, a) مكلفًا، ولذلك يبقى استعماله محدودًا في تعلّم Q العميق.

الخلاصة

  • الاستغلال والاستكشاف توتّر أساسي؛ حصريّة أحدهما تفشل ضمانًا.
  • إبسيلون-جشعة بسيطة وفعّالة؛ لكنّ إبسيلون ثابتًا خطأ شائع يُعلِّق التعلّم على مسائل تفاعليّة.
  • جدول التناقص (خطّي أو أسّي) هو الأداة العمليّة الأهمّ، وقيمه تُقاس بأفق المهمّة.
  • سوفت‌ماكس يوزّع الاستكشاف بذكاء لكنّه حسّاس للحرارة؛ UCB يُفضّل ما لم نستكشفه بما يكفي، ويلمع على القطّاعات.

الوحدة التالية: نغادر التبويب. يصبح فضاء الحالة كبيرًا جدًّا للجدول (بكسلات CartPole)، فنستبدل QQ بشبكة عصبيّة — وتظهر مشاكل جديدة تفرض حلولها الخاصّة.