Θέµα 3: Dynamic Time Warping (DTW). Hidden Markov Models (HMM). Άσκηση 1: Αναγνώριση οµιλίας µε χρήση τεχνικών Dynamic Time Warping. Ο σκοπός της παρούσας άσκησης είναι να βοηθήσει τους φοιτητές να κατανοήσουν τις βασικές αρχές της διαδικασίας αναγνώρισης, στα πλαίσια ενός παραδείγµατος αναγνώρισης µεµονωµένων λέξεων (isolated word recognition). Εκκινήστε το MATLAB και γράψτε startdemo στο MATLAB command prompt. Ένα νέο παράθυρο (σαν αυτόκάτω αριστερά) θα εµφανιστεί. Επιλέξτε την απάντηση Yes για την ερώτηση Do you have a sound card? και µετά πατήστε το κουµπί Start Pattern Recognition Demo. Επιλέξτε προσεκτικά Speech Recognition από τη λίστα των demos. Θα εµφανιστεί ένα παράθυρο µε τις παρακάτω πληροφορίες ( Info ) (σύντοµη µετάφραση του κειµένου): Θα ασχοληθούµε µε την αναγνώριση των λέξεων "kiss" και "love". Για καθεµιά από αυτές τις λέξεις παρέχεται ένα πρότυπο αναφοράς. Επιπρόσθετα, υπάρχει ένα σύνολο από λέξεις που έχουν προφερθεί για να χρησιµοποιηθούν για τεστ. Ο χρήστης µπορεί να διαλέξει µια λέξη από το παραπάνω σύνολο, που στη συνέχεια θα συγκριθεί µε καθένα από τα πρότυπα αναφοράς µε τη χρήση τεχνικών dynamic time warping. Για να ξεκινήσετε το demo πατήστε το κουµπί OK αυτού του παραθύρου βοηθείας και ύστερα κάνετε κλικ στην επιλογή Load Signal για να φορτώσετε το πρότυπο που θέλετε να ταξινοµήσετε. Μπορείτε να χρησιµοποιήσετε τις επιλογές New Help και Help για να δείτε πώς θα προχωρήσετε σε κάθε στάδιο!!! A. Αναγνώριση οµιλίας των δύο λέξεων: kiss και love. Από την επιλογή Load signal µπορείτε να φορτώσετε ένα αρχείο.wav. Χρησιµοποιήστε την επιλογή New Help για να δείτε µια σύντοµη περιγραφή της εικόνας. Μπορείτε να ακούσετε το σήµα πατώντας το κουµπί Play Word. Χρησιµοποιήστε την επιλογή Feature generation για την εξαγωγή των παραµέτρων οµιλίας. Στην τρέχουσα άσκηση χρησιµοποιούµε συντελεστές Fourier ως παραµέτρους οµιλίας. Μετά από την εξαγωγή παραµέτρων θα δείτε την εικόνα που φαίνεται αριστερά. 1
Από το New Help στο µενού µπορείτε να δείτε την περιγραφή των επιλογών στο τρέχον παράθυρο. Στο τρέχον βήµα θα µπορούσαµε να τροποποιήσουµε (µία-µία) όλες τις επιλογές που έχουµε στην εξαγωγή παραµέτρων για να δούµε τη διαφορά, όµως αυτό θα το κάνουµε αργότερα. Τώρα πρέπει να πάτε στην επιλογή Load reference set για να φορτώσετε τα πρότυπα για τις δύο κλάσεις. Μπορείτε να ακούσετε τα πρότυπα αναφοράς. Χρησιµοποιήστε την επιλογή New Help για να δείτε την περιγραφή της τρέχουσας εικόνας. Τέλος, µπορείτε να κλείσετε την τρέχουσα εικόνα πατώντας το κουµπί OK. Στη συνέχεια πηγαίνετε στην επιλογή Recognition. Επιλέξτε Itacura για να δείτε τα αποτελέσµατα της αναγνώρισης βάσει της απόστασης Itacura. Για να κατανοήσετε το τελικό αποτέλεσµα πρέπει να πάτε στην επιλογή New Help και να διαβάσετε την επεξήγηση. Σηµειώστε ότι όσο πιο µικρή τιµή έχει το κόστος ( cost ), τόσο καλύτερη αναγνώριση έχουµε. Συνεπώς η απάντηση του συστήµατος είναι αυτή που αντιστοιχεί στο µικρότερο κόστος που επιτυγχάνεται από τη σύγκριση του τρέχοντος σήµατος οµιλίας µε όλα τα πρότυπα αναφοράς. Στο πείραµά µας έχουµε µόνο δύο πρότυπα ( kiss και love ) και η έξοδος του συστήµατος αναγνώρισης είναι η λέξη µε το µικρότερο κόστος. Πατήστε OK για να επιστρέψετε στο κύριο παράθυρο. Ύστερα πηγαίνετε πάλι στην επιλογή Recognition" για να δείτε πώς λειτουργεί η µέθοδος Sacoe-Chiba. Οι τιµές του κόστους είναι διαφορετικές από αυτές που είχαµε στη µέθοδο Itacura, όµως η αρχή του µικρότερου κόστους συνεχίζει να ισχύει. Κάνετε όλα τα παραπάνω βήµατα για τη δεύτερη λέξη (από τη δεύτερη κλάση), για να ελέγξετε αν το σύστηµα θα την αναγνωρίσει σωστά. B. Χρησιµοποιήστε το κουµπί Reset All για να ξεκινήσετε από την αρχή. - Χρησιµοποιήστε το ίδιο σήµα οµιλίας (αρχείο.wav ) και αλλάξτε µία-µία όλες τις επιλογές στην εξαγωγή παραµέτρων. Επαναλάβετε το βήµα της αναγνώρισης για να δείτε πώς επιδρούν στο κόστος και στην ακρίβεια αναγνώρισης του συστήµατος. Προσπαθήστε να βρείτε τον καλύτερο συνδυασµό παραµέτρων για το τρέχον σήµα οµιλίας. Περιγράψτε τον στην αναφορά που θα παραδώσετε. Προσπαθήστε να εξηγήσετε τα αποτελέσµατα. - Επαναλάβετε όλα τα βήµατα της Άσκησης 1A για όλα τα διαθέσιµα σήµατα οµιλίας (αρχεία.wav ). 2
Γ. Χρησιµοποιήστε το πρόγραµµα CoolEdit για να ηχογραφήσετε τη δικιά σας λέξη kiss. Αποθηκεύστε την ηχογράφηση σε µορφή.wav στο φάκελο C:\Labs\Lab3. Κάνετε το ίδιο για τη λέξη love. Επεξεργαστείτε αυτές τις λέξεις όπως στην Άσκηση 1A. Είναι επιτυχής η αναγνώριση; Μεταβάλλετε τις επιλογές που έχετε στην εξαγωγή παραµέτρων για να δείτε πώς συµπεριφέρεται το σύστηµα αναγνώρισης. Περιγράψτε τα αποτελέσµατα. Άσκηση 2: Κρυµµένα Μοντέλα Markov (Hidden Markov Models HMM). Μέσα σε ένα κλειδωµένο δωµάτιο το οποίο όµως έχει ένα παράθυρο, ζει ένας άνθρωπος. Κάθε µέρα την ίδια ώρα γύρω στις 12 το µεσηµέρι, κοιτάζει έξω από το παράθυρο και σηµειώνει αν χιονίζει, αν βρέχει, αν έχει συννεφιά ή λιακάδα. Η θερµοκρασία στο δωµάτιο είναι σταθερή δηλαδή ο άνθρωπος που ζει σ αυτό δεν ξέρει αν έξω κάνει κρύο, ζέστη ή αν η θερµοκρασία βρίσκεται κάπου ενδιάµεσα.. Το παραπάνω φαινόµενο µπορεί να περιγραφεί από ένα ΗΜΜ όπου οι κρυµµένες καταστάσεις είναι οι: 1: κρύο (Κ) 2: ενδιάµεση θερµοκρασία (ΕΘ) 3: ζέστη (Ζ) και οι παρατηρήσεις είναι οι: 1: χιόνι (Χ) 2:βροχή (Β) 3:συννεφιά (Σ) 4:ηλιοφάνεια (Η) Έχουµε 3 τέτοια µοντέλα, ένα που περιγράφει το παραπάνω φαινόµενο το χειµώνα, ένα για άνοιξηφθινόπωρο κι ένα για καλοκαίρι. Για κάθε µοντέλο ισχύουν τα παρακάτω: Χειµώνας P(Κ Κ)=0.4 P(ΕΘ Κ)=0.5 P(Ζ Κ)=0.1 P(Κ ΕΘ)=0.35 P(ΕΘ ΕΘ)=0.5 P(Ζ ΕΘ)=0.15 P(Κ Ζ)=0.3 P(ΕΘ Ζ)=0.6 P(Ζ Ζ)=0.1 P(Χ Κ)=0.4 P(Β Κ)=0.2 P(Σ Κ)=0.25 P(Η Κ)=0.15 P(Χ ΕΘ)=0.1 P(Β ΕΘ)=0.35 P(Σ ΕΘ)=0.3 P(Η ΕΘ)=0.25 P(Χ Ζ)=0.000001 P(Β Ζ)=0.2 P(Σ Ζ)=0.2 P(Η Ζ)=0.6 P(K)=0.5 P(ΕΘ)=0.35 P(Ζ)=0.15 Άνοιξη-Φθινόπωρο P(Κ Κ)=0.2 P(ΕΘ Κ)=0.5 P(Ζ Κ)=0.3 P(Κ ΕΘ)=0.25 P(ΕΘ ΕΘ)=0.5 P(Ζ ΕΘ)=0.25 P(Κ Ζ)=0.2 P(ΕΘ Ζ)=0.4 P(Ζ Ζ)=0.4 P(Χ Κ)=0.2 P(Β Κ)=0.3 P(Σ Κ)=0.35 P(Η Κ)=0.15 P(Χ ΕΘ)=0.000001 P(Β ΕΘ)=0.3 P(Σ ΕΘ)=0.3 P(Η ΕΘ)=0.4 P(Χ Ζ)=0.000001 P(Β Ζ)=0.25 P(Σ Ζ)=0.25 P(Η Ζ)=0.5 P(K)=0.25 P(ΕΘ)=0.5 P(Ζ)=0.25 3
Καλοκαίρι P(Κ Κ)=0.05 P(ΕΘ Κ)=0.35 P(Ζ Κ)=0.6 P(Κ ΕΘ)=0.05 P(ΕΘ ΕΘ)=0.25 P(Ζ ΕΘ)=0.7 P(Κ Ζ)=0.05 P(ΕΘ Ζ)=0.15 P(Ζ Ζ)=0.8 P(Χ Κ)=0.000001 P(Β Κ)=0.45 P(Σ Κ)=0.45 P(Η Κ)=0.1 P(Χ ΕΘ)=0.000001 P(Β ΕΘ)=0.35 P(Σ ΕΘ)=0.45 P(Η ΕΘ)=0.2 P(Χ Ζ)=0.000001 P(Β Ζ)=0.1 P(Σ Ζ)=0.1 P(Η Ζ)=0.8 P(K)=0.1 P(ΕΘ)=0.3 P(Ζ)=0.6 Α. Από το Desktop πατώντας το εικονίδιο Lab3 πηγαίνουµε στο MS-DOS prompt στο φάκελο C:\Labs\Lab3. Εκεί υπάρχει το αρχείο winter.hmm το οποίο µπορούµε να ανοίξουµε µε έναν κειµενογράφο π.χ. Notepad και το οποίο περιγράφει το παραπάνω µοντέλο για το χειµώνα. Παίρνοντας λοιπόν αυτό το αρχείο ως πρότυπο και τα παραπάνω στοιχεία για τα µοντέλα άνοιξη-φθινόπωρο και καλοκαίρι, να φτιάξετε τα αρχεία spring_autumn.hmm και summer.hmm τα οποία θα περιγράφουν τα αντίστοιχα µοντέλα. Β. Έχουµε την παρακάτω ακολουθία παρατηρήσεων όπως περιγράφεται στο αρχείο observations.txt B X X B Σ Β Β X Β Η Β Σ Β X Β Σ Σ Η Η Η (ακολουθία 1) Θέλουµε να βρούµε αν η παραπάνω ακολουθία είναι πιο πιθανό να συµβεί χειµώνα, άνοιξη-φθινόπωρο ή καλοκαίρι. Το παρόν πρόβληµα λύνεται µε τη χρήση του αλγόριθµου Forward ή Backward. Στο φάκελο C:\Labs\Lab3 υπάρχει το πρόγραµµα testfor το οποίο υπολογίζει την πιθανότητα µιας ακολουθίας παρατηρήσεων βάσει ενός HMM χρησιµοποιώντας τον αλγόριθµο Forward. Το testfor παίρνει δύο ορίσµατα. Το πρώτο είναι το αρχείο που περιγράφει το µοντέλο και το δεύτερο ένα αρχείο µε την ακολουθία των παρατηρήσεων. Για να βρούµε λοιπόν ποια εποχή του χρόνου είναι πιο πιθανόν να λάβει χώρα η παραπάνω ακολουθία παρατηρήσεων, κάνουµε το εξής: τρέχουµε το πρόγραµµα για καθένα από τα 3 ΗΜΜ δηλαδή testfor winter.hmm observations.txt testfor spring_autumn.hmm observations.txt testfor summer.hmm observations.txt και σηµειώνουµε τις πιθανότητες σε κάθε περίπτωση. Οι πιθανότητες είναι αρνητικοί αριθµοί γιατί έχουν χρησιµοποιηθεί λογάριθµοι. Το ΗΜΜ για το οποίο έχουµε τη µεγαλύτερη πιθανότητα µας δείχνει την εποχή του χρόνου όπου είναι πιο πιθανό να συµβεί η ακολουθία παρατηρήσεων. Κάνετε τα ίδια βήµατα χρησιµοποιώντας ως πρότυπο το αρχείο observations.txt για τις ακολουθίες παρατηρήσεων: Σ Σ Η Η Σ Σ Β Σ Σ Σ (ακολουθία 2) Η Η Η Η Σ Χ Σ Χ Β Η (ακολουθία 3) Β Σ Σ Χ Χ Χ Χ Η Χ Β Σ Σ Β Η (ακολουθία 4) Η Η Η Β Σ Σ Β Η Η Η Β Β Β Σ Η Β Σ Β (ακολουθία 5) Γ. Για όλες τις ακολουθίες παρατηρήσεων της άσκησης 2Γ αφού βρείτε το πιο αντιπροσωπευτικό ΗΜΜ σε κάθε περίπτωση, γι αυτό το ΗΜΜ βρείτε την κρυµµένη ακολουθία καταστάσεων. Αυτό το πρόβληµα λύνεται µε τη χρήση του αλγορίθµου Viterbi. Στο φάκελο C:\Labs\Lab3 υπάρχει το πρόγραµµα testvit που υπολογίζει την κρυµµένη ακολουθία καταστάσεων. Το testvit παίρνει όπως και το testfor πάλι δύο ορίσµατα. Το πρώτο είναι το αρχείο που περιγράφει το µοντέλο και το δεύτερο ένα αρχείο µε την ακολουθία των παρατηρήσεων. Αν λοιπόν υποθέσουµε ότι για την ακολουθία 1 το καλύτερο µοντέλο είναι το winter.hmm τότε τρέχουµε το πρόγραµµα ως εξής: testvit winter.hmm observations.txt και σηµειώνουµε την ακολουθία καταστάσεων. Το ίδιο κάνουµε και για τις υπόλοιπες ακολουθίες παρατηρήσεων χρησιµοποιώντας κάθε φορά το πιο αντιπροσωπευτικό ΗΜΜ που βρήκαµε στο βήµα 2Β. 4
. Για καθεµιά από τις εποχές του χρόνου έχουµε τα αντίστοιχα ΗΜΜ που περιγράφονται στα αρχεία winter.hmm, spring_autumn.hmm και summer.hmm. Θέλουµε να επανεκπαιδεύσουµε τα µοντέλα µας χρησιµοποιώντας νέες παρατηρήσεις. ηλαδή θα ξεκινήσουµε από το ήδη υπάρχον ΗΜΜ και µε κάποια ακολουθία παρατηρήσεων θα το τροποποιήσουµε ώστε να περιγράφει καλύτερα και αυτή τη νέα ακολουθία παρατηρήσεων σε σχέση µε το παλιό µοντέλο. Ο αλγόριθµος που χρησιµοποιείται για τη δηµιουργία ή τροποποίηση ένος ΗΜΜ δηλαδή την εκπαίδευσή του, είναι ο Baum-Welch. Στο φάκελο C:\Labs\Lab3 υπάρχει το πρόγραµµα esthmm το οποίο βασίζεται στον αλγόριθµο Baum-Welch. Παίρνει ως ορίσµατα το αρχικό ΗΜΜ που έχουµε και θέλουµε να το τροποποιήσουµε και το αρχείο µε την ακολουθία παρατηρήσεων. Αρχικά παίρνουµε την ακολουθία παρατηρήσεων που περιγράφεται στο αρχείο obswinter.txt και το µοντέλο winter.hmm ως αρχικό µοντέλο. Τρέχουµε το esthmm: esthmm v I winter.hmm obswinter.txt Το πρόγραµµα esthmm δηµιουργεί ένα νέο αρχείο model.hmm όπου περιγράφεται το νέο µοντέλο. Μετονοµάζουµε το αρχείο model.hmm σε model1.hmm. Ύστερα επαναλαµβάνουµε την παραπάνω διαδικασία για την ακολουθία του αρχείου obswinter1.txt. ηµιουργείται πάλι το αρχείο model.hmm το οποίο το µετονοµάζουµε σε model2.hmm. Αυτό που θέλουµε να δούµε τώρα είναι πόσο καλά µοντέλα φτιάξαµε, δηλαδή αν τα model1.hmm και model2.hmm είναι καλύτερα από το αρχικό winter.hmm. Για να το δούµε αυτό θα πρέπει να χρησιµοποιήσουµε ακολουθίες παρατηρήσεων διαφορετικές από αυτές που χρησιµοποιήθηκαν στην εκαπίδευση. Εποµένως χρησιµοποιούµε τις ακολουθίες 1-5 του βήµατος 2Β. Έχουµε τις πιθανότητες για το µοντέλο winter.hmm από το βήµα 2Β. Ακολουθούµε την ίδια διαδικασία µε την άσκηση 2Β αλλά τώρα για τα µοντέλα model1.hmm και model2.hmm. Τι παρατηρείτε; Τα νέα ΗΜΜ είναι καλύτερα ή χειρότερα. Εξηγήστε την απάντησή σας. Κάνετε µια αναφορά όπου θα περιγράψετε τα αποτελέσµατα και τα συµπεράσµατα που βρήκατε κατά την εκτέλεση των ασκήσεων του Θέµατος 3. 5