Κατάδυση βαθύτερα στην Ενίσχυση Μάθησης με Q-Learning

Αυτό το άρθρο είναι μέρος του μαθήματος μάθησης βαθιάς ενίσχυσης με Tensorflow; ️. Δείτε το πρόγραμμα σπουδών εδώ.

Σήμερα θα μάθουμε για την Q-Learning. Το Q-Learning είναι ένας αλγόριθμος Reinforcement Learning που βασίζεται στην αξία

Αυτό το άρθρο είναι το δεύτερο μέρος μιας δωρεάν σειράς αναρτήσεων ιστολογίου σχετικά με την εκμάθηση βαθιάς ενίσχυσης. Για περισσότερες πληροφορίες και περισσότερους πόρους, ρίξτε μια ματιά στο πρόγραμμα σπουδών του μαθήματος. Δείτε το πρώτο άρθρο εδώ.

Σε αυτό το άρθρο θα μάθετε:

  • Τι είναι το Q-Learning
  • Πώς να το εφαρμόσετε με το Numpy

Η μεγάλη εικόνα: ο Ιππότης και η Πριγκίπισσα

Ας πούμε ότι είστε ιππότης και πρέπει να σώσετε την πριγκίπισσα που είναι παγιδευμένη στο κάστρο που φαίνεται στον παραπάνω χάρτη.

Μπορείτε να μετακινήσετε ένα πλακίδιο κάθε φορά. Ο εχθρός δεν μπορεί, αλλά να προσγειωθεί στο ίδιο πλακάκι με τον εχθρό, και θα πεθάνεις.Ο στόχος σας είναι να πάτε το κάστρο με την ταχύτερη δυνατή διαδρομή. Αυτό μπορεί να αξιολογηθεί χρησιμοποιώντας ένα σύστημα «βαθμολόγησης πόντων».

  • ΕσείςΧάστε -1 σε κάθε βήμα (χάνοντας πόντους σε κάθε βήμαβοηθά τον πράκτορά μας να είναι γρήγορος).
  • Εάν αγγίξετε έναν εχθρό, χάνετε -100 πόντους και το επεισόδιο τελειώνει.
  • Εάν βρίσκεστε στο κάστρο κερδίζετε, κερδίζετε +100 πόντους.

Το ερώτημα είναι: πώς δημιουργείτε έναν πράκτορα που θα είναι σε θέση να το κάνει αυτό;

Εδώ είναι μια πρώτη στρατηγική. Ας υποθέσουμε ότι ο πράκτορας μας προσπαθεί να πάει σε κάθε πλακίδιο και έπειτα να χρωματίσει κάθε πλακίδιο. Πράσινο για «ασφαλές» και κόκκινο αν όχι.

Στη συνέχεια, μπορούμε να πούμε στον πράκτορά μας να πάρει μόνο πράσινα πλακίδια.

Αλλά το πρόβλημα είναι ότι δεν είναι πραγματικά χρήσιμο. Δεν γνωρίζουμε το καλύτερο πλακίδιο που πρέπει να παίρνουμε όταν τα πράσινα πλακίδια είναι το ένα δίπλα στο άλλο.Έτσι ο πράκτορας μας μπορεί να πέσει σε έναν άπειρο βρόχο προσπαθώντας να βρει το κάστρο!

Παρουσιάζουμε τον πίνακα Q

Ακολουθεί μια δεύτερη στρατηγική: δημιουργήστε έναν πίνακα όπου θα υπολογίσουμε τη μέγιστη αναμενόμενη μελλοντική ανταμοιβή, για κάθε ενέργεια σε κάθε πολιτεία.

Χάρη σε αυτό, θα γνωρίζουμε ποια είναι η καλύτερη δράση για κάθε πολιτεία.

Κάθε κατάσταση (πλακίδιο) επιτρέπει τέσσερις πιθανές ενέργειες. Αυτά κινούνται αριστερά, δεξιά, πάνω ή κάτω.

Όσον αφορά τον υπολογισμό, μπορούμε να μετατρέψουμε αυτό το πλέγμα σε πίνακα.

Αυτό ονομάζεται πίνακας Q ("Q" για "ποιότητα" της δράσης). Οι στήλες θα είναι οι τέσσερις ενέργειες (αριστερά, δεξιά, πάνω, κάτω). Οι σειρές θα είναι οι πολιτείες. Η τιμή κάθε κελιού θα είναι η μέγιστη αναμενόμενη μελλοντική ανταμοιβή για τη δεδομένη κατάσταση και ενέργεια.

Κάθε βαθμολογία Q-table θα είναι η μέγιστη αναμενόμενη μελλοντική επιβράβευση που θα λάβω αν κάνω αυτήν την ενέργεια σε αυτήν την κατάσταση με την καλύτερη πολιτική που δίνεται.

Γιατί λέμε "με την πολιτική που δίνεται;" Είναι επειδή δεν εφαρμόζουμε πολιτική. Αντ 'αυτού, απλώς βελτιώνουμε τον πίνακα Q για να επιλέγουμε πάντα την καλύτερη δράση.

Σκεφτείτε αυτό το Q-table ως παιχνίδι "cheat sheet" Χάρη σε αυτό, γνωρίζουμε για κάθε κατάσταση (κάθε γραμμή στον πίνακα Q) ποια είναι η καλύτερη δράση που πρέπει να κάνουμε, βρίσκοντας την υψηλότερη βαθμολογία σε αυτήν τη γραμμή.

Ναι! Λύσαμε το πρόβλημα του κάστρου! Αλλά περιμένετε… Πώς υπολογίζουμε τις τιμές για κάθε στοιχείο του πίνακα Q;

Για να μάθουμε κάθε τιμή αυτού του πίνακα Q, θα χρησιμοποιήσουμε τον αλγόριθμο εκμάθησης Q.

Αλγόριθμος Q-learning: εκμάθηση της συνάρτησης Value Action

Η συνάρτηση Value Action (ή "Q-function") λαμβάνει δύο εισόδους: "κατάσταση" και "ενέργεια". Επιστρέφει την αναμενόμενη μελλοντική ανταμοιβή αυτής της ενέργειας σε αυτήν την κατάσταση.

Μπορούμε να δούμε αυτήν τη λειτουργία Q ως αναγνώστη που κάνει κύλιση στον πίνακα Q για να βρει τη γραμμή που σχετίζεται με την κατάστασή μας και τη στήλη που σχετίζεται με τη δράση μας. Επιστρέφει την τιμή Q από το αντίστοιχο κελί. Αυτή είναι η «αναμενόμενη μελλοντική ανταμοιβή».

Πριν όμως εξερευνήσουμε το περιβάλλον, ο πίνακας Q δίνει την ίδια αυθαίρετη σταθερή τιμή (τις περισσότερες φορές 0). Καθώς εξερευνούμε το περιβάλλον , ο πίνακας Q θα μας δώσει μια καλύτερη και καλύτερη προσέγγιση ενημερώνοντας επαναληπτικά Q (s, a) χρησιμοποιώντας την Εξίσωση Bellman (δείτε παρακάτω!).

Η διαδικασία αλγόριθμου Q-learning

Βήμα 1: Αρχικοποιήστε τις τιμές Q

Χτίζουμε έναν πίνακα Q, με m cols (m = αριθμός ενεργειών), και n σειρές (n = αριθμός καταστάσεων). Αρχικοποιούμε τις τιμές στο 0.

Βήμα 2: Για τη ζωή (ή έως ότου η μάθηση σταματήσει)

Τα βήματα 3 έως 5 θα επαναληφθούν μέχρι να φτάσουμε στον μέγιστο αριθμό επεισοδίων (που καθορίζεται από τον χρήστη) ή μέχρι να σταματήσουμε χειροκίνητα την προπόνηση.

Βήμα 3: Επιλέξτε μια ενέργεια

Επιλέξτε μια ενέργεια ενός στην τρέχουσα κατάσταση s με βάση τις τρέχουσες εκτιμήσεις της Q-τιμής.

Όμως… τι ενέργεια μπορούμε να κάνουμε στην αρχή, εάν κάθε τιμή Q ισούται με μηδέν;

Εκεί θα είναι σημαντική η ανταλλαγή εξερεύνησης / εκμετάλλευσης για την οποία μιλήσαμε στο τελευταίο άρθρο.

Η ιδέα είναι ότι στην αρχή,θα χρησιμοποιήσουμε την άπληστη στρατηγική epsilon:

  • 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 παρακάτω.

Μπορείτε να αποκτήσετε πρόσβαση σε αυτό στο χώρο εκμάθησης του Deep Reinforcement Learning Course.

Ή μπορείτε να αποκτήσετε πρόσβαση σε αυτό απευθείας στο Google Colaboratory:

Ε * Μαθαίνοντας με την παγωμένη λίμνη

colab.research.google.com

Ανακεφαλαίωση…

  • Το Q-learning είναι ένας αλγόριθμος Reinforcement 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+: Βελτιώσεις στην εκμάθηση Deep Q: Dueling Double DQN, Priority Experience Replay και σταθεροί Q-στόχοι

Μέρος 4: Εισαγωγή στις διαβαθμίσεις πολιτικής με Doom και Cartpole

Μέρος 5: Μια εισαγωγή στο Advantage Actor Critic μεθόδους: ας παίξουμε το Sonic the Hedgehog!

Μέρος 6: Βελτιστοποίηση εγγύησης πολιτικής (PPO) με Sonic the Hedgehog 2 και 3

Μέρος 7: Η μάθηση που βασίζεται στην περιέργεια έγινε εύκολη στο Μέρος I