Q التعلم في Python: ما هو ، التعريفات [أمثلة الترميز]
نشرت: 2020-03-26التعلم المعزز هو عندما يتعلم وكيل التعلم التصرف على النحو الأمثل وفقًا لبيئته من خلال التفاعلات المستمرة. يمر الوكيل بمواقف مختلفة ، والتي تُعرف أيضًا بالحالات. كما كنت قد خمنت ، فإن التعلم المعزز له العديد من التطبيقات في عالمنا. تعرف على المزيد إذا كنت مهتمًا بمعرفة المزيد حول خوارزميات علوم البيانات.
كما أنه يحتوي على العديد من الخوارزميات ، ومن أشهرها Q Learning . في هذه المقالة ، سنناقش ماهية هذه الخوارزمية وكيف تعمل.
لذلك ، دون مزيد من اللغط ، فلنبدأ.
جدول المحتويات
ما هو Q Learning؟
Q learning هي خوارزمية تعلم معزز ، وتركز على إيجاد أفضل مسار للعمل لحالة معينة. إنها خارج السياسة لأن الإجراءات التي تتعلمها وظيفة Q Learning من خارج السياسة الحالية ، لذا فهي لا تتطلب أيًا منها. يركز على تعلم سياسة تزيد من مكافأتها الإجمالية. إنه شكل بسيط من أشكال التعلم المعزز الذي يستخدم قيم الإجراءات (أو قيم Q) لتحسين سلوك وكيل التعلم.
تعد Q learning واحدة من أكثر الخوارزميات شيوعًا في التعلم المعزز ، حيث يسهل فهمها وتنفيذها. يمثل "Q" في Q Learning الجودة. كما ذكرنا سابقًا ، تركز Q learning على إيجاد أفضل إجراء لحالة معينة. وتُظهر الجودة مدى فائدة إجراء معين والمكافأة التي يمكن أن تساعدك في الوصول إليها.
تعريفات مهمة
قبل أن نبدأ في مناقشة كيفية عملها ، يجب أن نلقي أولاً نظرة على بعض المفاهيم الأساسية للتعلم. هيا بنا نبدأ.
Q- قيم
تُعرف قيم Q أيضًا باسم قيم الإجراء. يتم تمثيلهم بواسطة Q (S ، A) ، وهم يعطونك تقديرًا لمدى جودة الإجراء A في الحالة S. سيحسب النموذج هذا التقدير بشكل تكراري باستخدام قاعدة تحديث الفروق الزمنية التي ناقشناها لاحقًا في هذا القسم.
الحلقات والمكافآت
يبدأ الوكيل من حالة البداية ، ويمر بعدة انتقالات ، ثم ينتقل من حالته الحالية إلى الحالة التالية وفقًا لإجراءاته وبيئته. عندما يتخذ الوكيل إجراءً ، فإنه يحصل على بعض المكافأة. وعندما لا تكون هناك انتقالات ممكنة ، يكون هذا هو الانتهاء من الحلقة.
TD-Update (الاختلاف الزمني)
إليك قاعدة TD-Update أو الاختلاف الزمني:
Q (S، A) Q (S، A) + (R + Q (S '، A') - Q (S، A))
هنا ، تمثل S الحالة الحالية للوكيل ، بينما تمثل S 'الحالة التالية. يمثل "أ" الإجراء الحالي ، ويمثل "أ" الإجراء الأفضل التالي وفقًا لتقدير قيمة Q ، بينما يُظهر R المكافأة الحالية وفقًا للإجراء الحالي ، ويشير إلى عامل الخصم ، ويظهر طول الخطوة.
اقرأ أيضًا: المتطلبات الأساسية لعلوم البيانات. كيف تتغير بمرور الوقت؟
مثال على Q Learning Python
أفضل طريقة لفهم Q Learning Python هي مشاهدة مثال. في هذا المثال ، نستخدم بيئة الصالة الرياضية في OpenAI وندرب نموذجنا معها. أولاً ، سيتعين عليك تثبيت البيئة. يمكنك القيام بذلك باستخدام الأمر التالي:
نقطة تثبيت الصالة الرياضية
الآن ، سنقوم باستيراد المكتبات التي سنحتاجها في هذا المثال:
استيراد الصالة الرياضية
استيراد أدوات itertools
استيراد matplotlib
استيراد matplotlib.style
استيراد numpy كـ np
استيراد الباندا كما pd
استيراد النظم
من مجموعات الاستيراد الافتراضي ديكت
من windy_gridworld استيراد WindyGridworldEnv
استيراد التآمر
matplotlib.style.use ("ggplot")
بدون المكتبات اللازمة ، لن تتمكن من إجراء هذه العمليات بنجاح. بعد استيراد المكتبات ، سننشئ البيئة:
env = WindyGridworldEnv ()
الآن سنضع سياسة الجشع:
ديف createEpsilonGreedyPolicy (Q، epsilon، num_actions):
"" "
ينشئ سياسة إبسيلون الجشع
على وظيفة Q و epsilon معينة.
ترجع دالة تأخذ الحالة
كمدخل وإرجاع الاحتمالات
لكل إجراء في شكل مصفوفة عددية
من طول مساحة العمل (مجموعة من الاستجابات المحتملة).
"" "
سياسة defFunction (state):
Action_probabilities = np.ones (num_actions،
dtype = float) * epsilon / num_actions
best_action = np.argmax (س [حالة])
Action_probabilities [best_action] + = (1.0 - إبسيلون)
إرجاع Action_probabilities
سياسة الإرجاع
هذا هو الكود الخاص ببناء نموذج q-Learning:
def qLearning (env، num_episodes، discount_factor = 1.0،
ألفا = 0.6 ، إبسيلون = 0.1):
"" "

خوارزمية التعلم Q: التحكم في TD خارج السياسة.
يكتشف سياسة الجشع المثلى مع التحسن
اتباع سياسة epsilon-greedy "" "
# وظيفة قيمة العمل
# قاموس متداخل يرسم الخرائط
# الحالة -> (الإجراء -> قيمة الإجراء).
Q = defaultdict (lambda: np.zeros (env.action_space.n))
# يتتبع الإحصاءات المفيدة
احصائيات = التخطيط.
episode_lengths = np.zeros (عدد_حلقات) ،
episode_rewards = np.zeros (عدد_حلقات))
# إنشاء وظيفة سياسة الجشع إبسيلون
# بشكل مناسب لمساحة العمل البيئية
policy = createEpsilonGreedyPolicy (Q، epsilon، env.action_space.n)
# لكل حلقة
لعدد الحلقة ith_episodes في النطاق (عدد_حلقات):
# إعادة تعيين البيئة واختيار الإجراء الأول
الدولة = env.reset ()
لـ t في itertools.count ():
# الحصول على احتمالات لجميع الإجراءات من الحالة الحالية
action_probabilities = سياسة (حالة)
# اختر إجراءً وفقًا لـ
# توزيع الاحتمالات
الإجراء = np.random.choice (np.arange (
لين (الاحتمالات_العملية)) ،
ع = action_probabilities)
# اتخاذ إجراء والحصول على المكافأة ، والانتقال إلى الحالة التالية
next_state ، مكافأة ، تم ، _ = env.step (عمل)
# تحديث الإحصائيات
stats.episode_ Rewards [i_episode] + = مكافأة
stats.episode_lengths [i_episode] = t
# تحديث TD
best_next_action = np.argmax (Q [next_state])
td_target = مكافأة + discount_factor * Q [next_state] [best_next_action]
td_delta = td_target - Q [حالة] [إجراء]
س [حالة] [إجراء] + = ألفا * td_delta
# تم صحيح إذا تم إنهاء الحلقة
إذا تم:
استراحة
الدولة = next_state
عودة س ، احصائيات
دعنا ندرب النموذج الآن:
Q، stats = qLearning (env، 1000)
بعد إنشاء النموذج وتدريبه ، يمكننا رسم الإحصائيات الأساسية له:
ploting.plot_episode_stats (احصائيات)
استخدم هذا الرمز لتشغيل النموذج ورسم الرسم البياني. ما نوع النتائج التي تراها؟ شاركنا بنتائجك ، وإذا واجهتك أي لبس أو شك ، فأخبرنا بذلك.
اقرأ أيضًا: خوارزميات التعلم الآلي لعلوم البيانات
تعلم دورات علوم البيانات من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.
افكار اخيرة
عندما ترسم الرسم البياني ، ستلاحظ أن المكافأة لكل حلقة تزداد تدريجيًا بمرور الوقت. وبعد حلقات معينة ، تعكس الحبكة أيضًا أنها ترفع حد المكافأة المرتفع لكل حلقة. ماذا يشير هذا؟
هذا يعني أن نموذجك قد تعلم زيادة إجمالي المكافأة التي يمكن أن يربحها في إحدى الحلقات من خلال التأكد من أنه يتصرف على النحو الأمثل. يجب أن تكون قد رأيت أيضًا سبب رؤية q لتعلم Python للتطبيقات في العديد من الصناعات والمجالات.
ما هي عيوب التعلم المعزز؟
1. قد ينتج عن التعلم المعزز المفرط زيادة في الحالات ، مما يقلل من جودة النتائج.
2. لا ينصح بالتعلم المعزز لحل المشكلات بسهولة.
3- يتطلب التعلم التعزيزي كمية كبيرة من البيانات والحسابات.
4. التعلم المعزز لديه مجموعة خاصة به من العقبات الفريدة والمعقدة للغاية ، مثل إعداد تصميم التدريب الصعب والقضايا المتعلقة بميزان الاستكشاف والتعزيز.
هل Q Learning قائم على نموذج؟
لا ، Q Learning لا يعتمد على النماذج. Q-Learning هي تقنية تعلم معزز خالية من النماذج لتحديد قيمة إجراء معين في حالة معينة. تعد Q learning واحدة من العديد من خوارزميات التعلم المعزز الحالية الخالية من النماذج ، مما يعني أنه يمكن استخدامها في مجموعة متنوعة من السياقات ويمكن أن تتكيف بسرعة مع الظروف الجديدة وغير المعروفة. يمكنه التعامل مع المشكلات التي تتضمن التحولات العشوائية والمكافآت دون الحاجة إلى تعديلات ولا تتطلب نموذجًا للبيئة. Q-Learning هي خوارزمية تعلم تعتمد على القيم. تستخدم الخوارزميات القائمة على القيمة معادلة لتحديث دالة القيمة (خاصة معادلة بيلمان).
كيف تختلف Q Learning و SARSA عن بعضهما البعض؟
يتعلم SARSA سياسة شبه مثالية أثناء الاستكشاف ، بينما يتعلم Q-Learning السياسة المثلى مباشرة. تتعلم SARSA خارج السياسة قيم الإجراءات فيما يتعلق بالسياسة التي تتبعها ، بينما تتعلم SARSA على السياسة قيم الإجراءات فيما يتعلق بالسياسة التي تتبعها. فيما يتعلق بسياسة الجشع ، فإن Q-Learning يفعل ذلك. كلاهما يتقارب مع دالة القيمة الحقيقية في ظل بعض الظروف المتشابهة ، ولكن بسرعات مختلفة. يستغرق التعلم Q-Learning وقتًا أطول قليلاً للتقارب ، ولكنه قد يستمر في التعلم أثناء تغيير اللوائح. عند اقترانه بالتقريب الخطي ، لا يضمن Q-Learning أن يتقارب. سوف تنظر SARSA في العقوبات من الخطوات الاستكشافية عند الاقتراب من التقارب ، بينما Q-Learning لن. إذا كانت هناك فرصة لمكافأة سلبية كبيرة على طول المسار المثالي ، فستحاول Q-Learning تشغيلها أثناء الاستكشاف ، ومع ذلك ستحاول SARSA تجنب المسار الأمثل المحفوف بالمخاطر وتعلم كيفية استخدامه فقط بعد تقليل معلمات الاستكشاف.