Q Learning: Όλα όσα πρέπει να γνωρίζετε για το Reinforcement Learning



Αυτό το άρθρο παρέχει μια λεπτομερή και περιεκτική γνώση του Q-Learning μέσω μιας όμορφης αναλογίας του Reinforcement Learning μέσω του κώδικα Python.

και είναι μερικοί τομείς που είναι μεταξύ των κορυφαίων λέξεων-κλειδιών στον κλάδο και για έναν καλό λόγο. Η AI πρόκειται να δημιουργήσει 2,3 εκατομμύρια θέσεις εργασίας έως το 2020, λαμβάνοντας υπόψη ότι ο κύριος στόχος της είναι να επιτρέψει στις μηχανές να μιμούνται την ανθρώπινη συμπεριφορά. Παράξενο, έτσι δεν είναι; Έτσι, σήμερα πρόκειται να συζητήσουμε το Q Learning, το δομικό στοιχείο του Reinforcement Learning με την ακόλουθη σειρά:

Τι είναι η Εκμάθηση Ενίσχυσης;

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





Βασικοί τομείς ενδιαφέροντος:

  • περιβάλλον
  • Δράση
  • Ανταμοιβή
  • κατάσταση

μάθηση ενίσχυσης - μάθηση q



Το Reinforcement Learning είναι ο κλάδος της μηχανικής μάθησης που επιτρέπει στα συστήματα να μαθαίνουν από τα αποτελέσματα των δικών τους αποφάσεων. Επιλύει ένα συγκεκριμένο πρόβλημα όπου η λήψη αποφάσεων είναι διαδοχική και ο στόχος είναι μακροπρόθεσμος.

Διαδικασία Q-Learning

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

Αναλογία εργοστασίων αυτοκινήτων:



Είμαστε σε ένα εργοστάσιο αυτοκινήτων γεμάτο ρομπότ. Αυτά τα ρομπότ βοηθούν τους εργάτες του εργοστασίου μεταφέροντας τα απαραίτητα ανταλλακτικά που απαιτούνται για τη συναρμολόγηση ενός αυτοκινήτου. Αυτά τα διαφορετικά μέρη βρίσκονται σε διαφορετικές τοποθεσίες εντός του εργοστασίου σε 9 σταθμούς. Τα ανταλλακτικά περιλαμβάνουν σασί, τροχούς, ταμπλό, κινητήρα και ούτω καθεξής. Το Factory Master έχει δώσει προτεραιότητα στην τοποθεσία όπου εγκαθίσταται το πλαίσιο ως ύψιστη προτεραιότητα. Ας ρίξουμε μια ματιά στη ρύθμιση εδώ:

Πολιτεία:

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

Ενέργειες:

Οι ενέργειες δεν είναι παρά οι κινήσεις των ρομπότ σε οποιαδήποτε τοποθεσία. Λάβετε υπόψη ότι ένα ρομπότ βρίσκεται στη θέση L2 και οι άμεσες τοποθεσίες στις οποίες μπορεί να μετακινηθούν είναι οι L5, L1 και L3. Ας το καταλάβουμε καλύτερα αν το φανταστούμε αυτό:

Ανταμοιβές:

Θα δοθεί ανταμοιβή στο ρομπότ για μετάβαση απευθείας από τη μία κατάσταση στην άλλη. Για παράδειγμα, μπορείτε να φτάσετε στο L5 απευθείας από το L2 και το αντίστροφο. Έτσι, σε κάθε περίπτωση, θα δοθεί 1 ανταμοιβή. Ας ρίξουμε μια ματιά στον πίνακα ανταμοιβών:

πώς να ορίσετε τη διαδρομή για το java

Θυμηθείτε όταν ο εργοδότης έδωσε προτεραιότητα στη θέση του πλαισίου. Ήταν το L7, οπότε πρόκειται να ενσωματώσουμε αυτό το γεγονός στον πίνακα ανταμοιβών μας. Έτσι, θα εκχωρήσουμε έναν πολύ μεγάλο αριθμό (999 στην περίπτωσή μας) στην τοποθεσία (L7, L7).

Εξίσωση Bellman

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

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

V (s) = max (R (s, a) + & # 120632V (s ’))

Που:

  • s = μια συγκεκριμένη κατάσταση
  • a = δράση
  • s '= κατάσταση στην οποία πηγαίνει το ρομπότ από το s
  • & # 120632 = συντελεστής έκπτωσης
  • R (s, a) = μια συνάρτηση ανταμοιβής που λαμβάνει μια κατάσταση και δράση (a) και εξάγει μια τιμή επιβράβευσης
  • V (s) = αξία της ύπαρξης σε μια συγκεκριμένη κατάσταση

Τώρα το μπλοκ κάτω από τον προορισμό θα έχει επιβράβευση 1, που είναι η υψηλότερη ανταμοιβή, αλλά τι γίνεται με το άλλο μπλοκ; Λοιπόν, εδώ μπαίνει ο συντελεστής έκπτωσης. Ας υποθέσουμε ότι ο συντελεστής έκπτωσης 0,9 και γεμίστε όλα τα μπλοκ ένα προς ένα.

Διαδικασία απόφασης Markov

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

Πρέπει λοιπόν να τροποποιήσουμε τη διαδικασία λήψης αποφάσεων. Πρέπει να Εν μέρει τυχαία και Εν μέρει υπό τον έλεγχο του ρομπότ . Εν μέρει τυχαία, επειδή δεν γνωρίζουμε πότε το ρομπότ θα δυσλειτουργήσει και εν μέρει υπό έλεγχο, επειδή εξακολουθεί να είναι η απόφαση του ρομπότ. Και αυτό αποτελεί τη βάση για τη διαδικασία απόφασης Markov.

Μια διαδικασία απόφασης Markov (MDP) είναι μια διαδικασία στοχαστικού ελέγχου διακριτού χρόνου. Παρέχει ένα μαθηματικό πλαίσιο για τη μοντελοποίηση της λήψης αποφάσεων σε καταστάσεις όπου τα αποτελέσματα είναι εν μέρει τυχαία και εν μέρει υπό τον έλεγχο ενός υπευθύνου λήψης αποφάσεων.

Έτσι θα χρησιμοποιήσουμε την αρχική μας εξίσωση Bellman και θα κάνουμε αλλαγές σε αυτήν. Αυτό που δεν γνωρίζουμε είναι η επόμενη κατάσταση, δηλαδή. μικρό'. Αυτό που ξέρουμε είναι όλες οι δυνατότητες μιας στροφής και ας αλλάξουμε την εξίσωση.

V (s) = max (R (s, a) + & # 120632 V (s ’))

V (s) = max (R (s, a) + & # 120632 & Σίγμαμικρό'P (s, a, s ’) V (s)))

P (s, a, s ’): Πιθανότητα μετακίνησης από το κράτος μικρό προς το μικρό' με δραση προς το

& Σίγμαμικρό'P (s, a, s ’) V (s ’): Προσδοκίες τυχαίας ρομπότ

V (s) = max (R (s, a) + & # 120632 ((0,8V (δωμάτιοπάνω)) + (0.1V (δωμάτιοκάτω) +….))

Τώρα, Ας περάσουμε στο Q Learning. Το Q-Learning θέτει μια ιδέα αξιολόγησης της ποιότητας μιας ενέργειας που λαμβάνεται για να μετακινηθεί σε μια κατάσταση παρά να καθορίσει την πιθανή αξία της κατάστασης στην οποία μετακινείται.

c ++ πηγαίνετε στο

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

Q (s, a) = (R (s, a) + & # 120632 & Σίγμαμικρό'P (s, a, s ’) V (s)))

Σε αυτήν την εξίσωση που Ποσοποιεί την Ποιότητα της δράσης, μπορούμε να υποθέσουμε ότι το V (s) είναι το μέγιστο όλων των πιθανών τιμών του Q (s, a). Ας αντικαταστήσουμε λοιπόν τα v (s) με μια συνάρτηση του Q ().

Q (s, a) = (R (s, a) + & # 120632 & Σίγμαμικρό'P (s, a, s ’) μέγ. Q (s ', a'))

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

TD (s, a) = (R (s, a) + & # 120632 & Σίγμαμικρό'P (s, a, s ’) max Q (s ', a')) - Q (s, a)

Επανυπολογίζουμε τα νέα Q (s, a) με τον ίδιο τύπο και αφαιρούμε από τα προηγούμενα γνωστά Q (s, a) από αυτό. Έτσι, η παραπάνω εξίσωση γίνεται:

Ερτ(s, a) = Qt-1(s, a) + α TDτ(ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ)

Ερτ(s, a) = Τρέχουσα τιμή Q

Ερt-1(s, a) = Προηγούμενη τιμή Q

Ερτ(s, a) = Qt-1(s, a) + α (R (s, a) + & # 120632 max Q (s ', a')-Ερt-1(ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ))

Επίδειξη εκμάθησης Q: NumPy

Πρόκειται να χρησιμοποιήσω NumPy για να δείξει πώς λειτουργεί το Q Learning.

Βήμα 1: Εισαγωγές, παράμετροι, πολιτείες, ενέργειες και ανταμοιβές

εισαγωγή numpy ως np gamma = 0,75 # Συντελεστής έκπτωσης άλφα = 0,9 # Ποσοστό εκμάθησης location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} ενέργειες = [0,1,2,3,4,5,6,7,8] ανταμοιβές = np.array ( [[0,1,0,0,0,0,0,0], [1,0,1,0,0,0,0,0,0], [0,1,0,0, 0,1,0,0,0], [0,0,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,1,0] , [0,0,1,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,0, 1,0,1,0,1], [0,0,0,0,0,0,0,1,0]])

Βήμα 2: Χάρτης δεικτών σε τοποθεσίες

state_to_location = υπαγόρευση ((κατάσταση, τοποθεσία) για την τοποθεσία, κατάσταση στο location_to_state.items ())

Βήμα 3: Λάβετε τη βέλτιστη διαδρομή χρησιμοποιώντας τη διαδικασία εκμάθησης Q

def get_optimal_route (start_location, end_location): reward_new = np.copy (επιβράβευση) end_state = location_to_state [end_location] reward_new [end_state, ending_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Διαδικασία εκμάθησης για i in range (1000): # Λήψη τυχαίας κατάστασης current_state = np.random.randint (0,9) # Η Python αποκλείει το άνω όριο playable_actions = [] # Επανάληψη μέσω του νέου πίνακα ανταμοιβών για j in range ( 9): if reward_new [current_state, j]> 0: playable_actions.append (j) # Επιλέξτε μια τυχαία ενέργεια που θα μας οδηγήσει στην επόμενη κατάσταση next_state = np.random.choice (playable_actions) # Computing Temporal Difference TD = reward_new [current_state , next_state] + gamma * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Ενημέρωση της τιμής Q χρησιμοποιώντας την εξίσωση Bellman Q [current_state, next_state] + = alpha * TD # Αρχικοποιήστε τη βέλτιστη διαδρομή με τη διαδρομή αρχικής τοποθεσίας = [start_location] #Initialize next_location με την αρχική τοποθεσία next_location = star t_location # Δεν γνωρίζουμε τον ακριβή αριθμό των επαναλήψεων που απαιτούνται για να φτάσετε στην τελική τοποθεσία, επομένως ενώ ο βρόχος θα είναι μια καλή επιλογή για επαναληπτικό έλεγχο ενώ (next_location! = end_location): # Λήψη της αρχικής κατάστασης start_state = location_to_state [start_location] # Λήψη της υψηλότερης τιμής Q που σχετίζεται με την αρχική κατάσταση next_state = np.argmax (Q [start_state,]) # Πήραμε το ευρετήριο της επόμενης κατάστασης. Χρειαζόμαστε όμως το αντίστοιχο γράμμα. next_location = state_to_location [next_state] route.append (next_location) # Ενημέρωση της αρχικής θέσης για την επόμενη επανάληψη start_location = next_location διαδρομή επιστροφής

Βήμα 4: Εκτυπώστε τη διαδρομή

λειτουργία στατικού μέλους στο c ++
εκτύπωση (get_optimal_route ('L1', 'L9'))

Παραγωγή:

Με αυτό, φτάνουμε στο τέλος του Q-Learning. Ελπίζω να γνωρίσετε τη λειτουργία του Q Learning μαζί με τις διάφορες εξαρτήσεις που υπάρχουν όπως η διαχρονική διαφορά, η εξίσωση Bellman και άλλα.

Το Edureka's σε κάνει ικανό σε τεχνικές όπως Εποπτευόμενη Εκμάθηση, Μη Εποπτευόμενη Μάθηση και Επεξεργασία Φυσικής Γλώσσας. Περιλαμβάνει εκπαίδευση σχετικά με τις τελευταίες εξελίξεις και τεχνικές προσεγγίσεις στην Τεχνητή Νοημοσύνη & Μηχανική Μάθηση όπως η Βαθιά Μάθηση, τα Γραφικά Μοντέλα και η Ενίσχυση Μάθησης.