Πιθανοτικός Συμπερασμός: Πού βρίσκομαι στο πλέγμα; [ΠΛΗ 513] Αυτόνομοι πράκτορες - Project Εξαμήνου Γεωργαρά Αθηνά (A.M. 2011030065) ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2015-2016
Εισαγωγή Ένα συχνό προβλημα που συναντάται σε συστήματα πρακτόρων είναι αυτό του προσδιορισνού της κατάστασης. Ένας πράκτορας, έχοντας στη διάθεσή του μερική πληροφόριση σχετικά με μια αρχική κατάσταση, καλείται να βγάλει συμπεράσματα για την κατάσταση του συστήματος μετά από κάποιο αριθμό βημάτων, όπου είτε ο πράκτορας εκτελεί κάποια ενέργεια ή/και το περιβάλλον του αλλάζει δυναμικά. Έχουν αναπτυχθεί, λοιπόν, διάφορα μοντέλα που προσδιορίζουν την εκάστοτε στιγμή την κατάσταση του συστήματος. Η παρούσα εργασία ασχολείται με τον προσδιορισμό της θέσης ενός πράκτορα καθώς αυτόα πλοηγείται σε κάποιο άγνωστο πλέγμα. Χρησιμοποιώντας Hidden Markov Model για την περιγραφή του συστήματος, πραγματοποιούμε την διαδικασία του πιθανοτικού συμπερασμού. Το αποτέλεσμα του συμπερασμού είναι η κατανομή πεποίθησης του πράκτορα σχετικά με τη θέση σε κάποια χρονική στιγμή k καθώς επίσης και η πιο πιθανή ακολουθία θέσεων που είναι απόρρια των μέχρι τώρα παρατηρήσεων. Περιβάλλον Χώρος: Ο χώρος του προβλήματος είναι ένα τετραγωνικό πλέγμα. Οι διαστάσεις του πλέγματος μπορούν είτε να επιλεχθούν από το χρήστη (δίνεται στην αρχή ως παράμετρος του προγράμματος) ή να χρησιμοποιήσουν την προκαθορισμένη τιμή 10 10. Το πλέγμα αποτελείται από δύο είδη κελιών: ελεύθερα κελιά (free-cells) στα οποίο ο πράκτορας μπορεί να μεταβεί και τοίχοι (wall-cells) στα οποία ο πράκτορας δεν μπορεί να μεταβεί. Το συνολικό πλήθος των κελιών εξαρτάται από τις διαστάσεις του πλέγματος, και ισούται με N 2. Ο χρήστης έχει τη δυνατότητα να επιρρεάσει την αναλογία μεταξύ ελεύθερων κελιών και τοίχων, δίνοντας ως παράμετρο το πλήθος των τοίχων που επιθυμεί να υπάρχουν στο πλέγμα. Η προκαθορισμένη τιμή των τοίχων είναι το 20% επί του συνολικού πλήθους των κελιών: Number of wall cells = 20% N 2 Αν παράμετρος που εισάγει ο χρήστης είναι N 2 τότε χρησιμοποιείται το προκαθορισμένο πλήθος τοίχων. Ενέργειες: Ο πράκτορας πλοηγείται στο χώρο. Βρισκόμενος σε κάποιο κελί του πλέγματος, έχει τη δυνατότητα να κινηθεί προς τέσερις κατευθύνσεις {επάνω, κάτω, δεξιά, αριστερά}. Αφού εκτελέσει μια ενέργεια, αν αυτή είναι επιτυχημένη, τότε ο πράκτορας μεταβαίνει στο πλησιέστερο γειτονικό κελί προς την κατεύθυνση της ενέργειας. Το αν η ενέργεια που εκτελέστηκε είναι επιτυχημένη ή όχι καθορίζεται από το μοντέλο μετάβασης. Μοντέλο Μετάβασης Όπως ήδη αναφέρθηκε ο πράκτορας διαθέτει τέσσερις κινήσεις. Αν ο πράκτορας κινηθεί προς ένα τοίχο, τότε η κίνηση αποτυγχάνει και ο πράκτορας παραμένει στο κελί που βρισκόταν. Αν πάλι κινηθεί προς ένα ελέυθερο κελί, τότε καταφέρνει μεταβεί σε αυτό 1
το κελί με πιθανότητα 80%. Για παράδειγμα στο πλέγμα της εικόνας (1) το μοντέλο μετάβασης γίνεται: Figure 1: A 4x4 grid with 3 wall-cells. (0, 0) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0.8 0 0 0 0.2 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 Tup = (1, 3) 0 0 0 0.8 0 0 0 0.2 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0.8 0 0 0 0.2 0 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0.8 0 0 0 0.2 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0.8 0 0 0 0.2 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0.8 0 0 0 0.2 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0.8 0 0 0 0.2 (0, 0) 0.2 0 0 0 0.8 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 0.2 0 0 0 0.8 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 0.2 0 0 0 0.8 0 0 0 0 0 T down = (1, 3) 0 0 0 0 0 0 0 0.2 0 0 0 0.8 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 0.2 0 0 0 0.8 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0 0.2 0 0 0 0.8 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0 0.2 0 0 0 0.8 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (0, 0) 0.2 0.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 0.2 0.8 0 0 0 0 0 0 0 0 T right = (1, 3) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 0.2 0.8 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0 0.2 0.8 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0.8 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0.8 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0.8 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2
(0, 0) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0.8 0.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 T left = (1, 3) 0 0 0 0 0 0 0.8 0.2 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0.8 0.2 0 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0.8 0.2 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0.8 0.2 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8 0.2 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8 0.2 Για κάθε κίνηση έχουμε και ένα μοντέλο μετάβασης. Παρατηρήσεις: Δεξιά και αριστερά του πλέγματος υπάρχει από μια κάμερα που παρακολουθεί το πλέγμα. Όταν ο πράκτορας βρίσκεται σε ένα ελεύθερο κελί, η κάθε κάμερα τον πληροφορεί κατά πόσο τον έχει εντοπίσει ή όχι. Η δυνατότητα εντόπισης του πράκτορα από τη κάμερα περιγράφεται από το μοντέλο παρατήρησης. Μοντέλο Παρατήρησης Οι παρατηρήσεις που παίρνουμε είναι ενδείξεις από τις δύο κάμερες δεξιά και αριστερά του πλέγματος. Οι ενδείξεις αυτές είναι κατά πόσο η κάμερα εντόπισε τον πράκτορα στο πλέγμα. Όταν μεταξύ του πράκτορα και της κάμερας υπάρχει τοίχος, τότε η κάμερα δεν μπορεί τον να εντοπίσει. Όταν ο πράκτορας βρίσκεται σε κάποια θέση στην πρώτη στήλη του πλέγματος, τότε η κάμερα στα αριστερά τον εντοπίζει πάντα, και αντίστοιχα όταν βρίσκεται σε κάποια θέση της τελευταίας στήλης του πλέγματος, τότε η κάμερα στα δεξιά τον εντοπίζει πάντα. Στις υπόλοιπες περιπτώσεις κάθε κάμερα ανεξάρτητα έχει πιθανότητα να τον εντοπίσει 90%. Η πιθανότητα η κάμερα στα δεξιά να εντοπίσει τον πράκτορα είναι ανεξάρτητη από την πιθανότητα η κάμερα στα αριστερά να εντοπίσει τον πράκτορα, επομένως ισχύει : P (Cam right Cam left = P (Cam left ) P (Cam right ). Στο παράδειγμα της εικόνας (1) το μοντέλο παρατήρησης είναι: (ο πρώτος δείκτης αναφέρεται στην ένδειξη της κάμερας στα αριστερά και ο δεύτερος στην ένδειξη της κάμερας στα δεξιά, με t υποδηλώνουμε ότι η κάμερα εντόπισε τον πράκτορα και με f ότι δεν τον εντόπισε). (0, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D tt = (1, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0.9 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0.81 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.81 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9 3
(0, 0) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 0.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D tf = (1, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 0.9 0 0 0 0 0 0 0 0 0 D ft = (1, 3) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 0.9 0 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0 0.9 0 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 (0, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 1) 0 0.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (1, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (1, 2) 0 0 0 0 0 0 0.1 0 0 0 0 0 0 0 0 0 D ff = (1, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2, 1) 0 0 0 0 0 0 0 0 0 0.1 0 0 0 0 0 0 (2, 2) 0 0 0 0 0 0 0 0 0 0 0.1 0 0 0 0 0 (2, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (3, 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (3, 1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01 0 0 (3, 2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01 0 (3, 3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Πλοήγηση - Συλλογή Δειγμάτων Ο πράκτορας τοποθετείται τυχαία σε κάποιο ελεύθερο κελί του πλέγματος. Αυτό το κελί αποτελεί την αρχική του κατάσταση (θέση). Επιλέγει τυχαία και με ομοιόμορφο τρόπο μια από τις τέσσερις δυνατές κινήσεις. Αφού επιλέξει κίνηση, επιχειρεί να εκτελέσει την κίνηση με βάση το μοντέλο μετάβασης (αν κινείται προς τοίχο παραμένει στο ίδιο κελί αλλιώς μετακινείται 8 στις 10 φορές). Η νέα κατάσταση (θέση) είναι το αποτέλεσμα της κίνησης. Στη συνέχεια, επιλέγονται τυχαία οι ενδείξεις των δύο καμερών λαμβάνοντας υπ όψιν το μοντέλο παρατήρησης (αν παρεμβάλλεται τοίχος η ένδειξη είναι αρνητική, αν βρίσκεται στην πιο κοντινή στήλη η ένδειξη είναι θετική και αν σε οποιαδήποτε άλλη περίπτωση η ένδειξη είναι θετική 9 στις 10 φορές). Η τριπλέτα <κίνηση, ένδειξη κάμερας αριστερά, ένδειξη κάμερας δεξιά> αποτελεί ένα δείγμα. Ανάλογα με το πλήθος τον δειγμάτων η παραπάνω διαδικασία επαναλαμβάνεται τόσες φορές (ώστε να παραχθούν όλα τα δείγματα). Συμπερασμός Έχοντας στη διάθεσή μας ένα πλήθος δειγμάτων (συνδυασμό μεταβάσεων και παρατηρήσεων) μπορούμε να τα επεξεργαστούμε ώστε να συμπεράνουμε την θέση του πράκτορα μετά από 4
k βήματα. Φιλτράρισμα Κατά την διαδικασία του φιλτραρίσματος υπολογίζουμε την κατανομή πεποίθησης P (X t e 1:t ), όπου X t είναι η μη παρατηρήσιμη μεταβλητή του προβλήματος (στην προκειμένη περίπτωση είναι η θέση του πράκτορα στο πλέγμα) τη χρονική στιγμή t και e 1:t το σύνολο των παρατηρήσεων από την αρχή του χρόνου έως και τη χρονική στιγμή t. Το φιλτράρισμα υλοποιείται με την αναδρομική σχέση των εμπρός μηνυμάτων: f 1:t+1 = P (X t+1 e 1:t+1 ) = αf ORW ARD (f 1:t, e t+1 ) με βάση της αναδρομής f 1:0 = P (X 0 ), την αρχική πεποίθηση του πράκτορα. Η μαθηματική έκφραση της παραπάνω αναδρομής είναι: P(X t+1 e 1:t+1 ) = α P(e t+1 X t+1 ) P(X t+1 x t ) }{{}}{{} x Observation Model t T ransition Model P (x t e 1:t ) }{{} Recursion Στην παρούσα εργασία, η αρχική κατάσταση του πράκτορα μας είναι άγνωστη (αν και χρησιμοποιήθηκε νωρίτερα για την παραγωγή των δειγμάτων στη διαδικασία του συμπερασμού θεωρούμε ότι μας είναι άγνωστη), καθώς και η ακριβής τοπολογία του πλέγματος. Επομένως, ο πράκτορας αρχικά δεν έχει κίνητρο να πιστέψει ότι βρίσκεται σε κάποιο συγκεκριμένο κελί (cell i,j ), και θεωρεί όλα τα κελιά του πλέγματος ισοπίθανες αρχικές καταστάσεις. Να σημειωθεί ότι ο πράκτορας τοποθετείται σε ένα κελί του πλέγματος γνωρίζοντας μόνο τις διαστάσεις του πλέγματος, και όχι το πλήθος και την ακριβή θέση των τοίχων. Η αρχική πεποίθηση, λοιπόν, του πράκτορα είναι, όπου N N οι διαστάσεις του πλέγματος. P (cell i,j ) = 1 N 2 Χρησιμοποιώντας τα μοντέλα μετάβασης και παρατήρησης, τα εμπρός μηνύματα υπολογίζονται ως εξής: f 1:t = a D t Tt f 1:t 1 όπου a ο παράγοντας κανονικοποίησης, D t το μοντέλο παρατήρησης της χρονικής στιγμής (βήματος) t και Tt ο ανάστροφος του μοντέλου μετάβασης της χρονικής στιγμής (βήματος) t. Η βάση της αναδρομής είναι: 1 N 2 f 1:0 =. 1 N 2 Στην εικόνα (2) φαίνονται κάποια από τα εμπρός μηνύματα που παράγονται κατά τη διαδικασία του φιλτραρίσματος σε ένα πλέγμα διαστάσεων 10 10 έχοντας συγκεντρώσει 1000 δείγματα (βήματα). 5
Εξομάλυνση Η διαδικασία της εξομάλυνσης υπολογίζει την εκ των υστέρων κατανομή παρελθούσας κατάστασης P (X k e 1:t ), k < t, όπου και εδώ με X k σημειώνεται η μη παρατηρήσιμη μεταβλητή τη χρονική στιγμή k και e 1:t το σύνολο των παρατηρήσεων από την αρχή του χρόνου έως και τη χρονική στιγμή t. Το πρώτο υπολογιστικό μέρος της εξομάλυνσης είναι το φιλτράρισμα. Όπως και στην διαδικασία του φιλτραρίσματος υπολογίζονται τα εμπρός μηνύματα, έχοντας ως αρχική πεποίθηση μια ομοιόμορφη κατανομή. Στο δεύτερο μέρος της εξομάλυνσης, υπολογίζουμε τα πίσω μηνύματα με την αναδρομική σχέση: b k+1:t = P (e k+1:t X k ) = B ACKW ARD (b k+2:t, e k+1:t ) με βάση της αναδρομής b t+1:t = 1. Χρησιμοποιώντας τα μοντέλα μετάβασης και παρατήρησης, τα πίσω μηνύματα υπολογίζονται ως εξής: b k+1:t = T k+1 D k+1 b k+2:t όπου T k+1 το μοντέλο μετάβασης της χρονικής στιγμής (βήματος) k + 1 και D k+1 το μοντέλο παρατήρησης της χρονικής στιγμής (βήματος) k + 1. Η βάση της αναδρομής είναι: 1 b t+1:t =. 1 Συνδυάζοντας τώρα τα εμπρός με τα πίσω μηνύματα υπολογίζουμε την των υστέρων κατανομή παρελθούσης κατάστασης ως εξής: P (X k e 1:t ) = af ORW ARD (f 1:k 1, e k )B ACKW ARD (b k+2:t, e k1:t) = a f 1:k b k+1:t Η αντίστοιχη μαθηματική έκφραση της παραπάνω αναδρομής είναι: P(X k e 1:t ) = α P(X t+1 e 1:t+1 ) P (e k+1 x k+1 ) P (e k+2:t x k+1 ) P(x k+1 X) }{{}}{{}}{{}}{{} x Filtering k+1 Recursion Observation Model Transition Model Η διαδικασία της εξομάλυνσης υλοποιήθηκε με τον αλγόριθμο Forward-Backward. Στην εικόνα (3) φαίνονται κάποια αποτελέσματα της διαδικασίας της εξομάλυνσης σε ένα πλέγμα διαστάσεων 10 10 έχοντας συγκεντρώσει 1000 δείγματα (βήματα). Πλέον Πιθανή εξήγηση Εκτός από το να εκτιμάμε σε κάθε βήμα (δείγμα) την κατάσταση στην οποία βρισκόμαστε τώρα και να διορθώνουμε την εκτίμηση μας για βήματα στο παρελθόν, είναι σημαντικό να μπορούμε να συμπεράνουμε μια ακολουθία καταστάσεων που να συμφωνούν με τα δείγματα που έχουμε συγκεντρώσει. Ποιά είναι, λοιπόν, η πιο πιθανή ακολουθία καταστάσεων με βάση τα δείγματα που έχουμε λάβει; Για να απαντήσουμε σε αυτό το ερώτημα υλοποιούμε τον αλγόριθμο Viterbi. 6
Όπως και στις περιπτώσεις του φιλτραρίσματος και της εξομάλυνσης, ο αλγόριθμος είναι αναδρομικός. Η μαθηματική έκφραση του είναι η εξής: { } max {P(x 1,, x t, X t+1 e 1:t+1 )} = α P(e t+1 X t+1 ) max P(Xt+1 x t ) max P (x 1,, x t 1, X t e 1:t ) x 1 x t }{{} x t }{{} x 1 x t 1 Observation Model Ttransition Model }{{} Recursion Ο υπολογισμός είναι παρόμοιος με αυτόν του φιλτραρίσματος, αντικαθιστώντας την άθροιση με μεγιστοποίηση. Η βάση της αναδρομής είναι m 1:1 = f 1:1. Στον αλγόριθμο Viterbi η κανονικοποίηση είναι προαιρετική και δίνει διαφορετική ερμηνεία στο αποτέλεσμα. Όταν γίνεται κανονικοποίηση, το αποτέλεσμα υπολογίζει την πιθανότητα κάποιας ακολουθίας από X ακολουθίες με διαφορετικά X t. Ενώ όταν δεν υπάρχει κανονικοποίηση, το αποτέλεσμα υπολογίζει την πιθανότητα κάποιας ακολουθίας από όλες τις πιθανές ακολουθίες ( X t ). Στην παρούσα υλοποίηση χρησιμοποιούμε την δεύτερη ερμηνεία και δεν κανονικοποιούμε το αποτέλεσμα. Στην εικόνα (4) φαίνεται το αποτέλεσμα του αλγορίθμου Viterbi στο πλέγμα διαστάσεων 10 10 έχοντας συγκεντρώσει 50 δείγματα. Με μπλε χρώμα σημειώνεται η αρχική κατάσταση και με κόκκινο η τελική, ενώ με πορτοκαλί χρώμα οι καταστάσεις από τις οποίες έχει περάσει. Στον πίνακα (1) φαίνεται η ακολουθία (κατάσταση / βήμα). Step 0 : (0,8) Step 10 : (2,9) Step 20 : (4,7) Step 30 : (3,7) Step 40 : (3,4) Step 1 : (0,8) Step 11 : (2,8) Step 21 : (4,7) Step 31 : (3,8) Step 41 : (3,3) Step 2 : (0,8) Step 12 : (3,8) Step 22 : (4,7) Step 32 : (2,8) Step 42 : (4,3) Step 3 : (1,8) Step 13 : (2,8) Step 23 : (3,7) Step 33 : (2,7) Step 43 : (3,3) Step 4 : (2,8) Step 14 : (2,8) Step 24 : (4,7) Step 34 : (3,7) Step 44 : (4,3) Step 5 : (3,8) Step 15 : (3,8) Step 25 : (4,7) Step 35 : (4,7) Step 45 : (5,3) Step 6 : (3,9) Step 16 : (3,7) Step 26 : (4,6) Step 36 : (4,6) Step 46 : (6,3) Step 7 : (3,9) Step 17 : (3,6) Step 27 : (5,6) Step 37 : (3,6) Step 47 : (6,2) Step 8 : (3,9) Step 18 : (3,6) Step 28 : (4,6) Step 38 : (3,5) Step 48 : (7,2) Step 9 : (3,9) Step 19 : (4,6) Step 29 : (3,6) Step 39 : (3,4) Step 49 : (6,2) Table 1: Most likely sequence (State / sample) for a 10 10 grid and 50 samples. 7
(a) f 1:1 (b) f 1:50 (c) f 1:100 (d) f 1:500 8 (e) f 1:999 Figure 2: Forward messages for a 10 10 grid and 1000 samples.
(a) s 1:1 (b) s 1:50 (c) s 1:100 (d) s 1:500 9 (e) s 1:999 Figure 3: Forward messages combined with Backward messages for a 10 10 grid and 1000 samples.
Figure 4: Most likely explanation for a 10 10 grid and 50 samples. 10
Υλοποίηση Για την υλοποίηση του προβλήματος και της λύσης που περιγράφηκαν παραπάνω χρησιμοποιήθηκε η γλώσσα Java. Κλήση Η κλήση του προγράμματος γίνεται μέσω του whereami.jar αρχείου (ή κάνοντας compile τα source files) με τις εξής παραλλαγές: java -jar whereami.jar Δημιουργεί ένα πλέγμα 10 10 με 20 κελιά-τοίχους, και συλλέγει 1000 δείγματα. java -jar whereami.jar 15 Δημιουργεί ένα πλέγμα 15 15 με 15 20% κελιά-τοίχους, και συλλέγει 1000 δείγματα. java -jar whereami.jar 15 500 Δημιουργεί ένα πλέγμα 15 15 με (15 2 ) 20% = 45 κελιά-τοίχους, και συλλέγει 500 δείγματα. java -jar whereami.jar 15 500 32 Δημιουργεί ένα πλέγμα 15 15 με 32 κελιά-τοίχους, και συλλέγει 500 δείγματα. Πηγαία Αρχεία Το πρόγραμμα αποτελείται από τα εξής αρχεία: Cell Περιέχει χαρακτηριστικά για κάθε κελί του πλέγματος καθώς και βασικές μεθόδους για το κελί αυτό. Grid Περιέχει χαρακτηριστικά του πλέγματος. Μεταξύ αυτών είναι η τοπολογία του πλέγματος (ποια κελιά είναι τοίχοι και ποια ελεύθερα), καθώς και τα μοντέλα μετάβασης και παρατήρησης που κάθε φορά δημιουργούνται με βάση την τοπολογία. Βασικοί μέθοδοι της κλάσης, είναι τα gettransitionmodel και getobservationmodel οι οποίες παίρνουν ως είσοδο μια κίνηση η πρώτη και ένα συνδυασμό ενδείξεων από τις κάμερες η δεύτερη, και επιστρέφουν το αντίστοιχο μοντέλο. Sample Περιγράφει την δομή κάθε δείγματος που είναι {κίνηση, ένδειξη κάμερας αριστερά, ένδειξη κάμερας δεξιά} Inferece Η βασική κλάση του προγράμματος. Δημιουργεί αρχικά το πλέγμα, και αμέσως μετά συλλέγει τα δείγματα από την περιπλάνηση του πράκτορα στο πλέγμα. Στην κλάση Inferece είναι υλοποιημένοι οι τρεις αλγόριθμοι του συμπερασμού που χρησιμοποιήθηκαν για το φιλτράρισμα, την εξομάλυνση και την πλέον πιθανή εξήγηση. initialboard Δημιουργεί ένα JFrame παράθυρο στο οποίο απεικονίζεται το αρχικό πλέγμα. 11
Board Δημιουργεί ένα JFrame παράθυρο στο οποίο απεικονίζεται το πλέγμα και σημειώνεται σε κάθε κελί η πιθανότητα που υπολογίστηκε σύμφωνα με το φιλτράρισμα ή την εξομάλυνση. viterbiboard Δημιουργεί ένα JFrame παράθυρο στο οποίο απεικονίζεται το πλέγμα και σημειώνει με μπλε χρώμα την αρχική κατάσταση, κόκκινο χρώμα την τελική και πορτοκαλί τις καταστάσεις από τις οποίες πέρασε ενδιάμεσα. MyClass Περιέχει την κλάση main, εκεί δημιουργείται ένα αντικείμενο τύπου Inferece και στην συνέχεια καλούνται οι μέθοδοι: Inferece.filtering(),Inferece.smoothing() και Inferece.viterbi() Αποτελέσματα Κατά την εκτέλεση του προγράμματος, αρχικά εμφανίζεται ένα παράθυρο που αναπαριστά αρχικά το πλέγμα. Στη συνέχεια καλείται η μέθοδος Inferece.filtering(), η οποία υλοποιεί το φιλτράρισμα μέχρι το βήμα k = S 5 όπου S το συνολικό πλήθος των δειγμάτων. Εμφανίζει το αντίστοιχο παράθυρο με την κατανομή της πεποίθησης στο βήμα k. Η μέθοδος Inferece.smoothing() υλοποιεί την εξομάλυνση και μας εμφανίζει σε παράθυρο την κατανομή της πεποίθησης στο βήμα k = S 5. Τέλος η μέθοδος Inferece.viterbi() βρίσκει την πλέον πιθανή εξήγηση, εμφανίζει παράθυρο που δείχνει τα κελιά που έχει επισκεφτεί ο πράκτορας και η συνολική ακολουθία εμφανίζεται στο stdout. 12