ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Τηλεπικοινωνιών και Τεχνολογίας της Πληροφορίας Εργαστήριο Ενσύρματης Τηλεπικοινωνίας Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Σέργιου Καραγιαννάκου του Γεωργίου Με αριθμό μητρώου: 8063 Θέμα Υλοποίηση συστήματος υπολογιστικής όρασης με μεθόδους deep learning Επιβλέπων Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Πάτρα, Ιούνιος 2017 1
2
ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η διπλωματική εργασία με θέμα Υλοποίηση συστήματος υπολογιστικής όρασης με μεθόδους deep learning του φοιτητή του τμήματος Σέργιου Καραγιαννάκου του Γεωργίου Με αριθμό μητρώου: 8063 παρουσιάστηκε δημόσια και εξετάστηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις / / Ο Επιβλέπων Ο Συνεπιβλέπων Ο Διευθυντής Τομέα Ευάγγελος Δερματάς, Νικόλαος Φακωτάκης, Αναπληρωτής Καθηγητής Καθηγητής 3
Copyright All rights reserved Καραγιαννάκος Σέργιος, 2017 Με επιφύλαξη παντός δικαιώματος. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση ότι αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Ερωτήματα που αφορούν στη χρήση της εργασίας για κερδοσκοπικό ή άλλο σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερμηνευθεί ότι αντιπροσωπεύουν τις επίσημες θέσεις του Πανεπιστημίου Πατρών. 4
Περίληψη Η υπολογιστική όραση αποτελεί τα τελευταία χρόνια, ένα από τους πιο αναπτυσσόμενους κλάδους, γνωρίζοντας σημαντική άνθιση τόσο σε ερευνητικές όσο και σε πραγματικές εφαρμογές. Αιτία είναι οι αλγόριθμοι της βαθιάς μάθησης, που θεωρούνται από πολλούς το μέλλον της τεχνητής νοημοσύνης, και σε συνδυασμό με την πληθώρα των δεδομένων και την εξέλιξη των υπολογιστικών εκτίναξαν την απόδοση των συστημάτων σε πολύ υψηλά επίπεδα. Η παρούσα διπλωματική εργασία επικεντρώνεται στην ανάπτυξη ενός συστήματος υπολογιστικής όρασης, που χρησιμοποιεί μεθόδους βαθιάς μηχανικής μάθησης για να αναγνωρίσει αντικείμενα σε εικόνες και να τις ταξινομήσει, με βάση το περιεχόμενο τους, σε κλάσεις. Αναλύονται και μελετώνται οι δύο βασικότερες τεχνικές βαθιάς μάθησης (deep learning), τα πλήρως συνδεδεμένα και τα συνελικτικά νευρωνικά δίκτυα, που είναι φορείς ευρείας αποδοχής από την επιστημονική κοινότητα για εφαρμογές υπολογιστικής όρασης. Παρουσιάζεται η δομή τους, οι ικανότητες τους, τα ελαττώματα τους καθώς και η διαδικασία εκπαίδευσης τους, ώστε να γίνει κατανοητός ο λόγος της υψηλής απόδοσής τους. Στη συνέχεια, περιγράφεται ο αλγόριθμος που αναπτύχθηκε, τα στάδια υλοποίησης του και διάφοροι περιορισμοί του. Το σύστημα έχει τη μορφή βιβλιοθήκης που υλοποιεί πλήρως συνδεδεμένα και βαθιά συνελικτικά δίκτυα, παρέχοντας τη δυνατότητα στο χρήστη να κατασκευάσει και να εκπαιδεύσει το δικό του δίκτυο με τις παραμέτρους της επιλογής του. Για να επιταχυνθεί η εκπαίδευση όλοι οι υπολογισμοί πραγματοποιούνται παράλληλα σε κάρτα γραφικών. Τέλος, η βιβλιοθήκη εξετάζεται σε δύο πραγματικά προβλήματα, την αναγνώριση χειρόγραφων ψηφίων και την αναγνώριση αντικειμένων, και παρουσιάζονται τα αποτελέσματα για διάφορες αρχιτεκτονικές και παραμέτρους. Λέξεις-Κλειδιά Βαθιά Μηχανική Μάθηση, Συνελικτικά Νευρωνικά Δίκτυα, Πλήρως Συνδεδεμένα Νευρωνικά Δίκτυα, Υπολογιστική Όραση, Ταξινόμηση εικόνων, Αναγνώριση Αντικειμένων, Παράλληλος Προγραμματισμός σε Κάρτες Γραφικών 5
6
Abstract Computer vision has been one of the most growing industries in recent years, knowing a significant growth in both research and real-life applications. This is due to the deep learning algorithms, which are considered by many to be the future of artificial intelligence, in combination with the abundance of collected data and the evolution of computing. As a result, the performance of these applications have been improved to very high levels. This diploma thesis focuses on the development of a computer vision system that uses deep learning methods to identify objects in images and to classify them in classes based on their content. It explores and analyses the two most common deep learning techniques, fully connected and convolutional neural networks, which are widely accepted by the scientific community for computer vision applications, by their structure, abilities, defects, and their training to understand their high performance. The developed algorithm, its implementation stages, its various limitations and possible enhancements are described extensively. The system is in the form of a library that implements fully connected and deep convolutional neural networks, enabling the user to build and train their own network with parameters of their choice. To accelerate the process of training, all calculations are performed in parallel on graphics cards. Finally, the library examines two real-world problems, such as handwriting recognition and object recognition, and the results for different architectures and parameters are presented. Keywords Deep Learning, Convolutional Neural Networks, Fully Connected Neural Networks, Computer Vision, Image Classification, Objects Recognition, Parallel Programming in Graphics Cards 7
8
Ευχαριστίες Αρχικά θέλω να ευχαριστήσω τον επιβλέποντα καθηγητή της διπλωματικής μου εργασίας Ευάγγελο Δερματά. Τον ευχαριστώ ειλικρινά για όλες τις πολύτιμες συμβουλές, την καθοδήγηση που μου έδωσε όλο αυτό το διάστημα, καθώς επίσης και για τις καθοριστικές διορθώσεις και επισημάνσεις του. Με την ολοκλήρωση της παρούσας εργασίας κλείνει και ο κύκλος των προπτυχιακών μου σπουδών στη Σχολή Ηλεκτρολόγων Μηχανικώς και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών. Σε όλη αυτή την περίοδο αποκόμισα γνώσεις και εμπειρίες - ακαδημαϊκές και μη - οι οποίες θα με χαρακτηρίζουν ως άτομο από εδώ και στο εξής. Για αυτές τις εμπειρίες θα ήθελα να ευχαριστήσω από καρδιάς όλους ανεξαιρέτως τους φίλους, συμφοιτητές και καθηγητές μου. Τέλος θα ήθελα να ευχαριστήσω την οικογένειά μου, τον πατέρα μου Γεώργιο, την μητέρα μου Ειρήνη και την αδερφή μου Μαριάννα για όλη την υλική και πνευματική υποστήριξη που μου προσφέρουν όλα αυτά τα χρόνια, δίνοντας μου μεταξύ άλλων και την δυνατότητα να σπουδάσω στη σχολή της επιλογής μου και να πραγματοποιήσω τους στόχους μου. Πάτρα, Σεπτέμβριος 2017 Καραγιαννάκος Σέργιος 9
10
Περιεχόμενα Περίληψη... 5 Abstract... 7 Ευχαριστίες... 9 Περιεχόμενα... 11 Κατάλογος εικόνων... 13 Κατάλογος διαγραμμάτων... 14 Κατάλογος πινάκων... 14 1 Εισαγωγή... 15 1.1 Υπολογιστική όραση... 16 1.2 Αναγνώριση αντικειμένων... 16 1.3 Ταξινόμηση εικόνων... 17 2 Μηχανική μάθηση και νευρωνικά δίκτυα... 19 2.1 Μηχανική μάθηση... 19 2.2 Βασικές αρχές Νευρωνικών δικτυών... 19 2.2.1 Τι είναι Νευρωνικό δίκτυο... 19 2.2.2 Μοντέλο ενεργοποίησης νευρώνα... 21 2.3 Εκπαίδευση... 24 2.3.1 Βασικές αρχές εκμάθησης... 24 2.3.2 Αλγόριθμος οπισθοδρομικής διάδοσης του σφάλματος... 24 2.4 Τεχνικές για βελτίωση της απόδοσης των νευρωνικών δικτύων... 27 2.4.1 Αρχικοποίηση βαρών... 27 2.4.2 Προεπεξεργασία δεδομένων... 27 2.4.3 Συνάρτηση διεντροπίας και Softmax... 28 3 Βαθιά Συνελικτικά δίκτυα... 29 3.1 Βαθιά Εκμάθηση... 29 3.2 Αρχές Συνελικτικών δικτύων... 30 3.2.1 Ορισμός... 30 3.2.2 Επίπεδο συνέλιξης... 30 3.2.3 Επίπεδο συγκέντρωσης... 32 3.2.4 Πλήρως διασυνδεδεμένο επίπεδο... 33 11
3.3 Εκπαίδευση... 34 4 Παράλληλος προγραμματισμός σε κάρτες γραφικών... 36 4.1 Ιστορική αναδρομή... 36 4.2 Αρχιτεκτονική των καρτών γραφικών... 38 4.3 OpenCL... 39 4.3.1 Μοντέλα πλατφόρμας και εκτέλεσης... 39 4.3.2 Μοντέλο μνήμης... 41 4.4 Βαθιά μάθηση και παραλληλισμός... 42 5 Υλοποίηση... 43 5.1 Σκοπός λογισμικού... 43 5.2 Εργαλεία... 43 5.2.1 Visual studio... 43 5.2.2 CodeXL... 44 5.2.3 OpenCV... 44 5.2.4 Git... 44 5.3 Εγκατάσταση της OpenCL... 45 5.4 Λεπτομέρειες αλγορίθμου... 46 5.4.1 Δομή... 46 5.4.2 Προγραμματισμός στη κάρτα γραφικών... 47 5.4.3 Στάδια υλοποίησης... 50 5.4.4 Βελτιώσεις... 51 5.4.5 Περιορισμοί... 52 6 Δεδομένα και αποτελέσματα... 54 6.1 Κατηγοριοποίηση χειρόγραφων αριθμών MNIST... 54 6.2 Ταξινόμηση αντικειμένων Cifar10... 59 7 Συμπεράσματα και μελλοντικές προτάσεις... 62 Βιβλιογραφία... 63 12
Κατάλογος εικόνων Εικόνα 1: Βιολογικός και τεχνητός νευρώνας... 20 Εικόνα 2: Νευρωνικό δίκτυο... 20 Εικόνα 3: Σιγμοειδής Συνάρτηση... 22 Εικόνα 4: Δομή Συνελικτικού Νευρωνικού δίκτύου... 29 Εικόνα 5: Συνέλιξη... 31 Εικόνα 6: Επίπεδο συγκέντρωσης... 33 Εικόνα 7: Συχνότητα ρολογιού στη πάροδο των χρόνων... 37 Εικόνα 8: Δομές Cpu και Gpu... 38 Εικόνα 9: Οργάνωση μνήμης GPU... 38 Εικόνα 10: Ιεραρχία πλατφόρμας OpenCL... 39 Εικόνα 11: Χώρος ευρετηριοποίησης OpenCL... 40 Εικόνα 12: Μοντέλο μνήμης NUMA... 41 Εικόνα 13: Χαρακτηριστικά AMD Radeon HD 7400M... 45 Εικόνα 14: UML διάγραμμα κλάσεων... 47 Εικόνα 15: XOR πύλη... 50 Εικόνα 16: Εικόνες MNIST... 54 Εικόνα 17: Εικόνες CIFAR10... 59 13
Κατάλογος διαγραμμάτων Διάγραμμα 1: Απόδοση συναρτήσει του ρυθμού εκμάθησης στη βάση MNIST... 56 Διάγραμμα 2: Απόδοση συναρτήσει επαναλήψεων στη βάση MNIST... 57 Διάγραμμα 3: Απόδοση συναρτήσει συνάρτησης ενεργοποίησης και ρυθμού εκμάθησης... 58 Διάγραμμα 4: Απόδοση συναρτήσει του αριθμού και της διάστασης των φίλτρων... 61 Κατάλογος πινάκων Πίνακας 1: Αποτελέσματα πλήρως συνδεδεμένων δικτύων στη βάση MNIST... 55 Πίνακας 2: Αποτελέσματα συνελικτικών δικτύων στη βάση MNIST... 56 Πίνακας 3:Αποτελέσματα πλήρως συνδεδεμένων δικτύων στη βάση CIFAR10... 60 Πίνακας 4: Αποτελέσματα συνελικτικών δικτύων στη βάση CIFAR10... 60 14
Κεφάλαιο 1 1 Εισαγωγή Τα τελευταία χρόνια παρατηρείται ένα μεγάλο και συνεχώς αυξανόμενο ενδιαφέρον για τις τεχνικές βαθιάς εκμάθησης σε διάφορες εφαρμογές, όπως η επεξεργασία ομιλίας, φυσικής γλώσσας και η ανάλυση και αναγνώριση εικόνων. Ο όγκος των δεδομένων (big data) που είναι διαθέσιμος, η ραγδαία ανάπτυξη των υπολογιστικών συστημάτων (χωρητικότητα μνήμης, ταχύτητα επεξεργαστών), αλλά και η εξέλιξη τεχνολογιών, όπως η παράλληλη και κατανεμημένη επεξεργασία, έχουν αποτελέσει το έναυσμα για να αυξηθεί η χρήση αλγορίθμων που παλαιότερα ήταν απαγορευτικοί. Στην κατηγορία αυτή ανήκουν οι τεχνικές βαθιάς μηχανικής μάθησης (deep learning) με κυριότερες τα νευρωνικά δίκτυα, τα κρυμμένα μοντέλα Markov και πολλές άλλες. Στον κλάδο της υπολογιστικής όρασης και της αναγνώρισηςταξινόμησης εικόνων έχει αποδειχθεί ότι μέθοδοι, όπως τα βαθιά και τα συνελικτικά νευρωνικά δίκτυα έχουν τις καλύτερες αποδόσεις, ξεπερνώντας ακόμα και τον άνθρωπο. Από το 2010 και μετά εξελίσσεται κάθε χρόνο ο διαγωνισμός ΙmageNet Large Scale Visual Recognition Challenge (ILSVRC) με σκοπό την προώθηση της έρευνας στον κλάδο αυτό. Το 2012 αποτελεί ένα ορόσημο, αφού ένα βαθύ συνελικτικό νευρωνικό δίκτυο πέτυχε ποσοστό σφάλματος 16%, κατά πολύ λιγότερο από τους μέχρι τότε αλγορίθμους. Εξαιτίας του γεγονότος αυτού, η επιστήμη της αναγνώρισης εικόνων με νευρωνικά δίκτυα γνώρισε ταχεία άνθιση και το ποσοστό αυτό έπεσε στο 3.08% μέχρι το 2016. Είναι προφανές ότι οι συνέπειες αυτής της ανάπτυξης είναι πολλές και εκτείνονται σε ένα πολύ ευρύ φάσμα της τεχνολογικής εξέλιξης από τη βιομηχανική και χειρουργική ρομποτική μέχρι τα αυτόνομα οχήματα, τις στρατιωτικές και τις διαστημικές εφαρμογές. Η παρούσα εργασία καταπιάνεται με την κατασκευή μιας βιβλιοθήκης συνελικτικών νευρωνικών δικτύων, δίνει έμφαση στην παράλληλη εκτέλεση σε κάρτες γραφικών και στο τρόπο με τον οποίο αυτή μπορεί να βελτιωθεί και κλείνει με την παρουσίαση, την ανάλυση, τη δοκιμή και την αξιολόγηση διάφορων αρχιτεκτονικών σε συνηθισμένα πραγματικά προβλήματα. Αναπτύσσεται σε 7 κεφάλαια και η δομή της είναι η εξής: Στο 1 ο κεφάλαιο γίνεται μια εισαγωγή σε βασικές έννοιες και ορίζονται τα προβλήματα της ταξινόμησης και της αναγνώρισης εικόνων. Στο 2 ο και στο 3 ο κεφάλαιο αναλύεται ο τομέας της μηχανικής μάθησης, επικεντρώνοντας στα νευρωνικά και στα βαθιά συνελικτικά δίκτυα και παρουσιάζεται θεωρητικά η δομή τους, οι βασικοί αλγόριθμοι εκπαίδευσης και οι τεχνικές βελτίωσης αυτής. 15
Στο 4 ο κεφάλαιο γίνεται μια ιστορική αναδρομή και μια επεξήγηση του παράλληλου προγραμματισμού σε κάρτες γραφικών, στις βασικές αρχές του, σε εργαλεία που χρησιμοποιούνται και στο πώς αυτός μπορεί να εφαρμοστεί στη μηχανική μάθηση. Στο 5 ο κεφάλαιο περιγράφεται αναλυτικά το λογισμικό που κατασκευάστηκε, η λογική πίσω από αυτό, οι προκλήσεις που παρουσιάστηκαν και οι βελτιώσεις που έγιναν. Στο 6 ο κεφάλαιο γίνεται η παρουσίαση των δεδομένων που χρησιμοποιήθηκαν στην μελέτη, αλλά και η ανάλυση των αποτελεσμάτων που παρήχθησαν με διάφορες αρχιτεκτονικές. Στο 7 ο και τελευταίο κεφάλαιο δίδονται συμπεράσματα και προτάσεις για μελλοντική έρευνα, ακολουθούμενα από τη βιβλιογραφία της εργασίας. 1.1 Υπολογιστική όραση Υπολογιστική όραση είναι ο κλάδος της επιστήμης που μελετά την ανακατασκευή και την κατανόηση του τρισδιάστατου χώρου μέσα από εικόνες ή βίντεο. Απώτερος στόχος της είναι η μοντελοποίηση, η αντιγραφή και εν τέλει η υπέρβαση της ανθρώπινης όρασης. Παραδοσιακά, κατηγοριοποιείται σε δύο επίπεδα ιεραρχίας. Το πρώτο αφορά τη γενική επεξεργασία της εικόνας, την εξαγωγή βασικών χαρακτηριστικών, όπως ακμές, γωνίες και τη ροή κίνησης, τον προσδιορισμό και την ύπαρξη αντικειμένων. Το δεύτερο επίπεδο ασχολείται με την κατανόηση αυτών, την κατηγοριοποίηση της εικόνας και την ανακατασκευή του χώρου που αυτή απεικονίζει με βάση τα χαρακτηριστικά που παρήγαγε το πρώτο επίπεδο. 1.2 Αναγνώριση αντικειμένων Η αναγνώριση και κατηγοριοποίηση αντικειμένων σε εικόνες έχει απασχολήσει για δεκαετίες τους μηχανικούς και έχουν προταθεί πολλοί τρόποι επίλυσης του προβλήματος, χωρίς ωστόσο να έχει κυριαρχήσει κάποιος μέχρι σήμερα. Τα βασικά ερωτήματα που προσπαθεί να απαντήσει είναι : Πόσα αντικείμενα υπάρχουν σε μία εικόνα (ύπαρξη), πού βρίσκονται (θέση) και σε ποιες από τις γνωστές κατηγορίες αντικειμένων μπορεί να ανήκουν (ταυτότητα); Τα μέρη του ερωτήματος αναλύονται στα παρακάτω επιμέρους προβλήματα: Ανίχνευση/Ύπαρξη(Detection): Εξακρίβωση αν ένα συγκεκριμένο αντικείμενο βρίσκεται στην εικόνα, χωρίς να αναζητείται η θέση, η κλίμακα ή ο προσανατολισμός. Εντοπισμός/Εύρεση (Localization) της ακριβούς θέσης ενός αντικειμένου, το οποίο είναι (πιθανώς) γνωστό ότι υπάρχει στην εικόνα. Ταξινόμηση/Κατηγοριοποίηση (Classification/Identification): Η ταξινόμηση μπορεί να γίνει εφόσον έχουν εντοπιστεί επιμέρους αντικείμενα, αλλά και συνολικά για μία εικόνα, στις κατηγορίες που ανήκουν. Σε γενικές γραμμές έχουν δοθεί ικανοποιητικές λύσεις στα παραπάνω, κυρίως όμως σε ελεγχόμενα περιβάλλοντα. Οι εικόνες από την καθημερινότητα, όμως, εμφανίζουν επιπλέον 16
προκλήσεις, όπως απόκλιση στο σχήμα και στη μορφή των αντικειμένων, αλλοιώσεις λόγω της φωτεινότητας, των φακών κλπ. 1.3 Ταξινόμηση εικόνων 1.3.1 Ψηφιακές εικόνες Κάθε εικόνα από τον φυσικό κόσμο δειγματοληπτείται, κβαντίζεται σε εικονοστοιχεία (pixels) μέσα από τη φωτογραφική μηχανή και απεικονίζεται ψηφιακά με ένα τρισδιάστατο διάνυσμα (W*H*D) από ακέραιους αριθμούς. Οι πρώτες δύο διαστάσεις (W, H) απεικονίζουν το πλάτος και το ύψος, ενώ η τρίτη το βάθος (D), που αντιπροσωπεύει τα χρωματικά κανάλια. Στην πιο συχνή μορφή τους οι εικόνες αποτελούνται από 3 κανάλια (RGB) για τα 3 βασικά χρώματα (κόκκινο, πράσινο, μπλε) και κάθε pixel παίρνει μια τιμή από 0 μέχρι 255. 1.3.2 Κατηγοριοποίηση Η κατηγοριοποίηση σε κλάσεις (classification) έχει ως σκοπό να αναθέσει στη κάθε ψηφιακή εικόνα την ετικέτα μιας κατηγορίας. Σκοπός, δηλαδή, είναι να κατασκευαστεί ένα σύστημα που θα έχει σαν εισόδους άγνωστες εικόνες και σαν έξοδο μια ετικέτα που να αντιστοιχεί στη κλάση της εισόδου. H ταξινόμηση αυτή γίνεται με βάση το εννοιολογικό περιεχόμενο της εικόνας και των αντικειμένων που περιέχει. Αν και η προαναφερθείσα διαδικασία είναι απλή για τους ανθρώπους, γίνεται ιδιαίτερα πολύπλοκη για τον υπολογιστή, αφού προκύπτουν προβλήματα όπως: Ο προσανατολισμός του αντικειμένου που μπορεί να διαφέρει από εικόνα σε εικόνα Η κλίμακα που απεικονίζεται στη φωτογραφία Η παραμόρφωση του αντικειμένου H μερική επικάλυψή του Η αλλοίωση των χρωμάτων Η δυσκολία διάκρισης από το περιβάλλον Γίνεται, επομένως, εμφανές ότι ένα καλός ταξινομητής πρέπει να είναι ανεπηρέαστος από αυτές τις παραλλαγές και να παράγει σωστή λύση για κάθε πιθανή είσοδο. Οι πιο διαδεδομένες τεχνικές είναι οι τεχνικές αναγνώρισης προτύπων και βασίζονται στην ύπαρξη πολλών δεδομένων (data-driven), από τα οποία ο αλγόριθμος «μαθαίνει» και στη συνέχεια ταξινομεί με κριτήριο τη γνώση που έχει αποκτήσει. Τα μοντέλα αυτά εμπνεύστηκαν από την εξέλιξη της στατιστικής, της πιθανοθεωρίας και της μαθηματικής βελτιστοποίησης και αφομοίωσαν πολλές από της μαθηματικές θεωρίες και μεθόδους τους. 17
Στην γενική τους μορφή η διαδικασία ταξινόμησης μπορεί να αναπαρασταθεί ως μια βαθμωτή συνάρτηση που αντιστοιχεί στο χώρο των μετρήσεων των προτύπων R p (που χαρακτηρίζονται από Ρ μετρήσεις χαρακτηριστικών του αντικειμένου), στο χώρο Ν διακριτών κατηγοριών: Για να καταστεί, όμως, εφικτή η ταξινόμηση, ο ταξινομητής Ra οφείλει να έχει τη δυνατότητα να αποθηκεύει την πληροφορία από τα δεδομένα x και να «μαθαίνει» από αυτή, ώστε να κατηγοριοποιεί στην κλάση ωι, κάτι που ονομάζουμε μηχανική μάθηση. 18
Κεφάλαιο 2 2 Μηχανική μάθηση και νευρωνικά δίκτυα 2.1 Μηχανική μάθηση Όταν αναφέρουμε τον όρο μηχανική μάθηση εννοούμε κυρίως όλες εκείνες τις τεχνικές και τους αλγορίθμους που καθιστούν ικανό έναν υπολογιστή να μάθει από δεδομένα και να κάνει πρόβλεψη με βάση αυτά, χωρίς εκ των προτέρων ακριβή προγραμματισμό. Ένα πρόγραμμα θεωρείται ότι μαθαίνει από μία εμπειρία Ε σε σχέση με μία διεργασία Τ όταν η απόδοσή του στην εκτέλεση της Τ βελτιώνεται μετά την Ε. Η μηχανική μάθηση είναι ένας κλάδος της τεχνητής νοημοσύνης και κατά συνέπεια της επιστήμης υπολογιστών, που έχει ένα ευρύ φάσμα εφαρμογών με πιο σημαντικές την αναγνώριση ομιλίας και την υπολογιστική όραση, με την οποία ασχολείται και η παρούσα διπλωματική. Χωρίζεται σε δύο κύριες κατηγορίες: την επιβλεπόμενη μάθηση και τη μη επιβλεπόμενη. Στην επιβλεπόμενη μάθηση σκοπός είναι το σύστημα να μάθει να αντιστοιχεί τις εισόδου x σε εξόδους y, δεδομένου ενός συνόλου από ζευγάρια εισόδου-εξόδου D = {(x i, y i )} N i=1, όπου το D ονομάζεται σύνολο εκπαίδευσης και Ν είναι το πλήθος του. Στη μη επιβλεπόμενη μάθηση υπάρχουν μόνο γνωστές είσοδοι D = {(x i )} N i=1 και το σύστημα πρέπει να ανακαλύψει «ενδιαφέροντα» πρότυπα (ανακάλυψη γνώσης). Υπάρχει, επίσης, και μια τρίτη κατηγορία, γνωστή ως ενισχυτική μάθηση, στην οποία το πρόγραμμα αλληλοεπιδρά με ένα δυναμικό περιβάλλον στο οποίο πρέπει να επιτευχθεί ένας συγκεκριμένος στόχος (πχ η οδήγηση ενός ρομπότ). 2.2 Βασικές αρχές Νευρωνικών δικτυών 2.2.1 Τι είναι Νευρωνικό δίκτυο Μία μεγάλη υποκατηγορία αλγορίθμων μηχανικής επιβλεπόμενης μάθησης είναι τα τεχνητά νευρωνικά δίκτυα που χρησιμοποιούνται ευρέως σε πληθώρα εφαρμογών τη σημερινή εποχή. Τα νευρωνικά δίκτυα αποτελούν μία προσπάθεια μοντελοποίησης του ανθρώπινου εγκεφάλου και του τρόπου με τον οποίο αυτός λειτουργεί και μαθαίνει. Το ανθρώπινο νευρικό σύστημα έχει ως δομική μονάδα τους νευρώνες και υπολογίζεται ότι περιλαμβάνει 86 δισεκατομμύρια νευρώνες που συνδέονται με 100 τρισεκατομμύρια συνάψεις. O απλοποιημένος νευρώνας του σχήματος λαμβάνει τα σήματα εισόδου από τους δενδρίτες, τα επεξεργάζεται και κατασκευάζει 19
το σήμα εξόδου που στέλνει μέσω του άξονα του σε άλλους νευρώνες. Στο αντίστοιχο μαθηματικό μοντέλο, τα σήματα εισόδου x = [1, x1,..., xm] T πολλαπλασιάζονται με βάρη w = [w0, w1,..., wm] T, προσθέτονται και στη συνέχεια περνάνε μέσα από μία μη γραμμική συνάρτηση h, η οποία θα παράγει το σήμα εξόδου. H βασική ιδέα είναι ότι τα βάρη w είναι εκπαιδεύσιμα, δηλαδή έχουν την ικανότητα να αλλάζουν με βάση την είσοδο και την επιθυμητή έξοδο και είναι αυτά που διατηρούν την πληροφορία των προηγουμένων εισόδων. Αποτελούν ως εκ τούτου μια μορφή μνήμης του συστήματος. Εικόνα 1: Βιολογικός και τεχνητός νευρώνας Μαθηματικά αυτό εκφράζεται ως : και Αν οργανώσουμε πολλούς νευρώνες σε μορφή επιπέδων και τα επίπεδα σειριακά, κατασκευάζουμε ένα νευρωνικό δίκτυο, όπως απεικονίζεται στο παρακάτω σχήμα: Εικόνα 2: Νευρωνικό δίκτυο 20
Κάθε νευρωνικό δίκτυο αποτελείται από ένα επίπεδο εισόδου, ένα ή περισσότερα κρυφά επίπεδα και ένα επίπεδο εξόδου. 2.2.2 Μοντέλο ενεργοποίησης νευρώνα Όπως αναφέρθηκε παραπάνω η ενεργοποίηση του κάθε νευρώνα γίνεται με μία μη γραμμική συνάρτηση h, η οποία δέχεται το άθροισμα του ηλεκτρικού φορτίου που δέχεται ο νευρώνας, εφαρμόζει τη μη γραμμικότητα και δίνει αποτέλεσμα την απόκριση του νευρώνα. Perceptron: Η πρώτη και πιο απλή συνάρτηση που χρησιμοποιήθηκε ονομάζεται μοντέλο perceptron που στην ουσία είναι ένας δυαδικός ταξινομητής. Χρησιμοποιείται κυρίως στον διαχωρισμό των δεδομένων εισόδου σε 2 επιμέρους κατηγορίες. Στην περίπτωση που οι 2 αυτές κατηγορίες έχουν τιμές 0 και 1, τότε η συνάρτηση κατωφλίου ονομάζεται και βηματική συνάρτηση (step function) ή αντίστοιχα ως συνάρτηση πρόσημού (signum function) όταν οι τιμές είναι -1 και 1. Σιγμοειδής(sigmoid): Πρόκειται για την πιο ευρέως χρησιμοποιούμενη ιστορικά συνάρτηση, καθώς ερμηνεύεται άμεσα ως ρυθμός πυροδότησης ενός νευρώνα. Δέχεται κάθε πραγματικό αριθμό και τον κανονικοποιεί στο διάστημα [0,1]. Με άλλα λόγια, μεγάλοι αρνητικοί αριθμοί γίνονται 0, ενώ μεγάλοι θετικοί γίνονται 1. Τα τελευταία χρόνια, όμως, η χρήση της έχει περιοριστεί αφού διαθέτει δυο βασικά μειονεκτήματα: Για πολύ μεγάλες ή μικρές τιμές η κλίση της γίνεται πρακτικά μηδενική, κάτι που οδηγεί στην παύση της εκπαίδευσης αφού η κλίση μεταφέρεται σε όλους τους νευρώνες σύμφωνα με τον αλγόριθμο οπισθοδρομικής διάδοσης που θα μελετηθεί παρακάτω. Επιπλέον, η αρχικοποίηση των βαρών πρέπει να είναι ιδιαίτερα προσεκτική, καθώς βάρη με μεγάλες τιμές μπορούν να οδηγήσουν τον νευρώνα σε κορεσμό. 21
Εικόνα 3: Σιγμοειδής Συνάρτηση Υπερβολική εφαπτόμενη (tanh) Έχει παρόμοια συμπεριφορά με τη σιγμοειδή, μόνο που έχει κεντραρισμένη έξοδο γύρω από το 0 και όχι το 0.5 και για αυτό προτιμάται πιο πολύ. Ανορθωμένη Γραμμική ή Συνάρτηση Ράμπας (Rectified Linear Unit ReLU) Η συγκεκριμένη συνάρτηση επιταχύνει την εκπαίδευση λόγω της γραμμικής και μη κορεσμένης εξόδου της και είναι πολύ εύκολη στην υλοποίησή της, αφού αποτελείται μόνο από μια σύγκριση με το 0. Το μοναδικό μειονέκτημα της είναι ότι κατά την εκπαίδευση μπορεί να οδηγήσει κάποια βάρη σε τέτοιο συνδυασμό που να αδρανοποιήσει το νευρώνα. Διαρρέουσα Ανορθωμένη Γραμμική (LeakyReLU) και Παραμετροποιήσιμη ReLU (PReLU) Παραλλαγή της ReLU που λύνει το πρόβλημα της αδρανοποίησης του νευρώνα, προσθέτοντας μια μικρή κλίση για αρνητικά αθροίσματα. Μονάδα καλύτερων παραμέτρων (Maxout) 22
Πρόκειται για διαφορετική προσέγγιση αφού δε θεωρείται συνάρτηση ενεργοποίησης. Η έξοδός της δίνεται από τη σχέση Μπορούμε να θεωρήσουμε ότι υπάρχει μια ομάδα υπονευρώνων που εκπαιδεύονται παράλληλα και η μέγιστη έξοδος αυτών είναι και η έξοδος του νευρώνα. Η συνάρτηση αυτή συνδυάζει όλα τα πλεονεκτήματα των παραπάνω συναρτήσεων με το αντίτιμο ότι εισάγει i-1 φορές επιπλέον βάρη. Έχει αποδειχθεί ότι με τη χρήση ικανού αριθμού μονάδων μπορεί να προσεγγιστεί οποιαδήποτε επιλεγμένη συνάρτηση σε οποιαδήποτε επιλεγμένη πιστότητα. 23
2.3 Εκπαίδευση 2.3.1 Βασικές αρχές εκμάθησης Αφού οριστεί η τοπολογία του νευρωνικού δικτύου, δηλαδή ο αριθμός των νευρώνων και των επιπέδων που θα το απαρτίζουν, αυτό πρέπει να εκπαιδευτεί για να μπορέσει να ταξινομήσει τα πρότυπα. Η διαδικασία εκπαίδευσης ανήκει στην κατηγορία της επιβλεπόμενης μάθησης, αφού έχουμε τα δεδομένα εκπαίδευσης x και την ετικέτα της κλάσης που ανήκουν t. Η εκπαίδευση είναι στην πραγματικότητα μια ενέργεια βελτιστοποίησης της συνάρτησης σφάλματος/κόστους, που εκφράζει τη απόκλιση της επιθυμητής εξόδου, και είναι ένα μέτρο απόδοσης του αλγορίθμου εκπαίδευσης από την έξοδο του νευρωνικού δικτύου. Οι τιμές των w για τις οποίες η συνάρτηση σφάλματος βρίσκεται σε ένα τοπικό ή στο ολικό ελάχιστό της αποτελούν και τη γνώση που έχει αποκτήσει το νευρωνικό δίκτυο. Η διαδικασία εκπαίδευσης είναι συνήθως μια επαναληπτική διαδικασία που ανανεώνει τα βάρη w στην κατεύθυνση αρνητικής κλίσης (gradient descent). Ο πιο διαδεδομένος αλγόριθμος είναι ο αλγόριθμος οπισθοδρομικής διάδοσης του σφάλματος που τυποποιεί την παραπάνω διαδικασία και είναι αυτός που εφαρμόζεται στη πλειοψηφία των σημερινών εφαρμογών. 2.3.2 Αλγόριθμος οπισθοδρομικής διάδοσης του σφάλματος Ο αλγόριθμος οφείλει την ονομασία του στον τρόπο με τον οποίο εκτελείται. Αποτελείται από 2 φάσεις: τη διάδοση και την ανανέωση των βαρών. Κατά τη διάδοση εκτελείται πρώτα η εμπρόσθια διάδοση: στην αρχή ενεργοποιείται το δίκτυο και οι υπολογισμοί αρχίζουν από το πρώτο επίπεδο, συνεχίζουν στα κρυφά επίπεδα και τέλος στο επίπεδο εξόδου όπου και παράγουν την έξοδο του. Εκ των υστέρων, εκτελείται η οπισθοδρομική διάδοση στην οποία υπολογίζεται η απόκλιση της εξόδου από την επιθυμητή, δηλαδή η παράγωγος της συνάρτησης σφάλματος, και η πληροφορία διαδίδεται κατά την αντίστροφη φορά (προς την αρχή του δικτύου). Τελικά, με βάση αυτή την απόκλιση οι τιμές των βαρών ανανεώνονται και η διαδικασία ξεκινάει από την αρχή. Πιο αναλυτικά, κατά την εμπρόσθια φάση του αλγορίθμου κάθε νευρώνας υπολογίζει την έξοδο του ως ένα σταθμισμένο άθροισμα των εισόδων του σε μορφή 24
Όπου zi η έξοδος των νευρώνων του προηγούμενου επιπέδου και wji το βάρος της σύνδεσης του νευρώνα i με τον νευρώνα j. Να σημειωθεί και ότι είναι πιθανό να συμπεριλαμβάνεται μια επιπλέον είσοδος με τιμή 1 (bias). Έπειτα, εφαρμόζεται η μη γραμμική συνάρτηση h που δίνει την τελική έξοδο του νευρώνα σύμφωνα με τη σχέση : Η εμπρόσθια διάδοση συνεχίζεται σειριακά σε όλα τα κρυφά επίπεδα μέχρι να φτάσει στο επίπεδο εξόδου. Στο σημείο αυτό είναι αναγκαίο να υποθέσουμε ότι η συνάρτηση σφάλματος έχει τη γενική μορφή: Για να αξιολογήσουμε τα τωρινά βάρη και την επίδρασή τους στην έξοδο αλλά και να ανανεώσουμε τα βάρη πρέπει να υπολογίζουμε τη πρώτη παράγωγο της συνάρτησης σφάλματος σύμφωνα με το κανόνα της αλυσίδας: Επιπλέον ορίζοντας ότι και παρατηρώντας ότι Καταλήγουμε στην εξής σχέση η οποία δηλώνει ότι η παράγωγος είναι το γινόμενο της τιμής δj επί την έξοδο από τον αντίστοιχο νευρώνα του προηγούμενου επιπέδου. Επομένως, μένει μόνο να υπολογίσουμε τις τιμές των δ για τον κάθε νευρώνα. Για τους νευρώνες του επιπέδου εξόδου έχουμε: 25
ενώ για τα κρυφά επίπεδα αποδεικνύεται πως ο τύπος για την οπισθοδρομική διάδοση είναι: Ο αλγόριθμος μπορεί τελικά να συνοψιστεί στα παρακάτω βήματα: 1. Εμπρόσθια διάδοση για την εύρεση των εξόδων κάθε νευρώνα 2. Αξιολόγηση των δκ για το επίπεδο εξόδου 3. Οπισθοδρομική δίαδοση με την απόκτηση των δj για τα κρυφά επίπεδα 4. Ανανέωση των βαρών σύμφωνα με τη παράγωγο της συνάρτησης σφάλματος πολλαπλασιασμένη με μια σταθερά a που ονομάζεται ρυθμός εκμάθησης και ορίζει το πόσο «γρήγορα» θα αναπροσδιορίζονται τα βάρη. 26
2.4 Τεχνικές για βελτίωση της απόδοσης των νευρωνικών δικτύων 2.4.1 Αρχικοποίηση βαρών Ένα σημαντικό ζήτημα για τη βελτίωση της εκπαίδευσης των νευρωνικών δικτύων είναι οι τιμές με τις οποίες αρχικοποιούνται τα βάρη W. Ένα πρώτο βήμα είναι να αναθέσουμε τελείως τυχαίες τιμές, που ενώ δε δημιουργεί πρόβλημα στον αλγόριθμο, σίγουρα δε βοηθά στην σύγκλισή του. Μια συνήθης πρακτική είναι αυτό να γίνει τυχαία με βάση την κατανομή Gauss με μέση τιμή 0 και διασπορά σ. Το βασικό πρόβλημα αυτής της προσέγγισης είναι η πιθανότητα ο νευρώνας να κορεσθεί. Επειδή αρκετά συχνά οι ενεργοποιήσεις θα είναι κοντά στο 0 ή στο 1, η παράγωγος της συνάρτησης σφάλματος θα έχει πολύ μικρή τιμή και συνεπώς το δίκτυο θα μαθαίνει πολύ αργά. Μια πολύ καλύτερη τακτική είναι η κατανομή Gauss να έχει μέση τιμή 0 αλλά διασπορά,όπου nin το πλήθος των παραδειγμάτων εκπαίδευσης. 2.4.2 Προεπεξεργασία δεδομένων Η αναπαράσταση και αποθήκευση εικόνων και γενικά κάθε μορφής δεδομένων μπορεί να διαφέρει από σύστημα σε σύστημα. Για να μπορέσουν τα δεδομένα να αποτελέσουν πρότυπα εκπαίδευσης, πολλές φορές είναι αναγκαίο να υποστούν προεπεξεργασία.υπάρχουν διάφοροι τρόποι και τεχνικές για να γίνει αυτό, που εξαρτώνται κυρίως από το είδος της εφαρμογής και τα ίδια τα δεδομένα. Εδώ θα αναφερθούν κάποιοι βασικοί και συνηθισμένοι τρόποι που αφορούν την περίπτωση που η είσοδος έχει τη μορφή εικόνας: Κανονικοποίηση: Τόσο τα δεδομένα εκμάθησης όσο και τα δεδομένα δοκιμής σχεδόν πάντα κανονικοποιούνται είτε στο διάστημα [0,1] είτε ως προς τη μέση τιμής τους. Επιπλέον, μπορεί να γίνει και κανονικοποίηση ως προς τη διασπορά τους, για να γίνει μοναδιαία. Μια άλλη μέθοδος είναι η ανάλυση κύριων συνιστωσών (PCA) ή παρόμοιοι μετασχηματισμοί. Γενικά, η κανονικοποίηση επιταχύνει την εκπαίδευση : αν για παράδειγμα, όλα τα pixels της εικόνας εισόδου έχουν θετικές τιμές, το ποσό της ανανέωσης από τον κανόνα μάθησης θα έχει ίδιο πρόσημο για όλα τα βάρη, με αποτέλεσμα να μετατοπίζονται όλα προς την ίδια κατεύθυνση. Με αυτόν τον τρόπο, τα βάρη θα αυξάνονται ή θα μειώνονται όλα μαζί και η εκπαίδευση θα γίνεται πάνω σε μία ευθεία. Γι αυτό το λόγο, είναι πολύ σημαντικό να κεντράρονται τα δεδομένα ως προς τη μέση τιμή τους. Επίσης, είναι επιθυμητό τα παραδείγματα να είναι όσο το δυνατόν ασυσχέτιστα και να έχουν μικρή διασπορά εντός των κατηγοριών. Αποκοπή δεδομένων: Υπάρχει περίπτωση κάποια από τα δεδομένα να είναι ελλιπή, να περιέχουν πολύ ακραίες τιμές ή πολύ θόρυβο. Αν αυτά δε μπορούν να προεπεξεργαστούν, τότε θα χρειαστεί να εξαιρεθούν από την εκπαίδευση. 27
2.4.3 Συνάρτηση διεντροπίας και Softmax Στη μέχρι τώρα ανάλυση λάβαμε υπόψιν μας ότι η συνάρτηση κόστους-σφάλματος ορίζεται ως το άθροισμα των τετραγώνων των αποστάσεων της εξόδου του δικτύου με το επιθυμητό διάνυσμα. Αυτό δεν είναι, βέβαια, απαραίτητο αφού στη βιβλιογραφία έχουν χρησιμοποιηθεί πολλές διαφορετικές συναρτήσεις. Μια από αυτές είναι η συνάρτηση διεντροπίας (cross entropy) που κερδίζει έδαφος τα τελευταία χρόνια, ειδικά στα βαθιά δίκτυα και ορίζεται ως εξής: με n τον αριθμό των προτύπων εκπαίδευσης, x το διάνυσμα εισόδου, y το επιθυμητό διάνυσμα και α την έξοδο των νευρώνων. Η συνάρτηση αυτή έχει την ιδιότητα να τείνει στο 0, όσο η απόσταση των y και α μικραίνει, και να είναι πάντα θετική, γεγονός που την καθιστά ιδανική για συνάρτηση κόστους. Έχει αποδειχθεί ότι η χρήση δεν αλλάζει σε μεγάλο βαθμό τις εξισώσεις του αλγορίθμου οπισθοδρομικής διάδοσης παρά μόνο στην τελική αναπροσαρμογή των βαρών, όπου έχουμε τη σχέση: Έχει βρεθεί, παράλληλα, μετά από δοκιμές ότι η συνάρτηση διεντροπίας σε συνδυασμό με τη συνάρτηση ενεργοποίησης softmax επιταχύνει σε μεγάλο βαθμό την εκπαίδευση, ειδικά στα συνελικτικά δίκτυα. Η softmax είναι μια συνάρτηση ειδικής μορφής και αρκετά διαφορετική από τις υπόλοιπες συναρτήσεις ενεργοποίησης, αφού κάθε έξοδος εξαρτάται από όλες τις υπόλοιπες: Για να γίνει αντιληπτό πώς λειτουργεί η softmax είναι αναγκαίο να επισημανθεί πως στις πραγματικές εφαρμογές αναγνώρισης σε n κλάσεις το επιθυμητό διάνυσμα εξόδου είναι της μορφής [0 0 0 0 1 0 0 0] (one hot encoding). Αυτό σημαίνει πως το διάνυσμα εξόδου στη θέση της κλάσης που ανήκει η είσοδος παίρνει τη τιμή 1, ενώ στις υπόλοιπες την τιμή 0. Η συνάρτηση softmax, που στην ουσία προέρχεται από τη γενικευμένη Bernouli συνάρτηση πιθανότητας, απλά μετατρέπει την έξοδο του νευρώνα σε πιθανότητα, την κανονικοποιεί με άλλα λόγια στο διάστημα [0,1], για να είναι συμβατή με την κωδικοποίηση που προαναφέρθηκε. 28
Κεφάλαιο 3 3 Βαθιά Συνελικτικά δίκτυα 3.1 Βαθιά Εκμάθηση Η έμπνευση για τα νευρωνικά δίκτυα, όπως έχει ήδη αναφερθεί, προήλθε από τη δομή και τη λειτουργία του ανθρώπινου εγκεφάλου. Όπως είχε παρατηρήσει από νωρίς η επιστήμη της νευροβιολογίας, το νευρικό σύστημα αποτελείται από πολλαπλά επίπεδα επεξεργασίας της πληροφορίας που λαμβάνει από τους αισθητήρες του. Εξαιτίας αυτού είναι σε θέση να "ξετυλίγει" τη σύνθετη πληροφορία και να δημιουργεί μια πλούσια και λεπτομερής αναπαράστασή της για την καλύτερη κατανόηση και αξιοποίησή της. Ήταν, συνεπώς, εύλογο να εφαρμοστεί μια παρόμοια τεχνική και στα τεχνητά νευρωνικά δίκτυα με αποτέλεσμα να προταθούν πολλά νέα μοντέλα και είδη από το 1980 μέχρι και σήμερα. Η άνθιση της βαθιάς μάθησης (deep learning) οφείλεται επίσης σε μεγάλο βαθμό στη σημερινή διαθεσιμότητα σε δεδομένα και σε πιο ισχυρούς υπολογιστικούς πόρους. Έχοντας πλέον πληθώρα "ωμών" ή προεπεξεργασμένων δεδομένων από το διαδίκτυο (big data) και εκμεταλλευόμενοι τον παραλληλισμό σε κάρτες γραφικών για μείωση της ταχύτητας της εκπαίδευσης, έχουμε καταφέρει να κατασκευάσουμε μοντέλα που μπορούν να εξάγουν συμπεράσματα και να ανακαλύψουν υψηλού επιπέδου πρότυπα, αποδίδοντας καλύτερα από τον άνθρωπο σε ορισμένα προβλήματα. Τα βαθιά νευρωνικά δίκτυα έχουν εφαρμοστεί μέχρι σήμερα σε μια ευρεία γκάμα εφαρμογών με κυριότερες την υπολογιστική όραση, την επεξεργασία φυσικής γλώσσας, την αναγνώριση ομιλίας, όπου και αποτελούν το "state of the art" για την επίλυσή τους. Πριν ξεκινήσουμε την ανάλυση της βασικότερης κατηγορίας βαθιάς μάθησης, των συνελικτικών δικτύων, οφείλουμε να συνοψίσουμε τα βασικά στοιχεία των βαθιών νευρωνικών δικτύων: Αποτελούνται από στοιβάδα πολλαπλών επιπέδων Τα υψηλού επιπέδου χαρακτηριστικά εξάγονται από τα πρώτα επίπεδα, υιοθετώντας έτσι μια ιεραρχική δομή Εκπαιδεύονται από πολλά δεδομένα με επιβλεπόμενη ή μη επιβλεπόμενη μάθηση Πολλές φορές η εκπαίδευση γίνεται σε κάρτες γραφικών για εκμετάλλευση της ανεξαρτησίας των υπολογισμών Εικόνα 4: Δομή Συνελικτικού Νευρωνικού δικτύου 29
3.2 Αρχές Συνελικτικών δικτύων 3.2.1 Ορισμός Τα Συνελικτικά νευρωνικά δίκτυα είναι αρκετά παρόμοια με τα κλασσικά δίκτυα με τη διαφορά ότι δέχονται σαν είσοδο δεδομένα σε μορφή πλέγματος, όπως οι εικόνες, κάτι που μας επιτρέπει να εφαρμόσουμε συγκεκριμένες ιδιότητες στο δίκτυο και να μειώσουμε τον αριθμό των παραμέτρων. Αφού η είσοδος είναι ένα τρισδιάστατο διάνυσμα (πλάτος-ύψος-κανάλια), μπορούμε να οργανώσουμε τους νευρώνες σε 3 διαστάσεις. Τα βασικά επίπεδα που τα απαρτίζουν είναι το συνελικτικό επίπεδο, που εφαρμόζει τη μαθηματική πράξη της συνέλιξης από την οποία προκύπτει και το όνομά του, το επίπεδο συγκέντρωσης (pooling) και ένα πλήρως διασυνδεδεμένο επίπεδο. Το κάθε επίπεδο από τα προαναφερόμενα έχει μία συγκεκριμένη λειτουργία και επομένως η σειρά τοποθέτησης και οργάνωσής τους πρέπει να ακολουθεί συγκεκριμένα μοτίβα (layer patterns). Η βάση κάθε συνελικτικού νευρωνικού δικτύου είναι μία αλληλουχία από συνελικτικά και πλήρως συνδεδεμένα επίπεδα, όπου τα συνελικτικά τοποθετούνται στην αρχή λόγω της τοπικότητας των ιδιοτήτων τους, ενώ τα πλήρως συνδεδεμένα τοποθετούνται συνήθως στο τέλος, καθώς δεν «αντιλαμβάνονται» κάποια τοπικότητα. Και τα δύο αυτά επίπεδα μπορεί να ακολουθούνται από επίπεδα συγκέντρωσης, τα οποία συνοψίζουν και μειώνουν τις χωρικές διαστάσεις των χαρακτηριστικών. 3.2.2 Επίπεδο συνέλιξης Το επίπεδο συνέλιξης περιλαμβάνει 1 ή περισσότερα φίλτρα/kernels με τιμές που αντιπροσωπεύουν τα εκπαιδευόμενα βάρη. Κάθε φίλτρο είναι μικρό χωρικά (οι τυπικές διαστάσεις των φίλτρων είναι 3x3, 5x5 ή 7x7) αλλά εκτείνεται σε όλο το φάσμα της εισόδου. Κατά το εμπρόσθιο πέρασμα κάθε φίλτρο συνελίσεται με την είσοδο, δηλαδή υπολογίζονται τα εσωτερικά γινόμενα της εισόδου με το φίλτρο και παράγεται ένα διάνυσμα εξόδου που ονομάζεται χάρτης χαρακτηριστικών (feature map) σύμφωνα με τη φόρμουλα: 30
Τα wx,y αντιστοιχούν στους συντελεστές του φίλτρου, τα αx,y x στην είσοδο, το b είναι μια σταθερή τιμή (bias), ενώ το διάνυσμα Ο(x,y) είναι ο χάρτης των χαρακτηριστικών. Σχηματικά έχουμε κάτι τέτοιο: Εικόνα 5:Συνέλιξη Διαισθητικά καταλαβαίνουμε ότι το συνελικτικό δίκτυο θα μάθει τα φίλτρα που ενεργοποιούνται όταν εντοπίσουν κάποιο βασικό χαρακτηριστικό της εικόνας, όπως ακμές ή κορυφές. Από μια άλλη οπτική γωνία μπορούμε να αναπαραστήσουμε κάθε εικονοστοιχείο της εισόδου και της εξόδου με ένα νευρώνα και τα φίλτρα ως τα βάρη των συνδέσεων που ενώνουν τους νευρώνες. Τότε καταλαβαίνουμε ότι έχουμε μερική και τοπική συνδεσιμότητα των νευρώνων, σε αντίθεση με τα κλασσικά νευρωνικά δίκτυα, αφού κάθε έξοδος βλέπει μόνο μια μικρή περιοχή της εισόδου. Πριν προχωρήσουμε στα επόμενα επίπεδα θα ήταν χρήσιμο να αναφερθούν περιληπτικά κάποιες βασικές αρχές που διέπουν τέτοιου είδους δίκτυα : Τοπική συνδεσιμότητα Όταν ασχολούμαστε με εισόδους πολλών διαστάσεων δεν είναι πρακτικό να συνδεθούν όλοι οι νευρώνες του επιπέδου με όλους του προηγούμενου, αφού θα προκύψει πολύ μεγάλος αριθμός παραμέτρων. Για το λόγο αυτό, όπως αναφέρθηκε ήδη, συνδέουμε κάθε νευρώνα με μια περιοχή της εισόδου. Έτσι, προκύπτει μια νέα παράμετρος που ονομάζεται οπτικό πεδίο νευρώνων (receptive field) F και καθορίζει πόσα εικονοστοιχεία βλέπει ο κάθε νευρώνας. Είναι, δηλαδή, η διάσταση των φίλτρων του δικτύου. Όσο μεγαλύτερη είναι η είσοδος, τόσο μεγαλύτερο είναι συνήθως το οπτικό πεδίο. Χωρική διάταξη και υπερπαράμετροι Ενώ έχουμε εξηγήσει τη συνδεσιμότητα των νευρώνων δεν είναι ακόμα πλήρως κατανοητό το πώς αυτοί οργανώνονται στο χώρο. Για το λόγο αυτό υπάρχουν 3 παράμετροι: 1. Το βάθος (depth) D του χάρτη χαρακτηριστικών αντιπροσωπεύει τον αριθμό των καναλιών της εξόδου και σχετίζεται άμεσα με τον αριθμό των φίλτρων 2. Βήμα φιλτραρίσματος (stride) S: καθορίζει κάθε πόσα εικονοστοιχεία θα γίνεται φιλτράρισμα, δηλαδή καθορίζει την επικάλυψη των οπτικών πεδίων 31
3. Επέκταση (padding) της εισόδου P: μας βοηθάει να επιμηκύνουμε την είσοδο, κυρίως με μηδενικά, για να καθορίσουμε τις διαστάσεις μήκους και όγκου της εξόδου. Τώρα μπορούμε εύκολα να βρούμε τις διαστάσεις του διανύσματος του χάρτη χαρακτηριστικών που δίνονται από τον τύπο: όπου W η διάσταση του διανύσματος εισόδου. Συνοπτικά το επίπεδο συνέλιξης χαρακτηρίζεται από τα εξής στοιχεία: Είσοδος: όγκος διαστάσεων W1 H1 D1 (πολυκαναλική εικόνα). Υπερπαράμετροι: 4 παράμετροι που καθορίζουν τη συνέλιξη : ο αριθμός των φίλτρων K, το μέγεθος των φίλτρων F, το βήμα του φιλτραρίσματος S και ο αριθμός των pixels για την επέκταση της εικόνας P. Έξοδος: όγκος διαστάσεων W2 H2 D2, για τον οποίο ισχύουν οι σχέσεις: W2 = (W1 F + 2P)/S + 1, H2 = (H1 F + 2P)/S + 1, D2 = K. Βάρη: εισάγει γενικά (W2 *H2 *D2) *(F*F*D1 +1) βάρη και κατώφλια (biases)., 3.2.3 Επίπεδο συγκέντρωσης Το επίπεδο συγκέντρωσης (pooling layer) μειώνει τις διαστάσεις του χάρτη χαρακτηριστικών και κατ' επέκταση το πλήθος των παραμέτρων του συνελικτικού δικτύου. Στην ουσία κάνει μια δειγματοληψία των τιμών στις διαστάσεις μήκους και πλάτους, χωρίς να επηρεάζει το βάθος του χάρτη. Είθισται μετά από κάθε συνελικτικό επίπεδο να υπάρχει και ένα επίπεδο συγκέντρωσης για να απλοποιείται το πλήθος των υπολογισμών. Η δειγματοληψία γίνεται με δύο βασικούς τρόπους: συγκέντρωση μέσου όρου ή μεγίστου (average or max pooling). Στη συγκέντρωση μέσου όρου ορίζεται ένα τετραγωνικό φίλτρο (συνήθως 2x2) που σαρώνει την εικόνα με βήμα S και βρίσκει το μέγιστο από κάθε "γειτονιά" του χάρτη χαρακτηριστικών. Από την άλλη, η συγκέντρωση μέσου όρου υπολογίζει το μέσο όρο των τιμών κάθε "γειτονιάς". Γραφικά η διαδικασία απεικονίζεται έτσι: 32
Εικόνα 6:Επίπεδο συγκέντρωσης 3.2.4 Πλήρως διασυνδεδεμένο επίπεδο Στο τέλος κάθε συνελικτικού δικτύου υπάρχουν ένα ή περισσότερα πλήρως διασυνδεδεμένα επίπεδα που εκτελούν τη βασική λειτουργία του δικτύου (πχ ταξινόμηση), σε αντίθεση με τα προηγούμενα επίπεδα που απλά κάνουν εξαγωγή χαρακτηριστικών. Εκτός από τη ταξινόμηση η πρόσθεσή τους αποτελεί ένα φθηνό τρόπο εκμάθησης μη γραμμικών συνδυασμών των χαρακτηριστικών. Τα χαρακτηριστικά των συνελικτικών και των επιπέδων συγκέντρωσης μπορεί να είναι καλά για την εργασία ταξινόμησης, αλλά οι συνδυασμοί αυτών των χαρακτηριστικών μπορεί να είναι ακόμη καλύτεροι. Με περισσότερη ανάλυση μπορεί κάποιος να καταλήξει στο συμπέρασμα ότι τα πλήρως συνδεδεμένα επίπεδα μπορούν να θεωρηθούν συνελικτικά επίπεδα που υλοποιούν συνελίξεις 1x1, διευκολύνοντας έτσι την αλγοριθμική υλοποίησή τους. 33
3.3 Εκπαίδευση Για την εκπαίδευση των συνελικτικών δικτύων χρησιμοποιείται ο αλγόριθμος οπισθοδρομικής διάδοσης του σφάλματος όπως και στα κλασσικά νευρωνικά δίκτυα με μερικές παραλλαγές. Ισχύουν, δηλαδή, στη γενική τους μορφή τα βήματα της ενότητας 2.3. Επειδή η δομή του συνελικτικού νευρωνικού δικτύου διαφέρει,επηρεάζονται και οι εξισώσεις του αλγόριθμου, χωρίς όμως να αλλοιώνονται οι βασικές του ιδιότητες. Ως συνάρτηση σφάλματος ορίζεται πάλι το άθροισμα των τετραγώνων της απόκλισης των εξόδων του συνελικτικού νευρωνικού δικτύου από την επιθυμητή έξοδο ενώ οι εξισώσεις του αλγορίθμου διαμορφώνονται με τον παρακάτω τρόπο: Παρατηρούμε ότι στην ουσία πρόκειται για την ίδια σχέση, απλά εκφράζεται με τη μορφή συνέλιξης, αφού έχουν σαν είσοδο στο δίκτυο εικόνες και όχι μονοδιάστατα διανύσματα. Όσον αφορά τα δx,y ορίζονται ως ο ρυθμός μεταβολής της συνάρτησης σφάλματος ως προς τις εξόδους του επιπέδου Και αποδεικνύεται εύκολα ότι τελικά ισχύει 34
Τα παραπάνω είναι εμφανές ότι αφορούν την οπισθοδρομική διάδοση στα συνελικτικά επίπεδα καθώς στα πλήρως συνδεδεμένα επίπεδα ισχύουν οι εξισώσεις της ενότητας 2.3. Στα επίπεδα συγκέντρωσης δε λαμβάνει μέρος κάποια εκμάθηση, αλλά ακολουθείται η αντίστροφη διαδικασία από αυτή της δειγματοληψίας. Το σφάλμα υπολογίζεται από την τιμή της "νικήτριας μονάδας". Για να είναι διαθέσιμη, κατά την εμπρόσθια διάδοση αποθηκεύεται ο δείκτης της θέσης της, ο οποίος χρησιμοποιείται κατά την οπισθοδρομική. Στη συγκέντρωση μεγίστου το σφάλμα ανατίθεται στη μονάδα που συνεισέφερε στον αλγόριθμο ("νικήτρια μονάδα") και περιείχε το μέγιστο της "γειτονιάς" της. Αντίθετα, στη συγκέντρωση μέσου όρου το σφάλμα πολλαπλασιάζεται με τον όρο 1/(Ν*Ν) και ανατίθεται σε όλες της μονάδες της "γειτονιάς". Κάθε μονάδα, δηλαδή, αποκτάει την ίδια τιμή. 35
Κεφάλαιο 4 4 Παράλληλος προγραμματισμός σε κάρτες γραφικών 4.1 Ιστορική αναδρομή Τις τελευταίες τρεις δεκαετίες οι μικροεπεξεργαστές έχουν βιώσει μια εντυπωσιακή πρόοδο όσον αφορά την υπολογιστική τους δύναμη, γεγονός που οδήγησε σε μια αντίστοιχη πρόοδο στη συνολική απόδοση μιας γκάμας υπολογιστικών συστημάτων, από υπερυπολογιστές μέχρι ενσωματωμένες συσκευές. Καθ όλη αυτή την περίοδο ωστόσο, εμφανίστηκαν πολλά εμπόδια που προμήνυαν το τέλος της, με κυριότερα τα: ILP Wall :Ο παραλληλισμός επιπέδου εντολών (Instruction Level Parallelism) έχει ως στόχο να διατηρεί απασχολημένες όσο το δυνατόν περισσότερο όλες τις μονάδες του επεξεργαστή σε κάθε κύκλο ρολογιού. Αυτό πραγματοποιείται διαχωρίζοντας τις εντολές ενός σειριακού προγράμματος ανάλογα με το είδος τους και εκτελώντας τες στις αντίστοιχες μονάδες επεξεργασίας παράλληλα, π.χ. διαχωρισμός των πράξεων μεταξύ ακέραιων αριθμών και πράξεων, μεταξύ αριθμών κινητής υποδιαστολής και εκτέλεσής τους σε διαφορετικές μονάδες στον ίδιο κύκλο ρολογιού. Memory Wall Η διαφορά στη συχνότητα ρολογιού μεταξύ του επεξεργαστή και της μνήμης (ο επεξεργαστής εκτελεί εντολές πιο γρήγορα από ό,τι έρχονται, οπότε μένει ανενεργός μέχρι να έρθει η επόμενη), καθώς και το εύρος ζώνης του διαύλου μεταφοράς των δεδομένων. Κύρια μέθοδος επίλυσης αποτελεί η κρυφή μνήμη (cache memory), που λειτουργεί ως ενδιάμεσος buffer και φροντίζει να υπάρχει αρκετή δουλειά για τον επεξεργαστή. Power Wall Η κατανάλωση ισχύος ανά μονάδα επιφάνειας ενός επεξεργαστικού στοιχείου αυξάνεται εκθετικά όσο αυξάνεται η συχνότητα ρολογιού του. Κατά συνέπεια, αυξάνεται και η εκπομπή θερμότητας, επηρεάζοντας γειτονικά κυκλώματα. Από τα παραπάνω, ο περιορισμός στην κατανάλωση ενέργειας είναι αυτός που συνεχίζει να εμποδίζει τη βελτίωση των επεξεργαστών και θεωρείται ο λόγος που σύντομα θα φτάσουμε στο ανώτατο όριο, όπως απεικονίζεται και στο παρακάτω σχήμα. Είναι όμως και ο καθοριστικός παράγοντας που οδήγησε στην εμφάνιση των πολυπύρηνων επεξεργαστών. 36
Εικόνα 7: Συχνότητα ρολογιού στην πάροδο των χρόνων Ως εκ τούτου, από τις αρχές της δεκαετίας του 2000 η βιομηχανία αναζητώντας λύση στο φράγμα της κατανάλωσης ενέργειας εφάρμοσε μια διαφορετική τακτική. Αντί να αυξήσει τη συχνότητα ρολογιού, αύξησε τον αριθμό των ανεξάρτητων επεξεργαστών που συνυπάρχουν μέσα στο ίδιο ολοκληρωμένο κύκλωμα. Αυτό ήταν και το προοίμιο των καρτών γραφικών, που σύντομα υιοθέτησαν αυτή την αρχιτεκτονική. Ο μεγάλος βαθμός παραλληλισμού σε επίπεδο δεδομένων που πέτυχαν οι αλγόριθμοι επεξεργασίας γραφικών έδωσε στις GPUs μια εκρηκτική αύξηση της απόδοσής τους. Σταδικά έγιναν προσπάθειες να μετατρέψουν τους μαθηματικούς υπολογισμούς των αλγορίθμων τους σε υπολογισμούς γραφικών (graphics computations), ώστε να εκμεταλλευτούν τη νέα τεχνολογία. Γρήγορα, όμως, έγινε αντιληπτό ότι η διαδικασία ήταν επίπονη και ένα νέο προγραμματιστικό μοντέλο ήταν αναγκαίο. Το νέο αυτό μοντέλο ήρθε στο πρσκήνιο το 2006 από την NVIDIA και ονομαζόταν CUDA (Compute Unified Device Architecture). To CUDA διευκολύνει αισθητά τον προγραμματισμό σε κάρτες γραφικών και αξιοποιεί στο έπακρο τη συνεχώς αυξανόμενη υπολογιστική ισχύ, αλλά έχει ένα σοβαρό μειονέκτημα: υποστηρίζει μόνο κάρτες γραφικών της NVIDIA. Για το λόγο αυτό, ένα χρόνο μετά αναπτύχθηκε η OpenCL, ένα ανοιχτού λογισμικού μοντέλο με παρόμοια φιλοσοφία που υποστηρίζει όμως όλα τα είδη καρτών γραφικών. Τα τελευταία χρόνια η χρήση του προγραμματισμού γενικού σκοπού σε κάρτες γραφικών έχει αυξηθεί αισθητά, αφού ευνοείται από τον τεράστιο όγκο δεδομένων και αλγορίθμων, όπως το deep learning, με μεγάλη ανεξαρτησία μεταξύ των υπολογισμών τους. 37
4.2 Αρχιτεκτονική των καρτών γραφικών Οι σύγχρονες κάρτες γραφικών αποτελούνται από έναν αριθμό πολυεπεξεργαστών, καθένας εκ των οποίων έχει ορισμένο πλήθος πυρήνων και μία ή δύο ενδιάμεσες μνήμες (L1,L2 cache). Ο κάθε πολυεπεξεργαστής περιέχει 8, 32/48 ή 192 απλούς πυρήνες ανάλογα τη γενιά της κάρτας. Επίσης, υπάρχουν ειδικές μονάδες εκτέλεσης μαθηματικών συναρτήσεων και warp schedulers. Η GPU ενώνεται με τη CPU μέσω του διαύλου PCI Express. Το μεγαλύτερο μέρος της επιφάνειάς τους αφιερώνεται στις μονάδες εκτέλεσης εντολών, οι οποίες οργανώνονται έτσι ώστε να βελτιστοποιήσουν την απόδοση εκτέλεσης, σε αντίθεση με τους επεξεργαστές που χρησιμοποιούν δομές όπως οι κρυφές μνήμες, μονάδες αριθμητικής λογικής, μονάδες ελέγχου. Εικόνα 8:Δομές Cpu και Gpu Όσον αφορά την ιεραρχία μνήμης, αυτή αναπαρίσταται στο παρακάτω σχήμα: Εικόνα 9: Οργάνωση μνήμης GPU 38
Παρατηρούμε ότι υπάρχει η καθολική μνήμη καθώς και οι μνήμες υφής και texture. Κάθε πολυεπεξεργαστής έχει τη δικιά του κοινή μνήμη και ένα αριθμό καταχωρητών. Η καθολική μνήμη (Device Memory) είναι δυναμική μνήμη τυχαίας προσπέλασης(dram), πολύ μεγάλη σε χωρητικότητα αλλά και πολύ αργή σε απόκριση.τα δεδομένα που μεταφέρονται από την κεντρική μνήμη του υπολογιστή μπορούν να αποθηκευτούν σε αυτή τη μνήμη. Επίσης, όποιο αποτέλεσμα απαιτείται να γυρίσει στην κύρια μνήμη του υπολογιστή πρέπει να βρίσκεται σε αυτή τη μνήμη. Στην καθολική μνήμη μπορούν να γράψουν και να διαβάσουν όλα τα νήματα ενός πυρήνα. Η κοινή μνήμη είναι μια πολύ γρήγορη μνήμη αλλά πολύ μικρή σε χωρητικότητα, με τον κάθε πολυεπεξεργαστή να έχει την δικιά του. Η διάταξη αυτή δεν είναι σταθερή, αλλά αλλάζει με βάση την αρχιτεκτονική και τον κατασκευαστή. 4.3 OpenCL Η OpenCL είναι ένα πλαίσιο εργασίας για ανάπτυξη παράλληλων εφαρμογών όχι μόνο σε GPU αλλά και σε επεξεργαστές, σε επεξεργαστές ψηφιακού (DSP) σήματος, σε FPGAs. Υποστηρίζει, δηλαδή, μια μορφή ετερογένειας και μεταφοράς κώδικα χωρίς αλλαγές μεταξύ διάφορων συσκευών. Είναι βασισμένη στη C99 και παρέχει προγραμματιστικές διεπαφές για C++ και Python. 4.3.1 Μοντέλα πλατφόρμας και εκτέλεσης Η πλατφόρμα περιλαμβάνει πάντα έναν host, ο οποίος συνδέεται με μια ή περισσότερες συσκευές. Κάθε συσκευή περιέχει μονάδες υπολογισμού και κάθε μονάδα χωρίζεται σε επεξεργαστικά στοιχεία, στα οποία εκτελούνται οι εκάστοτε υπολογισμοί. Η ιεραρχία αυτή φαίνεται στο σχήμα: Εικόνα 10: Ιεραρχία πλατφόρμας OpenCL 39
Η εκτέλεση του κώδικα μπορεί να πραγματοποιηθεί σε δύο μέρη: είτε στο host που εκτελείται σειριακά είτε στα προγράμματα kernels που εκτελούνται παράλληλα στις συσκευές. Τα kernels δημιουργούνται και οργανώνονται στον host και όταν κάποιο είναι έτοιμο για εκτέλεση δημιουργείται ένας χώρος ευρετηριοποίησης στη συσκευή. Κάθε σημείο του χώρου εκτελεί ένα συγκεκριμένο στιγμιότυπο του kernel για διαφορετικά δεδομένα και ονομάζεται work-item. Τα work-items οργανώνονται σε ομάδες, τα work-groups, και κάθε ομάδα ανατίθεται εξ ολοκλήρου σε μια μονάδα υπολογισμού. Συνεπώς, τα work-items που περιέχει εκτελούνται ταυτόχρονα στα επεξεργαστικά στοιχεία της μονάδας. Ο χώρος ευρετηριοποίησης είναι στην ουσία ένας τριδσδιάστατος εικονικός χώρος (NDRange) που εξαρτάται από τους περιορισμούς της συσκευής και στον οποίο οργανώνονται τα workgroups και κατ επέκταση τα work-items. Εικόνα 11: Χώρος ευρετηριοποίησης OpenCL Επιπρόσθετα, η OpenCL ορίζει και κάποιες άλλες δομές για τη διευκόλυνση του προγραμματιστή και τη καλύτερη διαχείριση της συσκευής: Περιεχόμενο (Context) Το περιεχόμενο υπάρχει σε κάθε εφαρμογή και είναι αυτό που ομαδοποιεί τις συσκευές, τα kernels, τον πηγαίο κώδικα των kernels και τα αντικείμενα της μνήμης με τα δεδομένα του προγράμματος. Ουρά εντολών(command queue) Η ουρά εντολών συντονίζει τις λειτουργίες του host και της συσκευής επειδή δουλεύουν ασύγχρονα. Οι λειτουργίες αυτές είναι εντολές εκτέλεσης ενός kernel, μεταφοράς δεδομένων και προς τις δύο κατευθύνσεις ή εντολές συγχρονισμού. Οι εντολές συγχρονισμού εξυπηρετούν στη σειριοποίηση (ή μη) της εκτέλεσης των kernels, δηλαδή την εκτέλεση των kernels με τη σειρά, όπου το καθένα περιμένει να τελειώσει το προηγούμενο (in-order execution), ή τυχαία, όπου κάθε kernel εκτελείται άμεσα χωρίς αναμονή (out-of-order execution). 40
4.3.2 Μοντέλο μνήμης Το μοντέλο μνήμης βασίζεται στην αρχιτεκτονική NUMA (Non Uniform Memory Access), στην οποία η προσπέλαση της μνήμης είναι γρήγορη κοντά στον επεξεργαστή και γίνεται πιο αργή όσο απομακρυνόμαστε από αυτό. Υπάρχουν 4 βασικά επίπεδα στην ιεραρχία της μνήμης: Μνήμη Host Είναι η βασική μνήμη του host ( RAM ) και είναι ορατή μόνο από αυτόν. Περιέχει τα δεδομένα πριν αυτά μεταφερθούν στις συσκευές. Παγκόσμια μνήμη (global memory) Είναι ορατή σε όλα τα work-groups και work-items, καθώς όλα μπορούν να γράψουν και να διαβάσουν από αυτή. Σταθερή μνήμη (Constant) Αποτελεί ένα μικρό κομμάτι της παγκόσμιας μνήμης και διαδραματίζει το ρόλο της κρυφής μνήμης. Μπορεί να διαβαστεί, αλλά όχι να εγγραφεί κατά τη διάρκεια εκτέλεσης των kernels. Τοπική μνήμη Για κάθε work-group ορίζεται μια διαφορετική και μόνο αυτό έχει πρόσβαση στα δεδομένα της. Ιδιωτική μνήμη Πρόκειται για την προσωπική μνήμη που διαχειρίζεται κάθε work-item ξεχωριστά. Εικόνα 12: Μοντέλο μνήμης NUMA 41
4.4 Βαθιά μάθηση και παραλληλισμός Μέχρι τώρα έχει γίνει κατανοητό ότι τα βαθιά νευρωνικά δίκτυα και ιδιαίτερα τα συνελικτικά απαιτούν μεγάλη υπολογιστική ισχύ, καθώς απαιτείται προεπεξεργασία του μεγάλου όγκου των δεδομένων, εκπαίδευση του μοντέλου, αποθήκευση των παραμέτρων του εκπαιδευμένου δικτύου και χρήση αυτού για αναγνώριση. Προκύπτει άμεσα, επομένως, το ερώτημα αν θα μπορούσαμε να βελτιώσουμε την απόδοση και την ταχύτητα των παραπάνω διαδικασιών εκμεταλλευόμενοι τον παραλληλισμό. Πράγματι τα τελευταία χρόνια η βαθιά μάθηση είναι άρρηκτα συνδεδεμένη με τον παράλληλο προγραμματισμό σε κάρτες γραφικών, καθώς τα συνελικτικά δίκτυα θεωρούνται ιδανικά για παραλληλοποίηση. Αν ανατρέξει κανείς στη θεωρία τους και ειδικότερα στον αλγόριθμο οπισθοδρομικής διάδοσης του σφάλματος, θα καταλάβει ότι δεν υπάρχει μεγάλη εξάρτηση μεταξύ των υπολογισμών που πραγματοποιούνται, παρά μόνο μεταξύ των διάφορων επιπέδων. Στην ουσία, όλες οι πράξεις που γίνονται είναι μεταξύ πινάκων, όπως πολλαπλασιασμοί, συνελίξεις που είναι εγγενώς κατάλληλες για κάρτες γραφικών επειδή δεν υπάρχει καμία συσχέτιση μεταξύ των επιμέρους στοιχείων. Πιο αναλυτικά, επειδή σε κάθε επίπεδο οι νευρώνες είναι ανεξάρτητοι μεταξύ τους τόσο στο εμπρόσθιο όσο και στο οπισθοδρομικό πέρασμα, μπορούμε να υλοποιήσουμε τη λειτουργία καθ ενός σε ένα διαφορετικό thread της GPU. Αφού εκτελεστούν όλα τα threads του ενός επιπέδου, επαναλαμβάνουμε στο επόμενο επίπεδο μέχρι να ολοκληρωθεί η εκπαίδευση. Αντίστοιχα, στα συνελικτικά δίκτυα κάθε εικονοστοιχείο του χάρτη χαρακτηριστικών αντιστοιχεί σε ένα νήμα και ταυτόχρονα κάθε φίλτρο σε ένα work-group. Παραλληλοποίηση επιδέχεται όχι μόνο κάθε επίπεδο, αλλά και τα δεδομένα αφού κάθε είσοδος δύναται να εκπαιδεύεται την ίδια χρονική στιγμή με τις άλλες, αρκεί να υπάρχει συγχρονισμός μεταξύ τους. Σε ακόμα ανώτερο στάδιο, παραλληλοποίηση γίνεται και μεταξύ μοντέλων με διαφορετικές υπερπαραμέτρους ή με διαφορετική δομή, καθιστώντας έτσι ικανή την επέκταση (scaling) της βαθιάς μάθησης στο μέγιστο βαθμό. Περισσότερες πληροφορίες για το πως επιτυγχάνεται ο παραλληλισμός θα δοθούν στο επόμενο κεφάλαιο, όπου παρουσιάζεται το λογισμικό που υλοποιήθηκε στα πλαίσια αυτής της εργασίας. Είναι πάντως σίγουρο και αποδεικνύεται σε πολλές εφαρμογές ότι ο παραλληλισμός σε κάρτες γραφικών είναι ένας από τους βασικούς παράγοντες που συντέλεσαν στην άνθιση της βαθιάς μάθησης αφού εκτοξεύει την απόδοση και την ταχύτητά τους σε τιμές μη εφικτές πριν 2-3 δεκαετίες. 42
Κεφάλαιο 5 5 Υλοποίηση 5.1 Σκοπός λογισμικού Βασικός σκοπός της παρούσας εργασίας είναι να κατασκευαστεί ένα λογισμικό με τη μορφή βιβλιοθήκης που να εκτελεί και να εκπαιδεύει βαθιά συνελικτικά νευρωνικά δίκτυα σε κάρτες γραφικών, παρέχοντας στο χρήστη τη δυνατότητα να ορίσει και να εκπαιδεύσει το δικό του δίκτυο με τα δικά του δεδομένα-εικόνες. Η βιβλιοθήκη θα χρησιμοποιείται κυρίως για αναγνώριση και ταξινόμηση εικόνων που είναι και το βασικό θέμα της εργασίας, χωρίς αυτό να σημαίνει ότι δε μπορεί να χρησιμοποιηθεί και σε άλλες εφαρμογές. Για το λόγο αυτό, επιλέχθηκε η OpenCL που έχει το πλεονέκτημα της ετερογένειας, μπορεί με άλλα λόγια να τρέξει σε πλήθος διαφορετικών συσκευών, και συγκεκριμένα η C++ προγραμματιστική διεπαφή της. 5.2 Εργαλεία Για την περάτωση της παρούσας διπλωματικής εργασίας και την ανάπτυξη του λογισμικού χρησιμοποιήθηκαν τα παρακάτω βοηθητικά εργαλεία: 5.2.1 Visual studio Συγκρίνοντας διάφορα εργαλεία και περιβάλλοντα αποφασίστηκε να χρησιμοποιηθεί το περιβάλλον Visual Studio 2017. To Visual studio είναι ένα ενσωματωμένο περιβάλλον ανάπτυξης από τη Microsoft και χρησιμοποιείται για τη δημιουργία πλήθους εφαρμογών, όπως σελίδες διαδικτύου και εφαρμογές κινητών τηλεφώνων. Περιλαμβάνει έναν επεξεργαστή κώδικα που υποστηρίζει την τεχνολογία IntelliSense, καθώς και τεχνολογίες αναδιάταξης κώδικα (code refractoring). Ταυτόχρονα, έχει ενσωματωμένο δικό του εντοπισμό σφαλμάτων, που λειτουργεί τόσο σε επίπεδο κώδικα όσο και σε επίπεδο μηχανής. Παρόλο που έχει προγραμματιστεί σε C,C++ και VB.NET υποστηρίζει 36 συνολικά διαφορετικές γλώσσες από Python μέχρι Javascript. Στην εργασία αυτή επιλέχθηκε η δωρεάν έκδοση Community 2017. Η πλήρης μορφή του περιβάλλοντος υπάρχει μόνο σε windows και για το λόγο αυτό η ανάπτυξη έγινε σε Windows 10. Παρόλο που σε πολλές περιπτώσεις, λειτουργικά με βάση τα unix μπορεί να ενδείκνυνται για τέτοιου είδους εφαρμογές, επιλέχθηκαν τα Windows για να γίνει πιο εύκολη η εγκατάσταση της OpenCL και να εκμεταλλευτούν στο έπακρο οι δυνατότητες του Visual Studio. 43
5.2.2 CodeXL Για τη βέλτιστη εκμετάλλευση της κάρτας γραφικών και τον εντοπισμό λαθών στον κώδικα που τρέχει στη GPU αποφασίστηκε να χρησιμοποιηθεί ο GPU Profiler CodeXL 1.9. Ο CodeXL αποτελεί μια σουίτα λογισμικού ανοιχτού κώδικα που συμπεριλαμβάνει εντοπισμό σφαλμάτων για κάρτες γραφικών, GPU profiler και CPU profiler. Είναι, συνεπώς, κατάλληλος για ανάλυση της κάρτας γραφικών και των kernel ώστε να προβλεφθούν τυχόν σφάλματα και να βελτιστοποιηθεί η εκτέλεση των OpenCL kernels. Έχει κατασκευαστεί κυρίως από την AMD, επομένως ταιριάζει απόλυτα με τη συγκεκριμένη κάρτα γραφικών, αλλά πλέον δεν αποτελεί πιστοποιημένο προϊόν της. 5.2.3 OpenCV H OpenCV είναι μια βιβλιοθήκη ανοιχτού λογισμικού κυρίως για εφαρμογές υπολογιστικής όρασης και αναπτύχθηκε αρχικά από την Intel. Έχει το πλεονέκτημα ότι, όπως και η OpenCL, μπορεί να τρέξει σε διάφορα συστήματα και πλατφόρμες και δεν περιορίζεται από το εκάστοτε σύστημα. Επίσης είναι γραμμένη σε C++, όπου είναι και η βασική προγραμματιστική διεπαφή της. Χρησιμοποιήθηκε η έκδοση 2.4 επειδή παρέχει μια πληθώρα έτοιμων συναρτήσεων χειρισμού και επεξεργασίας εικόνων, όπως εφαρμογή φίλτρων, μετασχηματισμοί κλπ. 5.2.4 Git To Git είναι το πιο δημοφιλές σύστημα ελέγχου εκδόσεων αρχείων υπολογιστή, είναι ιδανικό για την εύρεση και την παρακολούθηση αλλαγών, και διευκολύνει-συντονίζει τη δουλειά σε αυτά από πολλούς διαφορετικούς χρήστες. Κυρίως χρησιμοποιείται για τη διαχείριση του κώδικα κατά την ανάπτυξη λογισμικού και έχει σαν βασικές προτεραιότητες την ταχύτητα και την ακεραιότητα των δεδομένων. Πρόκειται για ένα κατανεμημένο σύστημα και οργανώνεται σε «αποθήκες» αρχείων που σημαίνει ότι κάθε υπολογιστής περιέχει ένα πλήρες αντίγραφο της αποθήκης με όλο το ιστορικό των αλλαγών που έλαβαν μέρος. Στην παρούσα διπλωματική βοήθησε αρκετά στον έλεγχο των εκδόσεων του λογισμικού, στην εύρεση σφαλμάτων, στη δοκιμή νέων τεχνικών και τρόπων (branch) χωρίς την αλλοίωση του βασικού κώδικα και γενικά στη βελτιστοποίηση του λογισμικού με τις ελάχιστες δυνατές αλλαγές. Συνολικά αναπτύχθηκαν 5 διαφορετικές εκδόσεις, με την τελευταία να αποτελεί και την τελική μορφή του λογισμικού. 44
5.3 Εγκατάσταση της OpenCL Για την εγκατάσταση της OpenCL χρησιμοποιήθηκε το Opencl App Sdk v3.0 από την AMD με την έκδοση OpenCL2.0, επειδή ο αλγόριθμος υλοποιήθηκε και εξετάστηκε για σφάλματα στην κάρτα γραφικών AMD Radeon HD 7400M. Για την εγκατάσταση της OpenCL κατεβάσαμε το εκτελέσιμο αρχείο με τη βιβλιοθήκη από τη σελίδα της AMD καθώς και τους τελευταίους drivers (AMD Catalyst driver) για τη συγκεκριμένη κάρτα γραφικών. Η εγκατάσταση έγινε τελείως αυτοματοποιημένα αφού χρειάστηκε μόνο να εκτελέσουμε το εκτελέσιμο αρχείο. Στη συνέχεια, δοκιμάστηκαν κάποια δείγματα από τη κονσόλα των Windows για να επιβεβαιωθεί ότι η εγκατάσταση έγινε σωστά. Το επόμενο βήμα ήταν να μάθουμε με ακρίβεια τους περιορισμούς και τις δυνατότητες της συγκεκριμένης κάρτας γραφικών. Με ένα απλό OpenCL πρόγραμμα παίρνουμε τα εξής: Εικόνα 13: Χαρακτηριστικά AMD Radeon HD 7400M Αν αναλύσουμε τα στοιχεία της κάρτας γραφικών βλέπουμε ότι η συνολική της μνήμη είναι 512 ΜΒ, αλλά μόνο τα 192 μπορούν να δεσμευτούν για την εφαρμογή. Επίσης, κάθε work-group μπορεί να αποτελείται από το πολύ 256 work-items και υπάρχουν το πολύ 256 work-groups ανά διάσταση. Τέλος, τα συνολικά work-groups που δύνανται να υπάρχουν ταυτόχρονα είναι 256*256*256=16777216. Τα παραπάνω μας περιορίζουν, όπως θα δούμε στη συνέχεια, στο συνολικό μέγεθος του δικτύου, στο μέγεθος των εικόνων της εισόδου και στο μέγιστο πλήθος επιπέδων και νευρώνων που μπορούμε να χρησιμοποιήσουμε στο συγκεκριμένο υπολογιστικό σύστημα. 45
5.4 Λεπτομέρειες αλγορίθμου 5.4.1 Δομή Όπως έχει ήδη αναφερθεί, η βασική ιδέα είναι ο αλγόριθμος να έχει τη μορφή βιβλιοθήκης, ώστε ο χρήστης να μπορεί να κατασκευάσει το δικό του συνελικτικό δίκτυο με ότι παραμέτρους αυτός επιθυμεί. Για το λόγο αυτό, η βιβλιοθήκη χρειάζεται να υποστηρίζει νευρωνικά δίκτυα και να δέχεται εικόνες κάθε διάστασης. Θεωρητικά, αυτό είναι εφικτό, αλλά περιορίζεται από την εκάστοτε κάρτα γραφικών και τις υπολογιστικές δυνατότητες του κάθε συστήματος. Για την υλοποίηση του δικτύου αποφασίστηκε να εφαρμοστεί μια αντικειμενοστρεφής προσέγγιση, με την έννοια να υπάρχει μια κλάση για κάθε ένα δομικό στοιχείο του δικτύου με αποτέλεσμα να κατασκευαστούν συνολικά 6 κλάσεις: Αρχικά, ορίστηκε μια κλάση που αναπαριστά το δίκτυο (ConvNN) και περιέχει τα βασικά στοιχεία και παραμέτρους, καθώς και απαραίτητες μεθόδους για τη λειτουργία του. Πιο συγκεκριμένα, στη κλάση αυτή υλοποιούνται οι μέθοδοι για τη δημιουργία του συνελικτικού, του επιπέδου συγκέντρωσης και του πλήρως διασυνδεδεμένου επιπέδου, για την εκπαίδευση και την εκτέλεση, καθώς και συμπληρωματικές συναρτήσεις για τον υπολογισμό του σφάλματος και της ακρίβειας της εκπαίδευσης. Πρόκειται, δηλαδή, για την κλάση που χειρίζεται τη μεταφορά των δεδομένων από τη CPU στην κάρτα γραφικών και καλεί τα κατάλληλα kernels για την εκτέλεση των αναγκαίων κάθε φορά υπολογισμών. Παράλληλα, διατηρείται η πληροφορία για τη δομή του δικτύου, τα είδη των επιπέδων, το πλήθος των νευρώνων που περιέχει και οι διαστάσεις των εικόνων εισόδου, των φίλτρων και των χαρτών χαρακτηριστικών. Η βασική δομική μονάδα του δικτύου είναι τα φίλτρα (Filter), όπως έχει αναφερθεί, που περιέχουν τις τιμές των βαρών. Για το λόγο αυτό, υπάρχει μια δομή (struct) που αναπαριστά τα φίλτρα και περιέχει τις τιμές των συντελεστών w. Επιλέχθηκε η δομή struct και όχι η κλάση, επειδή τα φίλτρα διαβάζονται από τα kernels της OpenCL, η οποία δεν μπορεί να διαχειριστεί κλάσεις αφού βασίζεται στη γλώσσα C99. Τα φίλτρα οργανώνονται σε μια νέα δομή, αυτή του συνελικτικού επιπέδου (ConvLayer). Εκεί περιέχονται επίσης οι μέθοδοι για τη δημιουργία του επιπέδου και για την αρχικοποίηση των βαρών. Στην ίδια κατεύθυνση, υπάρχει μια δομή για τον κάθε νευρώνα (Node) του πλήρως συνδεδεμένου επιπέδου με τις τιμές των βαρών, της εξόδου και της παραγώγου του σφάλματος δi. Οι νευρώνες οργανώνονται στη δομή του επιπέδου (Layer). Τέλος υπάρχει μια κλάση που διαχειρίζεται την OpenCL και την αρχικοποίησή της πριν εκτελεστεί η εφαρμογή, δηλαδή ορίζει την πλατφόρμα, τη συσκευή, το context του προγράμματος και τα kernels που θα εκτελεστούν στην κάρτα γραφικών. 46
Για να γίνει πιο κατανοητή η δομή του λογισμικού, παρακάτω παρατίθεται το UML διάγραμμα των κλάσεων και των σχέσεών τους. Εικόνα 14: UML διάγραμμα κλάσεων Επιπρόσθετα, εκτός από τις 6 βασικές κλάσεις, υπάρχουν και αρκετές βοηθητικές συναρτήσεις, όπως για παράδειγμα αυτή που διαβάζει τα δεδομένα εισόδου και κατασκευάζει το διάνυσμα εισόδου και το επιθυμητό διάνυσμα εξόδου που αντιστοιχεί στην ετικέτα της εικόνας. 5.4.2 Προγραμματισμός στην κάρτα γραφικών Η βασική και πιο σημαντική εργασία ήταν η κατασκευή των OpenCL kernels, που επιτελούν τους θεμελιώδεις υπολογισμούς του συνελικτικού νευρωνικού δικτύου. Τα kernels χωρίζονται σε δύο επιμέρους κατηγορίες: αυτά που αφορούν το συνελικτικό επίπεδο και αυτά που αφορούν το πλήρως διασυνδεδεμένο. Στη συνέχεια, θα αναλυθούν ένα-ένα τα kernels για να γίνει πλήρως κατανοητή η λειτουργία και η φιλοσοφία του λογισμικού. Στο συνελικτικό επίπεδο θεωρούμε ότι κάθε εικονοστοιχείο του χάρτη χαρακτηριστικών αποτελεί ένα νήμα και οι λειτουργίες της εμπρόσθιας και της οπισθοδρομικής διάδοσης γίνονται παράλληλα σε κάθε νευρώνα. Αντίστοιχα, στο πλήρως συνδεδεμένο επίπεδο κάθε νευρώνας αντιστοιχεί σε ένα νήμα. Με αυτή την προσέγγιση πετυχαίνουμε όλοι οι νευρώνες να εκτελούνται παράλληλα και να εξαρτώνται μόνο από τα προηγούμενα επίπεδα. 47
Τα kernels του συνελικτικού επιπέδου είναι τα εξής: Συνέλιξης: Είναι το kernel που πραγματοποιεί τη διαδικασία της συνέλιξης ανάμεσα στην είσοδο και στα φίλτρα και στη συνέχεια εφαρμόζει τη μη γραμμική συνάρτηση που ορίστηκε από το χρήστη. Η συνέλιξη υπολογίζεται με βάση τη θεώρηση ότι κάθε εικονοστοιχείο του χάρτη χαρακτηριστικών αποτελεί ένα νήμα. Επιπλέον, οι συνελίξεις για κάθε φίλτρο γίνονται και αυτές παράλληλα, αφού στην ουσία τα νήματα οργανώνονται στον τρισδιάστατο χώρο με τις δύο πρώτες διαστάσεις να αποτελούν το μήκος και το πλάτος του χάρτη και τη τρίτη να απεικονίζει το πλήθος των χαρτών (δηλαδή το πλήθος των φίλτρων). Συγκέντρωσης: Υλοποιεί το επίπεδο συγκέντρωσης (pooling) και δειγματοληπτεί το χάρτη χαρακτηριστικών με τη λογική της συγκέντρωσης του μεγίστου (max pooling). Παράγωγος του σφάλματος: Σε κάθε νευρώνα (εικονοστοιχείο του χάρτη χαρακτηριστικών) του συνελικτικού επιπέδου πρέπει να υπολογιστεί η κλίση του σφάλματος (error gradient) που θα χρειαστεί για τον αλγόριθμο οπισθοδρομικής διάδοσης. Το παρόν kernel υπολογίζει αυτές τις κλίσεις για κάθε εικονοστοιχείο του χάρτη μετά το επίπεδο συγκέντρωσης και στη συνέχεια αναθέτει τις τιμές αυτές σε ένα πίνακα με διάσταση όση ο χάρτης χαρακτηριστικών πριν το επίπεδο συγκέντρωσης. Τα στοιχεία του πίνακα με μη μηδενικές τιμές είναι τα αντίστοιχα με αυτά που συνεισέφεραν στην εμπρόσθια διάδοση του αλγορίθμου (το στοιχείο με τη μέγιστη τιμή, όπως αυτό βρέθηκε στο επίπεδο συγκέντρωσης). Οπισθοδρομικής διάδοσης: Εκτελεί τις εξισώσεις του αλγορίθμου οπισθοδρομικής διάδοσης του σφάλματος, όπως αυτές προέκυψαν στην ενότητα 3.3 και αναδιαμορφώνει τις τιμές των βαρών των φίλτρων. Η λογική που εφαρμόστηκε είναι ότι κάθε συντελεστής-βάρος του φίλτρου αποτελεί ένα διαφορετικό νήμα και, επομένως, όλα τα βάρη αναπροσδιορίζονται παράλληλα. Πρόκειται για το kernel με το μεγαλύτερο υπολογιστικό φόρτο, αφού κάθε νήμα εκτελεί μια συνέλιξη της εικόνας με τον πίνακα των παραγώγων του σφάλματος. Μετατροπής του συνελικτικού σε πλήρως συνδεδεμένο: Μετατρέπει το δισδιάστατο χάρτη χαρακτηριστικών σε διάνυσμα μίας διάστασης που θα αποτελέσει την είσοδο στο πρώτο πλήρως συνδεδεμένο επίπεδο. Περιστροφής της εικόνας: Η λειτουργία του έγκειται στη περιστροφή μιας εικόνας κατά 180 μοίρες προκειμένου η λειτουργία του αλγορίθμου εκπαίδευσης να συμβαδίζει με τις εξισώσεις του. 48
Στη συνέχεια παρατίθενται τα kernels του πλήρως συνδεδεμένου επιπέδου: Εμπρόσθιας διάδοσης: Υπολογίζεται η έξοδος κάθε νευρώνα, σύμφωνα με τις εξισώσεις της ενότητας 2.3. Πρακτικά πραγματοποιείται ένα πολλαπλασιασμός του πίνακα των βαρών με το διάνυσμα της εισόδου και η εφαρμογή της μη γραμμικής συνάρτησης. Η διαδικασία γίνεται παράλληλα αφού κάθε νευρώνας αντιπροσωπεύει ένα νήμα. Οπισθοδρομικής διάδοσης για το επίπεδο εξόδου: Εκτελείται η εξίσωση προσδιορισμού των βαρών των συνδέσεων του τελευταίου επιπέδου με το προηγούμενό του, αφού προηγουμένως υπολογιστούν οι παράγωγοι του σφάλματος για κάθε νευρώνα, δηλαδή η διαφορά του διανύσματος εξόδου με το επιθυμητό διάνυσμα. Οπισθοδρομικής διάδοσης για τα κρυφά επίπεδα: Η λειτουργία του είναι παρόμοια με το προηγούμενο kernel, με τη διαφορά ότι αφορά τα κρυφά επίπεδα και εφαρμόζει τις αντίστοιχες εξισώσεις. Softmax: Υπολογίζει τη συνάρτηση softmax για κάθε νευρώνα του επιπέδου εξόδου Τέλος, υπάρχει ένα αρχείο header που αφορά τα kernels και περιέχει τις συναρτήσεις ενεργοποίησης (σιγμοειδής, υπερβολική εφαπτομένη κλπ.) μαζί με τις παραγώγους τους που καλούνται από τα διάφορα kernels. 49
5.4.3 Στάδια υλοποίησης Η πρώτη φάση της ανάπτυξης του λογισμικού περιλάμβανε την κατασκευή ενός πλήρως διασυνδεδεμένου νευρωνικού δικτύου, που αποτελούνταν από 3 επίπεδα.το πρώτο επίπεδο είχε 2 νευρώνες εισόδου, το δεύτερο 3, το τρίτο 1 και δεν υπήρχε η δυνατότητα παραμετροποίησης. Το καθορισμένο αυτό δίκτυο δεχόταν ως είσοδο ένα μονοδιάστατο διάνυσμα και εκτελούσε μόνο την εμπρόσθια διάδοση. Οι υπολογισμοί της διάδοσης αυτής πραγματώνονταν σειριακά στον επεξεργαστή και όχι στην κάρτα γραφικών. Στην πορεία αναπτύχθηκε η οπισθοδρομική διάδοση του αλγορίθμου, πάλι σε σειριακή μορφή, και ελέγχθηκε η ορθότητά του με ένα τεχνητό dataset που αναπαριστούσε τη λογική πύλη XOR. Λάμβανε ως είσοδο δυαδικά δεδομένα των 2 bits (00,01,10,11) και έδινε σαν έξοδο 0 ή 1 ανάλογα με τη λογική της πύλης. Εικόνα 15: XOR πύλη Αφού διαπιστώθηκε ότι το δίκτυο εκπαιδεύτηκε και πράγματι έδινε τη σωστή έξοδο ξεκίνησε η παράλληλη υλοποίηση στη κάρτα γραφικών, δηλαδή ο προγραμματισμός των kernels που αναφέρθηκαν στην προηγούμενη παράγραφο. Ταυτόχρονα, έπρεπε να διαχειριστούν και οι μεταφορές των απαραίτητων δεδομένων από τη μνήμη του host στην κοινή μνήμη της κάρτας γραφικών και αντίστροφα. Πιο συγκεκριμένα, μεταφέρονται το διάνυσμα εισόδου σε κάθε επανάληψη, οι τιμές των βαρών των νευρώνων και το διάνυσμα εξόδου. Όλα τα νήματα διαβάζουν και γράφουν στην ίδια κοινή μνήμη. Κατόπιν, έπρεπε να δοθεί η δυνατότητα το νευρωνικό δίκτυο να έχει οποιοδήποτε μέγεθος και διάσταση και για το λόγο αυτό παραμετροποιήθηκαν όλες οι δομές που αποθηκεύουν τα δεδομένα, τους νευρώνες και τα επίπεδα. Έτσι, ο χρήστης μπορεί πλέον να ορίσει το δικό του πλήρως συνδεδεμένο δίκτυο και να το εκπαιδεύσει σε κάρτες γραφικών. Όταν διαπιστώθηκε ότι η εκπαίδευση του παραπάνω dataset λειτουργεί κανονικά για κάθε μέγεθος δικτύου, ξεκίνησε η ανάπτυξη του συνελικτικού επιπέδου, η οποία επιτεύχθηκε απευθείας σε παράλληλη υλοποίηση, χωρίς να προηγηθεί η σειριακή. Όμοια με πριν, το επίπεδο περιείχε ένα μόνο φίλτρο με προκαθορισμένη διάσταση 3x3, δεχόταν εικόνες σταθερού μεγέθους 10x10 και έδινε χάρτη χαρακτηριστικών μεγέθους 8x8. Η ανάπτυξη συνεχίστηκε με το επίπεδο συγκέντρωσης που παρήγαγε ένα νέο χάρτη μεγέθους 4x4, ο οποίος μετατρεπόταν σε ένα μονοδιάστατο διάνυσμα. Τα παραπάνω αφορούν μόνο την εμπρόσθια διάδοση, αφού για την οπισθοδρομική έπρεπε να συνδεθεί το συνελικτικό και το επίπεδο συγκέντρωσης με το πλήρως συνδεδεμένο δίκτυο. Για το σκοπό αυτό, το μονοδιάστατο διάνυσμα 16x1 που προέκυψε, 50
αποτελούσε την είσοδο του πλήρως διασυνδεδεμένου δικτύου και έτσι έγινε εφικτή η εμπρόσθια διάδοση από άκρη σε άκρη του δικτύου. Μετά είχε σειρά η οπισθοδρομική διάδοση, που αποτέλεσε και την πιο δύσκολη, καθώς ήταν αναγκαία η πλήρης και σε βάθος κατανόηση του αλγορίθμου αλλά και η μετατροπή των πολύπλοκων εξισώσεων σε κώδικα. Αξίζει να αναφερθεί ότι οι εξισώσεις επιλέχθηκαν να φτιαχτούν σε μορφή συνελίξεων και όχι πολλαπλασιασμού πινάκων, αφού θεωρήθηκε ότι θα ήταν πιο εύκολο. Εξαιτίας του γεγονότος ότι δε βρέθηκε κάποιο σύνολο εκπαίδευσης εικόνων με διάσταση 10x10, για να αξιολογηθεί η λειτουργία του αλγορίθμου ήταν απαραίτητο πρώτα να παραμετροποιηθεί για όλα τα μεγέθη εικόνων. Παρόλο που θεωρητικά είναι εφικτός ο ορισμός κάθε διάστασης δικτύου, δεν είναι δυνατή η εκτέλεση για μεγάλα μεγέθη λόγω των περιορισμών που προκύπτουν από την κάρτα γραφικών. Ωστόσο, μετά από αρκετές δοκιμές, έλεγχο σφαλμάτων και ανάλυση των kernels με τον CodeXL, διαπιστώθηκε ότι αυτά λειτουργούν κανονικά και το δίκτυο εκπαιδεύεται όπως θα έπρεπε. Οι δοκιμές πραγματοποιήθηκαν με το dataset MNIST που χρησιμοποιείται για κατηγοριοποίηση χειρόγραφων αριθμών και για το οποίο θα δοθούν περισσότερες πληροφορίες παρακάτω. 5.4.4 Βελτιώσεις Αφού ολοκληρώθηκε η βασική υλοποίηση ξεκίνησαν οι προσπάθειες βελτιστοποίησης τόσο της ταχύτητας του αλγορίθμου όσο και της δομής του δικτύου, προσθέτοντας επιπλέον χαρακτηριστικά και δυνατότητες. 1. Στην πρώτη έκδοσή του ο αλγόριθμος συμπεριλάμβανε μόνο μια μη γραμμική συνάρτηση ενεργοποίησης, τη σιγμοειδή, και ήταν, επομένως, εύλογο να προστεθούν και άλλες, όπως η υπερβολική εφαπτόμενη και η ανορθωμένη γραμμική. Με το τρόπο αυτό ο χρήστης έχει μεγαλύτερη ελευθερία στον τρόπο εκπαίδευσης και μπορεί να επηρεάσει τη ταχύτητα σύγκλισης ανάλογα με τα δεδομένα του. 2. Επειδή τα συνελικτικά δίκτυα που χρησιμοποιούνται σε σημερινές εφαρμογές διαθέτουν περισσότερα από ένα φίλτρα, ώστε να υπάρχουν περισσότερα εκπαιδεύσιμα βάρη, κρίθηκε σκόπιμο να δοθεί και αυτή η δυνατότητα στη βιβλιοθήκη. Με τον τρόπο αυτό, είναι δυνατό να εφαρμοστούν μεγαλύτερα και πιο πολύπλοκα προβλήματα, όπως είναι και η αναγνώριση εικόνων. Εξαιτίας αυτού, τα kernels μετατράπηκαν από δισδιάστατου χώρου ευρετηριοποίησης σε τρισδιάστατου χώρου, με την τρίτη διάσταση να απεικονίζει το πλήθος των φίλτρων. 3. Μια άλλη αναμενόμενη βελτίωση ήταν η δυνατότητα χρήσης και άλλων συναρτήσεων κόστους με βασικότερη αυτή της συνάρτησης διεντροπίας (cross entropy). Η εισαγωγή της απαιτεί την αλλαγή των εξισώσεων του αλγορίθμου, σε μικρό ωστόσο βαθμό, καθώς και την προσθήκη της συνάρτησης softmax στο επίπεδο εξόδου. 4. Η προεπεξεργασία των δεδομένων είναι ένας άλλος τομέας που επιδέχεται αλλαγές, επειδή μια σωστή επεξεργασία μπορεί να επηρεάσει αισθητά την ταχύτητα σύγκλισης. Ως εκ τούτου, μετά το διάβασμα των δεδομένων και τη δημιουργία των διανυσμάτων 51
εισόδου, αυτά μπορούν να κανονικοποιηθούν στο διάστημα που ορίζει ο χρήστης ή γύρω από τη μέση τιμή τους. Επιπρόσθετα, παρέχεται η δυνατότητα τα δεδομένα-εικόνες να διαβαστούν με τη OpenCV, καθιστώντας έτσι εύκολη την οποιαδήποτε προεπεξεργασία. Με την OpenCV οι εικόνες μπορούν να χειριστούν και να εμφανιστούν πολύ εύκολα, να αποκοπούν, να υποστούν κάθε μορφής μετασχηματισμό, όπως αλλαγή μεγέθους, να περαστούν από φίλτρα εξομάλυνσης, αφαίρεσης θορύβου, αλλαγής χρώματος. Επίσης, σε περιπτώσεις λίγων δεδομένων, οι εικόνες μπορούν να μετασχηματιστούν για την παραγωγή νέων εικόνων διαφορετικού προσανατολισμού, φωτεινότητας κλπ. (data augmentation). 5. Ενώ αρχικός σκοπός ήταν η δημιουργία συνελικτικών δικτύων, στην πορεία κρίθηκε σωστό ο χρήστης να μπορεί να δημιουργεί και μόνο πλήρως συνδεδεμένα δίκτυα χωρίς συνελικτικά επίπεδα και επίπεδα συγκέντρωσης, τα οποία σε απλά προβλήματα είναι συχνά περιττά. Επομένως, έγιναν ορισμένες τροποποιήσεις τόσο στις μεθόδους των κλάσεων όσο και στα kernels, προσθέτοντας μια boolean μεταβλητή. 5.4.5 Περιορισμοί Πέρα από τις δυνατότητες της βιβλιοθήκης που παρουσιάστηκαν στις προηγούμενες ενότητες, οφείλουμε να αναφέρουμε και τους περιορισμούς που υπάρχουν, προτείνοντας παράλληλα νέες πιθανές αλλαγές και βελτιώσεις του αλγορίθμου. Καταρχάς, στην παρούσα μορφή υποστηρίζονται συνελικτικά δίκτυα με μόνο ένα συνελικτικό επίπεδο και ένα επίπεδο συγκέντρωσης, γεγονός που αποτελεί σημαντική τροχοπέδη για την αντιμετώπιση πολύπλοκων προβλημάτων, αφού πολύ συχνά απαιτούνται πολύ βαθύτερα δίκτυα. Για να γίνει εφικτή η προσθήκη και άλλων επιπέδων είναι αναγκαία η ριζική μετατροπή του κώδικα και της δομής του αλγορίθμου, γιατί σε διαφορετική περίπτωση θα αυξηθεί αισθητά η πολυπλοκότητα και ο χρόνος εκτέλεσής του. Ένας ακόμα περιορισμός είναι η υποστήριξη εισόδων-εικόνων ενός μόνου καναλιού, συνήθως σε μορφή grayscale, πράγμα που σημαίνει ότι δεν μπορούν να κατασκευαστούν μοντέλα για έγχρωμες εικόνες. Ωστόσο, αυτές μπορούν να μετατραπούν σε εικόνες ενός καναλιού με τη βοήθεια της OpenCV, με συνέπεια όμως την έλλειψη σημαντικής πληροφορίας. Μια σημαντική προσθήκη μπορεί να αποτελέσει η τροποποίηση του αλγορίθμου εκπαίδευσης με πιο πρόσφατες τεχνικές όπως την εισαγωγή αδράνειας, τη μετατροπή σε ελαστικό αλγόριθμο οπισθοδρομικής διάδοσης (resilient back propagation) ή σε στοχαστικό αλγόριθμο αρνητικής κλίσης (stochastic gradient descent). Γενικά, οι δυνατότητες στο θέμα της εκπαίδευσης είναι πάρα πολλές εξαιτίας της μεγάλης ανάπτυξης που έχει υποστεί ο κλάδος τα τελευταία χρόνια. Εκτός από τους περιορισμούς σε θέματα βαθιάς μάθησης υπάρχουν και οι περιορισμοί σε θέματα ταχύτητας και παράλληλου προγραμματισμού, αφού και εκεί επιδέχονται πολλές βελτιστοποιήσεις κυρίως στον προγραμματισμό των kernels. Αρχικά τα δεδομένα εισόδου επειδή μεταφέρονται σε κάθε επανάληψη, καθυστερούν την εκπαίδευση, πράγμα που είναι βέβαια αναγκαίο αφού οι δυνατότητες της μνήμης της κάρτας γραφικών δεν αφήνουν και πολλά περιθώρια. Σε μια διαφορετική όμως κάρτα, με μεγαλύτερο αποθηκευτικό χώρο, τα δεδομένα 52
μπορούν να αντιγράφονται είτε στην αρχή είτε κατά σετ (batches) στη διάρκεια της εκτέλεσης. Επιπρόσθετα, μεγάλη επιτάχυνση μπορεί να επιτευχθεί και με την καλύτερη διαχείριση των kernels, εκμεταλλευόμενοι τις τοπικές μνήμες των treads, τo ξετύλιγμα των βρόγχων αλλά και την καλύτερη οργάνωση σε workgroups και workitems. 53
Κεφάλαιο 6 6 Δεδομένα και αποτελέσματα 6.1 Κατηγοριοποίηση χειρόγραφων αριθμών MNIST Η βάση δεδομένων MNIST είναι μια μεγάλη βάση δεδομένων εικόνων που απεικονίζουν τα χειρόγραφα ψηφία 0 ως 9, έχει συλλεχθεί από την αμερικάνικη υπηρεσία απογραφής και χρησιμοποιείται ευρέως για εκπαίδευση και αξιολόγηση διάφορων συστημάτων επεξεργασίας εικόνας. Αποτελείται από δύο σύνολα εικόνων ταξινομημένων σε 10 κλάσεις, το σύνολο εκπαίδευσης με 60.000 εικόνες και τις ετικέτες τους, και το σύνολο αξιολόγησης με 10.000. Οι εικόνες έχουν διάσταση 28x28, αποτελούνται από ένα κανάλι (grayscale), έχουν κανονικοποιηθεί και κεντραριστεί με βάση το κέντρο μάζας των εικονοστοιχείων. Πρόκειται για μια βάση με πάρα πολλές χρήσεις σε δοκιμές συστημάτων μηχανικής μάθησης, ιδιαίτερα συνελικτικών νευρωνικών δικτύων και έχει αναφερθεί σε πληθώρα επιστημονικών εργασιών. Στην παρούσα εργασία επιλέχθηκε ως πρωταρχικό σύνολο εκπαίδευσης, επειδή απαιτεί ελάχιστη προεπεξεργασία, περιέχει εικόνες με σχετικά μικρή διάσταση και ένα μόνο κανάλι χρώματος. Η βάση MNIST μπορεί να βρεθεί στον σύνδεσμο http://yann.lecun.com/exdb/mnist/. Εικόνα 16: Εικόνες MNIST Σε πρώτη φάση επιλέχθηκαν μόνο εικόνες των πρώτων δύο κλάσεων, που απεικονίζουν τα ψηφία 0 και 1. Ο ταξινομητής που χρησιμοποιήθηκε περιείχε ένα συνελικτικό επίπεδο με 5 φίλτρα διάστασης 5x5,ένα επίπεδο συγκέντρωσης και 2 πλήρως συνδεδεμένα επίπεδα. Το πρώτο αποτελούνταν από 200 νευρώνες, και το δεύτερο από 10. Ως συνάρτηση ενεργοποίησης επιλέχθηκε η σιγμοειδής και το δίκτυο εκπαιδεύτηκε για 10.000 επαναλήψεις με ρυθμό εκπαίδευσης α=0.001. Στη συνέχεια, ελέγχθηκε η ακρίβεια της εκπαίδευσης για 200 εικόνες και βρέθηκε ότι ήταν 68%, ποσοστό το οποίο δεν είναι ιδιαίτερα καλό αφού ταξινομεί λίγο καλύτερα από έναν τυχαίο ταξινομητή. Όταν αυξήσαμε τη διάσταση των φίλτρων σε 7x7, η ακρίβεια αυξήθηκε στο 73%, που και πάλι δεν είναι ιδανικό. Μόνο όταν αυξήσαμε τις επαναλήψεις σε 50.000 η ακρίβεια εκτοξεύθηκε στο 94%. Όλα τα παραπάνω ήταν αρκετά για να διαπιστωθεί ότι το λογισμικό πράγματι λειτουργεί όπως αναμένεται. Στη συνέχεια επιλέχθηκαν όλες οι εικόνες και για τις 10 κατηγορίες με σκοπό να κατασκευαστεί ένα μοντέλο με τη μεγαλύτερη δυνατή ακρίβεια. Αρχικά, χρησιμοποιήθηκαν πλήρως 54
διασυνδεδεμένα δίκτυα, χωρίς συνελικτικά επίπεδα, τα οποία αξιολογήθηκαν για διάφορες παραμέτρους. Τα αποτελέσματα παρουσιάζονται στον παρακάτω πίνακα: Δομή Συνάρτηση Ρυθμός Επαναλήψεις Ακρίβεια ενεργοποίησης εκμάθησης 784,10 σιγμοειδής 0.01 50.000 84.9% 784,10 σιγμοειδής 0.01 200.000 86.75% 784,10 relu 0.01 50.000 80.7% 784,300,10 relu 0.01 50.000 87.85% 784,500,150,10 tanh 0.01 50.000 86.9% 784,500,150,10 tanh 0.01 200.000 88.3% Πίνακας 1: Αποτελέσματα πλήρως συνδεδεμένων δικτύων στη βάση MNIST Παρατηρούμε εύκολα ότι τη μεγαλύτερη ακρίβεια πέτυχε ένα δίκτυο με 3 επίπεδα (784,300,10) και συνάρτηση ενεργοποίησης τη RELU, φτάνοντας στο 87.85 %, ποσοστό όμως που είναι αρκετά χαμηλό για το συγκεκριμένο σύνολο εικόνων, σύμφωνα με την υπάρχουσα βιβλιογραφία. Αυτό φαίνεται και από το γεγονός ότι οι αλλαγές στον αριθμό των επαναλήψεων, στη δομή και στη συνάρτηση ενεργοποίησης επηρεάζουν ελάχιστα το τελικό αποτέλεσμα. Για να καταφέρουμε να επιτύχουμε μεγαλύτερη ακρίβεια χρειάζεται να εισάγουμε τα συνελικτικά επίπεδα που ενδείκνυνται για αναγνώριση εικόνων, αφού έχουν την ιδιότητα να αντιλαμβάνονται μικρές λεπτομέρειες και αλλαγές μεταξύ των εικόνων. Να σημειωθεί ότι όλα τα συνελικτικά νευρωνικά δίκτυα που θα αναφερθούν περιείχαν ένα συνελικτικό επίπεδο, ένα επίπεδο συγκέντρωσης και 1 ή 2 πλήρως συνδεδεμένα επίπεδα και, επιπρόσθετα, όλα τα βάρη αρχικοποιήθηκαν τυχαία στο διάστημα (-0.1, 0.1) αφού τότε έδιναν τα καλύτερα αποτελέσματα. Η ακρίβεια του ταξινομητή ελέγχθηκε στο ίδιο σύνολο 2000 εικόνων. Διάσταση φίλτρων συνελικτικού επιπέδου Δομή πλήρως συνδεμένου (αριθμός φίλτρων, δομή) Συνάρτηση ενεργοποίησης Ρυθμός εκμάθησης Επαναλήψεις Ακρίβεια 5 5,144*5,10 sigmoid 0.5 50000 96 5 5,144*5,10 sigmoid 0.1 50000 94 5 5,144*5,10 sigmoid 0.01 50000 91 5 5,144*5,10 sigmoid 0.001 50000 50 5 5,144*5,10 sigmoid 0.0001 50000 17 5 5,144*5,10 relu 0.1 50000 19 5 5,144*5,10 relu 0.01 50000 95 5 5,144*5,10 tanh 0.5 50000 13 5 5,144*5,10 tanh 0.1 50000 7 5 5,144*5,10 tanh 0.01 50000 93 5 5,144*5,10 tanh 0.001 50000 85 3 5,169*5,10 sigmoid 0.5 50000 92 55
7 5,121*5,10 sigmoid 0.5 50000 95 5 5,144*5,10 sigmoid 0.5 100000 97 5 5,144*5,10 sigmoid 0.01 100000 92 5 5,144*5,10 sigmoid 0.01 500000 96 5 10,144*10,10 sigmoid 0.1 50000 96 5 20,144*20,10 sigmoid 0.1 50000 97 Πίνακας 2: Αποτελέσματα συνελικτικών δικτύων στη βάση MNIST Από τον παραπάνω πίνακα βλέπουμε πως για να πάρουμε υψηλά ποσοστά ακρίβειας, η εκπαίδευση απαιτεί είτε πολλές επαναλήψεις με μικρό ρυθμό εκμάθησης είτε μεγάλο ρυθμό εκμάθησης και αισθητά λιγότερες επαναλήψεις, όπως φαίνεται και στο διάγραμμα: 120 Απόδοση 100 91 94 96 80 60 50 40 20 0 17 0,0001 0,001 0,01 0,1 0,5 Ρυθμός εκμάθησης Διάγραμμα 1: Απόδοση συναρτήσει του ρυθμού εκμάθησης στη βάση MNIST 56
Απόδοση 97 96 96 95 94 93 92 91 90 89 91 92 88 50000 100000 500000 Επαναλήψεις Διάγραμμα 2: Απόδοση συναρτήσει επαναλήψεων στη βάση MNIST Παρατηρούμε ότι για μεγάλο ρυθμό εκμάθησης ο αλγόριθμος συγκλίνει πολύ γρήγορα επιτυγχάνοντας πολύ υψηλά ποσοστά ακρίβειας, της τάξης του 96%. Αντίθετα, απαιτούνται περισσότερες επαναλήψεις αν ο ρυθμός εκμάθησης είναι μικρός φτάνοντας, όμως, στην ίδια ακρίβεια. Όσον αφορά τη δομή του δικτύου βλέπουμε ότι δεν επηρεάζει σημαντικά την απόδοση, πράγμα που οφείλεται στη μικρή πολυπλοκότητα του συγκεκριμένου συνόλου εικόνων. Μια υπερπαράμετρος όμως που έχει ισχυρή επίπτωση είναι η συνάρτηση ενεργοποίησης, αφού βλέπουμε ότι η κάθε μια συμπεριφέρεται διαφορετικά συναρτήσει του ρυθμού εκμάθησης. Όπως φαίνεται και στο παρακάτω διάγραμμα, η σιγμοειδής λειτουργεί καλύτερα με μεγάλο ρυθμό εκμάθησης, ενώ η υπερβολική εφαπτόμενη και η relu με ρυθμό 0.01. 57
Απόδοση 120 100 80 85 91 95 93 94 96 60 40 20 0 50 17 19 7 0,0001 0,001 0,01 0,1 0,5 Sigmoid RELU Tanh 13 Διάγραμμα 3: Απόδοση σε σχέση συνάρτησης ενεργοποίησης και ρυθμού εκμάθησης Το μεγαλύτερο ποσοστό (96%) το πετύχαμε για ρυθμό εκμάθησης 0.5 με ένα δίκτυο που αποτελούνταν από 10 φίλτρα και μόνο ένα πλήρως συνδεδεμένο επίπεδο. Πρόκειται για ένα άκρως ικανοποιητικό ποσοστό αλλά όχι ιδανικό αφού έχουν επιτευχθεί ακόμα και ποσοστά της τάξης του 99.9%. Για να καταστεί, όμως, αυτό δυνατό απαιτούνται είτε βαθύτερα δίκτυα είτε άλλες τεχνικές εκμάθησης που ξεφεύγουν από τα πλαίσια της συγκεκριμένης εργασίας. Το πρόβλημα της ταξινόμησης ψηφίων είναι αφενός από τα πιο διαδεδομένα αλλά και αφετέρου από τα πιο εύκολα του κλάδου της αναγνώρισης εικόνων. Για να γίνει πλήρως κατανοητή η ικανότητα των βαθιών συνελικτικών δικτύων πρέπει να μελετηθούν και άλλα πιο πολύπλοκα προβλήματα, όπως για παράδειγμα η αναγνώριση και η κατηγοριοποίηση αντικειμένων. 58
6.2 Ταξινόμηση αντικειμένων Cifar10 Η δεύτερη εφαρμογή της βιβλιοθήκης αφορούσε την ταξινόμηση και αναγνώριση αντικειμένων σε εικόνες, πρόβλημα σαφώς πολυπλοκότερο από τους χειρόγραφους αριθμούς. Το σύνολο εκπαίδευσης που επιλέχθηκε ονομάζεται Cifar10 και αποτελείται από 60000 μικροσκοπικές έγχρωμες εικόνες, μεγέθους 32x32, που απεικονίζουν αντικείμενα 10 διαφορετικών αμοιβαίως αποκλεισμένων κλάσεων. Πρόκειται για ένα σύνολο εικόνων που συλλέχθηκε και τροποποιήθηκε από το καναδέζικο ινστιτούτο προχωρημένης έρευνας (CIFAR) και συγκεκριμένα από τους Alex Krizhevsky, Vinod Nair, και Geoffrey Hinton και χωρίζεται σε 6 υποσύνολα των 10.000 εικόνων. Τα 5 υποσύνολα, δηλαδή οι 50.000 εικόνες, αποτελούν το σύνολο εκπαίδευσης, ενώ οι υπόλοιπες 10.000 αποτελούν το σύνολο αξιολόγησης. Εικόνα 17: Εικόνες CIFAR10 Επειδή οι εικόνες του συνόλου είναι έγχρωμες, αποτελούνται δηλαδή από 3 κανάλια (RGB), και η βιβλιοθήκη δέχεται εικόνες ενός μόνου καναλιού, ήταν απαραίτητο να μετατραπούν σε ένα κανάλι (grayscale), κάτι που έγινε με τη βοήθεια της OpenCV και της αντίστοιχης μεθόδου της. Όταν ολοκληρώθηκε η πρoεπεξεργασία τους, φορτώθηκαν στο δίκτυο για να αρχίζει η εκπαίδευση του δικτύου. Όπως και στην περίπτωση της MNIST, δοκιμάστηκαν πολλές διαφορετικές αρχιτεκτονικές με διάφορες παραμέτρους, ώστε να βρεθεί αυτή που θα έχει την υψηλότερη απόδοση και θα ταξινομεί τις εικόνες με τη μεγαλύτερη δυνατή ακρίβεια. Τα αποτελέσματα παρατίθενται συνοπτικά στους παρακάτω πίνακες: 59