الغوص بشكل أعمق في التعلم المعزز باستخدام Q-Learning

هذه المقالة جزء من دورة تعلم التعزيز العميق باستخدام Tensorflow؟ ️. تحقق من المنهج هنا.

اليوم سوف نتعرف على Q-Learning. Q-Learning هي خوارزمية تعلم معزز قائمة على القيمة.

هذه المقالة هي الجزء الثاني من سلسلة مجانية من منشورات المدونة حول التعلم العميق المعزز. لمزيد من المعلومات والمزيد من الموارد ، تحقق من منهج الدورة. انظر المقال الأول هنا.

ستتعلم في هذه المقالة:

  • ما هو Q-Learning
  • كيفية تنفيذه مع Numpy

الصورة الكبيرة: الفارس والأميرة

لنفترض أنك فارس وتحتاج إلى إنقاذ الأميرة المحاصرة في القلعة الموضحة على الخريطة أعلاه.

يمكنك تحريك بلاطة واحدة في كل مرة. لا يمكن للعدو أن يهبط على نفس البلاط مثل العدو ، وسوف تموت.هدفك هو الذهاب إلى القلعة بأسرع طريق ممكن. يمكن تقييم ذلك باستخدام نظام "تسجيل النقاط".

  • أنتخسارة -1 في كل خطوة (خسارة نقاط في كل خطوةيساعد وكيلنا على أن يكون سريعًا).
  • إذا لمست عدوًا ، ستخسر -100 نقطة وتنتهي الحلقة.
  • إذا كنت في القلعة فزت ، تحصل على +100 نقطة.

السؤال هو: كيف تنشئ وكيلًا يمكنه فعل ذلك؟

ها هي الإستراتيجية الأولى. لنفترض أن وكيلنا يحاول الانتقال إلى كل بلاطة ، ثم يقوم بتلوين كل بلاطة. أخضر لـ "آمن" ، وأحمر إذا لم يكن كذلك.

بعد ذلك ، يمكننا إخبار وكيلنا بأخذ البلاط الأخضر فقط.

لكن المشكلة هي أنها ليست مفيدة حقًا. لا نعرف أفضل البلاط الذي يجب أخذه عندما يكون البلاط الأخضر متجاورًا مع بعضه البعض.لذلك يمكن أن يقع وكيلنا في حلقة لا نهائية من خلال محاولة العثور على القلعة!

إدخال Q-table

إليك إستراتيجية ثانية: قم بإنشاء جدول حيث سنقوم بحساب الحد الأقصى للمكافأة المستقبلية المتوقعة ، لكل إجراء في كل حالة.

بفضل ذلك ، سنعرف ما هو أفضل إجراء يمكن اتخاذه لكل ولاية.

كل حالة (تجانب) تسمح بأربعة إجراءات ممكنة. هذه تتحرك لليسار أو لليمين أو لأعلى أو لأسفل.

من حيث الحساب ، يمكننا تحويل هذه الشبكة إلى جدول.

وهذا يسمى جدول Q ("Q" لـ "جودة" الإجراء). ستكون الأعمدة هي الإجراءات الأربعة (يسار ، يمين ، أعلى ، أسفل). الصفوف ستكون الدول. ستكون قيمة كل خلية هي أقصى مكافأة مستقبلية متوقعة لتلك الحالة والإجراء المعينين.

ستكون كل نتيجة Q-table هي الحد الأقصى للمكافأة المستقبلية المتوقعة التي سأحصل عليها إذا اتخذت هذا الإجراء في تلك الحالة مع تقديم أفضل سياسة.

لماذا نقول "مع السياسة المقدمة؟" هذا لأننا لا ننفذ سياسة. بدلاً من ذلك ، نقوم فقط بتحسين Q-table لاختيار الإجراء الأفضل دائمًا.

فكر في طاولة Q على أنها "ورقة غش" للعبة. بفضل ذلك ، نعرف لكل حالة (كل سطر في جدول Q) ما هو أفضل إجراء يمكن اتخاذه ، من خلال إيجاد أعلى درجة في هذا السطر.

بلى! لقد حللنا مشكلة القلعة! لكن انتظر ... كيف نحسب القيم لكل عنصر من عناصر جدول Q؟

لمعرفة كل قيمة لجدول Q هذا ، سنستخدم خوارزمية Q Learning.

خوارزمية Q-Learning: تعلم وظيفة قيمة العمل

تأخذ وظيفة قيمة الإجراء (أو "وظيفة Q") مدخلين: "الحالة" و "الإجراء". تقوم بإرجاع المكافأة المستقبلية المتوقعة لهذا الإجراء في تلك الحالة.

يمكننا أن نرى وظيفة Q هذه كقارئ يقوم بالتمرير عبر جدول Q للعثور على السطر المرتبط بحالتنا ، والعمود المرتبط بعملنا. تقوم بإرجاع قيمة Q من الخلية المطابقة. هذه هي "المكافأة المستقبلية المتوقعة".

ولكن قبل أن نستكشف البيئة ، يعطي جدول Q نفس القيمة الثابتة التعسفية (في معظم الأحيان 0). بينما نستكشف البيئة ، سيمنحنا جدول Q تقريبًا أفضل وأفضل من خلال التحديث المتكرر Q (s ، a) باستخدام معادلة Bellman (انظر أدناه!).

عملية خوارزمية التعلم Q

الخطوة 1: تهيئة قيم Q

نقوم ببناء جدول Q ، مع m cols (م = عدد الإجراءات) ، و n من الصفوف (n = عدد الحالات). نقوم بتهيئة القيم عند 0.

الخطوة 2: مدى الحياة (أو حتى يتوقف التعلم)

ستتكرر الخطوات من 3 إلى 5 حتى نصل إلى أقصى عدد من الحلقات (يحدده المستخدم) أو حتى نوقف التدريب يدويًا.

الخطوة 3: اختر إجراءً

اختر إجراء ل في الدولة الحالية الصورة استنادا إلى التقديرات Q-القيمة الحالية.

لكن ... ما الإجراء الذي يمكننا اتخاذه في البداية ، إذا كانت كل قيمة Q تساوي صفرًا؟

هذا هو المكان الذي ستكون فيه مقايضة الاستكشاف / الاستغلال التي تحدثنا عنها في المقالة الأخيرة مهمة.

الفكرة هي أنه في البداية ،سنستخدم استراتيجية إبسيلون الجشعة:

  • We specify an exploration rate “epsilon,” which we set to 1 in the beginning. This is the rate of steps that we’ll do randomly. In the beginning, this rate must be at its highest value, because we don’t know anything about the values in Q-table. This means we need to do a lot of exploration, by randomly choosing our actions.
  • We generate a random number. If this number > epsilon, then we will do “exploitation” (this means we use what we already know to select the best action at each step). Else, we’ll do exploration.
  • The idea is that we must have a big epsilon at the beginning of the training of the Q-function. Then, reduce it progressively as the agent becomes more confident at estimating Q-values.

Steps 4–5: Evaluate!

Take the action a and observe the outcome state s’ and reward r. Now update the function Q(s,a).

We take the action a that we chose in step 3, and then performing this action returns us a new state s’ and a reward r (as we saw in the Reinforcement Learning process in the first article).

Then, to update Q(s,a) we use the Bellman equation:

The idea here is to update our Q(state, action) like this:

New Q value = Current Q value + lr * [Reward + discount_rate * (highest Q value between possible actions from the new state s’ ) — Current Q value ]

Let’s take an example:

  • One cheese = +1
  • Two cheese = +2
  • Big pile of cheese = +10 (end of the episode)
  • If you eat rat poison =-10 (end of the episode)

Step 1: We init our Q-table

Step 2: Choose an action

From the starting position, you can choose between going right or down. Because we have a big epsilon rate (since we don’t know anything about the environment yet), we choose randomly. For example… move right.

We found a piece of cheese (+1), and we can now update the Q-value of being at start and going right. We do this by using the Bellman equation.

Steps 4–5: Update the Q-function

  • First, we calculate the change in Q value ΔQ(start, right)
  • Then we add the initial Q value to the ΔQ(start, right) multiplied by a learning rate.

Think of the learning rate as a way of how quickly a network abandons the former value for the new. If the learning rate is 1, the new estimate will be the new Q-value.

Good! We’ve just updated our first Q value. Now we need to do that again and again until the learning is stopped.

Implement a Q-learning algorithm

لقد صنعنا مقطع فيديو حيث نطبق وكيل Q-Learning الذي يتعلم تشغيل Taxi-v2 مع Numpy.

الآن بعد أن عرفنا كيف يعمل ، سنقوم بتنفيذ خوارزمية Q-Learning خطوة بخطوة. يتم شرح كل جزء من الكود مباشرة في دفتر Jupyter أدناه.

يمكنك الوصول إليه في مستودع دورة تعلم التعزيز العميق.

أو يمكنك الوصول إليه مباشرة على Google Colaboratory:

س * التعلم مع بحيرة المجمدة

colab.research.google.com

خلاصة ...

  • Q-Learning هي خوارزمية تعلم معزز قائمة على القيمة تُستخدم للعثور على سياسة اختيار الإجراء المثلى باستخدام دالة aq.
  • يقوم بتقييم الإجراء الذي يجب اتخاذه بناءً على دالة قيمة الفعل التي تحدد قيمة التواجد في حالة معينة واتخاذ إجراء معين في تلك الحالة.
  • الهدف: تعظيم دالة القيمة Q (المكافأة المستقبلية المتوقعة بالنظر إلى الحالة والعمل).
  • Q table helps us to find the best action for each state.
  • To maximize the expected reward by selecting the best of all possible actions.
  • The Q come from qualityof a certain action in a certain state.
  • Function Q(state, action) → returns expected future reward of that action at that state.
  • This function can be estimated using Q-learning, which iteratively updates Q(s,a) using the Bellman Equation
  • Before we explore the environment: Q table gives the same arbitrary fixed value → but as we explore the environment → Q gives us a better and better approximation.

That’s all! Don’t forget to implement each part of the code by yourself — it’s really important to try to modify the code I gave you.

Try to add epochs, change the learning rate, and use a harder environment (such as Frozen-lake with 8x8 tiles). Have fun!

Next time we’ll work on Deep Q-learning, one of the biggest breakthroughs in Deep Reinforcement Learning in 2015. And we’ll train an agent that that plays Doom and kills enemies!

If you liked my article, please click the ? below as many time as you liked the article so other people will see this here on Medium. And don’t forget to follow me!

If you have any thoughts, comments, questions, feel free to comment below or send me an email: [email protected], or tweet me @ThomasSimonini.

Keep learning, stay awesome!

Deep Reinforcement Learning Course with Tensorflow ?️

? Syllabus

? Video version

Part 1: An introduction to Reinforcement Learning

Part 2: Diving deeper into Reinforcement Learning with Q-Learning

Part 3: An introduction to Deep Q-Learning: let’s play Doom

الجزء 3+: تحسينات في التعلم العميق Q: Dueling Double DQN ، وإعادة تشغيل التجربة ذات الأولوية ، وأهداف Q الثابتة

الجزء 4: مقدمة لتدرجات السياسة مع Doom and Cartpole

الجزء 5: مقدمة لأساليب نقد الممثل الأفضل: لنلعب دور Sonic the Hedgehog!

الجزء 6: تحسين السياسة القريبة (PPO) باستخدام Sonic the Hedgehog 2 و 3

الجزء 7: جعل التعلم القائم على الفضول الجزء الأول سهلًا