Professional Documents
Culture Documents
ΒΑΘΙΑ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ ΣΤΗΝ ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ ΑΝΔΡΕΑΣ ΚΑΣΣΩΤΑΚΗΣ
ΒΑΘΙΑ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ ΣΤΗΝ ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ ΑΝΔΡΕΑΣ ΚΑΣΣΩΤΑΚΗΣ
ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΞΕΙΔΙΚΕΥΣΗ
ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ
ΚΑΣΣΩΤΑΚΗΣ ΑΝΔΡΕΑΣ
ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ
Δρ. ΡΕΦΑΝΙΔΗΣ ΙΩΑΝΝΗΣ
ΠΑΤΡΑ
ΙΟΥΛΙΟΣ , 2018
© Ελληνικό Ανοικτό Πανεπιστήμιο, 2018
Η παρούσα Εργασία καθώς και τα αποτελέσματα αυτής, αποτελούν συνιδιοκτησία του ΕΑΠ και του φοιτητή, ο
καθένας από τους οποίους έχει το δικαίωμα ανεξάρτητης χρήσης, αναπαραγωγής και αναδιανομής τους (στο
σύνολο ή τμηματικά) για διδακτικούς και ερευνητικούς σκοπούς, σε κάθε περίπτωση αναφέροντας τον τίτλο
και το συγγραφέα της Εργασίας καθώς και το όνομα του ΕΑΠ όπου εκπονήθηκε.
ΒΑΘΙΑ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ
ΣΤΗΝ ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ
Ανδρέας Κασσωτάκης
Στον Βαγγέλη,
που δεν καταλάβαινε
τι λέγαν τα κομπιούτερ και οι αριθμοί
Διπλωματική Εργασία iv
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Περίληψη
Στην παρούσα εργασία μελετήθηκε η δυνατότητα επεξεργασίας της φυσικής γλώσσας με την
χρήση νευρωνικών δικτύων. Τα τελευταία χρόνια τα βαθιά νευρωνικά δίκτυα δηλαδή τα
νευρωνικά δίκτυα πολλών επιπέδων, έχουν επιτύχει αξιοσημείωτες επιδόσεις στο χώρο της
μηχανικής μάθησης και ιδιαίτερα της επιβλεπόμενης μάθησης. Ένας από τους χώρους
εφαρμογής τους είναι η επεξεργασία της φυσικής γλώσσας. Η επεξεργασία φυσικής
γλώσσας περιλαμβάνει τομείς όπως αυτόματη μετάφραση, περίληψη, ταξινόμηση κειμένου
κ.α. Στην εργασία μελετήθηκε το πρόβλημα της ταξινόμησης κειμένου με βάση το
συναίσθημα και ιδιαίτερα αν το κείμενο περιέχει θετικό ή αρνητικό συναίσθημα.
Για την δημιουργία του νευρωνικού δικτύου, αναπτύχθηκε λογισμικό σε γλώσσα
Προγραμματισμού Python με τη χρήση της βιβλιοθήκης Tensorflow η οποία αναπτύχθηκε
από την Google ΑΙ για τον σκοπό αυτό. Η βιβλιοθήκη Tensorflow παρέχει όλες τις μεθόδους
που χρησιμοποιούνται για την υλοποίηση της βαθιάς μάθησης όπως, συναρτήσεις
ενεργοποιήσεως, του αλγορίθμου οπισθοδιάδοσης και στοχαστικών αλγορίθμων
βελτιστοποίησης.
Για την υλοποίηση της εργασίας χρησιμοποιήθηκαν δεδομένα κειμένου τα οποία
αντλήθηκαν από διάφορους διαδικτυακούς χώρους, επεξεργάστηκαν και με την μέθοδο της
¨σακούλας λέξεων¨ δημιουργήθηκε ένα λεξικό το οποίο χρησιμοποιήθηκε για την
εκπαίδευση ενός νευρωνικού δικτύου. Το δίκτυο αποτελείται από ένα επίπεδο εισόδου,
τριών κρυφών επίπεδων και ενός επιπέδου εξόδου.
Τέλος, μελετήθηκε η απόδοση του δικτύου με βάση το σετ δεδομένων κειμένου που
χρησιμοποιήθηκε καθώς και με την εισαγωγή δεδομένων κειμένου που δεν είχαν εισαχθεί
ποτέ στο δίκτυο.
Λέξεις – Κλειδιά
Διπλωματική Εργασία v
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Abstract
In this study we studied the possibility of natural language processing using neural networks.
In recent years, deep neural networks, such as multilayer neural networks have achieved
remarkable performance in the field of machine learning and particular in supervised
learning. One of their application areas is the natural language processing. Natural language
processing includes areas such as automatic translation, text summary, word sorting, e.t.c.
This work studied the problem of sentiment analysis, especially if the text contains positive
or negative emotions.
For the construction of the neural network, Python Programming Software was developed
using the Tensorflow library developed by Google Al for this purpose. The Tensorflow library
provides all the methods used to implement deep learning such as activation functions, Back
Propagation algorithms, and stochastic optimization algorithms.
For the implementation of the study, text data that were drawn from various web sites were
processed, and with the “bag of words” method, a dictionary was created which was used to
train a neural network. The network consists of an input layer, three hidden layers and one
output layer.
Finally, the network performance was studied based on the text data set which was used as
well as the input of text data that had never been imported into the network.
Keywords
Machine Learning, Neural Networks, Supervised Learning Deep Neural Networks, Deep
Learning, Bag of words, Tensorflow.
Διπλωματική Εργασία vi
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Περιεχόμενα
1. Εισαγωγή........................................................................................................................1
1.1 Σκοπός……......……………………………………………………...…...……………1
1.2 Ιστορική αναδρομή……………….………………………………...………………….1
2 Νευρωνικά Δίκτυα Μηχανική Μάθηση και επεξεργασία φυσικής γλώσσας …..……5
2.1 Νευρωνικά Δίκτυα……….…………………………………………..……………… 5
2.2 Βιολογικός Νευρώνας………………..……………………………………….……….5
2.3 Τεχνητός Νευρώνας……… …………………………………………………………7
2.3.1 Το μοντέλο McCulloch-Pitts………………….……………………………………….8
2.3.2 Το μοντέλο Perceptron………………………………………….……………………10
2.4 Το μοντέλο Perceptron πολλών στρωμάτων(MLP).…………...…………………….15
2.4.1 Λειτουργία κρυφών νευρώνων……………………………...………………………..17
2.4.2 Δυνατότητες Δικτύων Perceptron πολλών στρωμάτων……………………………..18
2.5 Αρχιτεκτονικές Δικτύων …………………………………………………………….19
2.5.1 Γενικά ……………………………………………………………………….……….19
2.5.2 Δίκτυα πρόσθιας τροφοδότησης ενός επιπέδου.....…………………………………..19
2.5.3 Πολυεπίπεδα δίκτυα πρόσθιας τροφοδότησης ………………………………………20
2.5.4 Αναδρομικά Νευρωνικά Δίκτυα …………………………………………………….21
2.6 Μηχανική Μάθηση…………………………..………………………………………21
2.6.1 Διαδικασίες Μάθησης…………………….………………………………………….21
2.6.2 Επιβλεπόμενη Μάθηση……………………………...……………………………….22
2.6.3 Μη επιβλεπόμενη Μάθηση (uunsupervised learning)……………..…...……………23
2.6.4 Ενισχυτική Μάθηση (Reinforcement Learning)..……………...…………………….24
2.6.5 Μαζική και on-line μάθηση…….…..……………………..…………………………24
2.7 Εκπαίδευση Νευρωνικών Δικτύων……..……………………………………………25
2.7.1 Κανόνας Δέλτα……………………………………………………………..………...25
2.7.3 Αλγόριθμος Back-Propagation……………………………………………………….25
2.7.3.1 Ρυθμός μάθησης……………..……………………………………………………….27
2.7.3.2 Κριτήριο τερματισμού…………………………………………….………………….27
2.7.3.3 Αρχικοποίηση των βαρών………………………….……………….………………..28
2.7.3.4 Τοπικά Ελάχιστα…………………………………..…………………………………28
2.8 Επεξεργασία Φυσικής Γλώσσας(Natural Language Processing NLP)………………29
2.8.1 Γενικά………………………………………………………………….……………..29
2.8.2 Ταξινόμηση κειμένου (text classification)...…….…………………………..…...…. 30
2.9 Βαθιά Μηχανική Μάθηση (Deep Learning)……………………...…………………..32
2.9.1 Γενικά………………………..……………………………………………………….32
2.9.2 Το πρόβλημα της ταξινόμησης ……………..……………………………………….33
2.9.3 Αρχικοποίηση βαρών………..……………………………………………………….36
2.9.4 Στοχαστική βελτιστοποίηση (Stochastic optimization).……….…………………….37
2.9.5 Υπερπροσαρμογή (overfitting)……………………………………………………….40
2.9.6 Απόρριψη (Dropout).………..……………………………………………………….42
2.9.7 Πολυπλοκότητα γραμμικών μοντέλων .….………………………………………….46
Κατάλογος εικόνων
Διπλωματική Εργασία ix
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Εικόνα 25 : Υπερπροσαρμογή……………………………………………………..…………43
Εικόνα 26 : Υπερπροσαρμογή συνάρτηση κόστους…………………………………………43
Εικόνα 27 : Dropout με απόρριψη 0.5………………………………….……………………45
Εικόνα 28 : Υπολογισμός πολυπλοκότητας μοντέλου Xw+b ………….……………………46
Εικόνα 29 : Συνάρτηση ReLu………………………………………………………..………47
Εικόνα 30 : Παράγωγος ReLu ……………………………………………….………………47
Εικόνα 31 : Νευρωνικό δίκτυο 2 επιπέδων …………………………….……………………48
Εικόνα 32 : Νευρωνικό δίκτυο 3 επιπέδων ……………………………….…………………48
Εικόνα 33 : Απλοποιημένο μοντέλο 2 επιπέδων………………………………..……………49
Εικόνα 34 : Σχηματική παρουσίαση διαστάσεων τανυστών …………………………...……50
Εικόνα 35 : Σχηματική απεικόνιση Back Propagation ………………………………………51
Εικόνα 36 : Σχηματική παράσταση διαστάσεων τανυστών…………………………….……54
Εικόνα 37 : Τρεις λειτουργίες προστίθενται στο γράφημα όταν αρχικοποιούμε μια μεταβλητή
από Tensorflow ……………………………………………………………………...………56
Εικόνα 38 : Παράδειγμα απλού υπολογιστικού γράφου…..…………………………………59
Εικόνα 39 : Νευρωνικό δίκτυο 3 κρυφών επιπέδων…………………………………………61
Εικόνα 40 : Bag of Words……………………………………………………………………63
Εικόνα 41 : Διαχωρισμός δεδομένων εκπαίδευσης με δεδομένων επαλήθευσης……………65
Εικόνα 42 : Αρχιτεκτονική Δικτύου χωρίς επίπεδο εισόδου………………………………...67
Εικόνα 43 : Εντολή στο τερματικό για εισαγωγή στο Tensorboard…………………………68
Εικόνα 44 : Ο κύριος Γράφος του Δικτύου……………………..……………………………69
Εικόνα 45 : Συστατικά της Loss Function …………………………..………………………70
Εικόνα 46 : Εκπαίδευση σε σχέση με το χρόνο…………………...…………………………70
Εικόνα 47 : Γράφημα κόστους…………………………………………………….…………71
Εικόνα 48 : Γράφημα κόστους με Λεπτομέρεια …………………….………………………72
Εικόνα 49 : Τιμές βαρών, τάσεων και ενεργοποίησης (Τιμές 1ου κρυφού επιπέδου)………..73
Εικόνα 50 : Τιμές 2ου κρυφού επιπέδου…………………………………………...…………74
Εικόνα 51 : Τιμές 3ου κρυφού επιπέδου…………………………………………...…………75
Διπλωματική Εργασία x
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Κατάλογος πινάκων
Διπλωματική Εργασία xi
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
1. Εισαγωγή
1.1 Σκοπός
Σκοπός της παρούσας διπλωματικής είναι η μελέτη νευρωνικών δικτύων και ιδιαίτερα μιας
κατηγορίας νευρωνικών δικτύων πολλών στρωμάτων (Multi-Layer Perceptron ή MLP)
πλήρως συνδεδεμένο (fully connected) πρόσθιας τροφοδότησης (Feed forward) γνωστά ως
βαθιά νευρωνικά δίκτυα (Deep Neural Networks). Θα υλοποιηθεί ένα Νευρωνικό Δίκτυο
χρησιμοποιώντας μια βιβλιοθήκη της Python γνωστής ως TensorFlow για την μελέτη του
προβλήματος ανάλυσης και ταξινόμησης συναισθήματος (sentiment analysis), το οποίο θα
είναι στην Ελληνική Γλώσσα.
Η Τεχνητή Νοημοσύνη (Artificial Intelligence), είναι μία από τις νεότερες επιστήμες η οποία
μελετά τον τρόπο με τον οποίο ο άνθρωπος σκέπτεται αντιλαμβάνεται κατανοεί το περιβάλλον
και πως αλληλοεπιδρά με αυτό και ασχολείται με το πώς θα δημιουργηθούν μηχανές –
υπολογιστές οι οποίες υλοποιούν αυτές τις δυνατότητες (Russel, Norving, 2003). Πολλές
επιστήμες όπως η Φιλοσοφία, τα Μαθηματικά, τα Οικονομικά, οι Νευρωεπιστήμες, η
Ψυχολογία και η Γλωσσολογία ασχολήθηκαν με το πώς λειτουργεί η Νοημοσύνη είτε σε
φυσικό είτε σε θεωρητικό επίπεδο, με το πως πραγματοποιείται η λήψη μιας απόφασης η
κατανόηση ενός ακουστικού μηνύματος και η οπτική αναγνώριση ενός αντικειμένου. Πρώτος
ο Έλληνας Φιλόσοφος Αριστοτέλης (384- 322 π.Χ.) διατύπωσε ένα ακριβές σύνολο νόμων
που διέπουν το ορθολογικό μέρος της νόησης. Ανέπτυξε ένα άτυπο σύστημα συλλογισμών για
τη σωστή συλλογιστική, οι οποίοι θεωρητικά επέτρεπαν να παράγει κάνεις συμπεράσματα
μηχανικά με δεδομένες κάποιες αρχικές υποθέσεις. Θεωρείται ο πατέρας του πρώτού
αλγορίθμου ο οποίος αναπτύχθηκε 2300 χρόνια αργότερα από τους Newell και Simon.
Διπλωματική Εργασία 1
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
εξεταστής ο οποίος έκανε με ένα υπολογιστή κάποιες ερωτήσεις. Σε δυο δωμάτια υπάρχουν
ένας άνθρωπος ο οποίος χειρίζεται έναν υπολογιστή και ένας υπολογιστής ο οποίος τρέχει ένα
έξυπνο πρόγραμμα. Ο εξεταστής κάνοντας ερωτήσεις στα δυο δωμάτια πρέπει αναλόγως τις
απαντήσεις να καταλάβει σε ποιο δωμάτιο είναι ο υπολογιστής. Αν δεν το καταλάβει, δηλαδή
αν οι απαντήσεις δεν προδώσουν τον υπολογιστή, τότε ο υπολογιστής έχει ανθρώπινη
νοημοσύνη.
Για πρώτη φορά το 1943 οι καθηγητές Warren McCulloch Νευροφυσιολόγος και Warren Pitts
Μαθηματικός στην εργασία τους με τίτλο A Logical Calculus of the ideas immanent in nervous
activity (Ένας Λογικός Λογισμός των ιδεών που εμφανίζονται σε νευρική δραστηριότητα)
αναπαρέστησαν τεχνητά με βάση τις γνώσεις της φυσιολογίας των ανθρώπινων Νευρώνων ένα
μοντέλο τεχνητών Νευρώνων όπου ο κάθε νευρώνας είναι Ενεργός ή όχι. To 1949 o Hebb
παρουσίασε τον πρώτο κανόνα αυτο-οργανούμενης μάθησης η οποία είναι γνωστή και ως
μάθηση Hebb. Το 1951 δυο μεταπτυχιακοί φοιτητές του Princeton Marvin Minsky και Dean
Edmonds κατασκεύασαν τον πρώτο υπολογιστή Νευρωνικού δικτύου SNARC ο οποίος
χρησιμοποιούσε 3000 λυχνίες κενού και ένα μηχανισμό αυτόματου πιλότου από
βομβαρδιστικό B-24 για να προσομοιώσει ένα δίκτυο 40 Νευρώνων. Το 1957 δημιουργείται
από τον McCarthy η ονομασία Τεχνητή Νοημοσύνη σε μία συνάντηση επιστημόνων στο
Dartmouth. Το ίδιο έτος γεννήθηκε και η Natural Language Processing (NLP) ή επεξεργασία
φυσικής γλώσσας.
Ένα χρόνο μετά τη γέννηση του όρου Τεχνητή νοημοσύνη τo 1958 ο Frank Rosenblatt
παρουσιάζει το δίκτυο perceptron, ένα βελτιωμένο μοντέλο McCulloch – Pitts. Παρόλα αυτά
ο αλγόριθμος εκπαίδευσης perceptron είχε περιορισμένες δυνατότητες οι οποίες λύθηκαν με
την εισαγωγή του αλγόριθμου Back Propagation. Το 1974 προτάθηκε από τον Paul Werbos
στην εργασία του P. J. Werbos. Beyond Regression: New Tools for Prediction and Analysis in
the Behavioral Sciences. PhD thesis, Harvard University, ο αλγόριθμος Back Propagation στα
πλαίσια της ανάλυσης μοντέλων οικονομικής και πολιτικής πρόβλεψης. Παρόλο που δεν είχε
σχεδιαστεί για ανάγκες νευρωνικών δικτύων, την δεκαετία του 80 έγινε αντιληπτός κι
μεταφέρθηκε αυτούσιος στην εκπαίδευση νευρωνικών δικτύων όπου αποτελεί πλέον την η πιο
διαδεδομένη μέθοδος για την εκπαίδευση των νευρωνικών δικτύων. Τη δεκαετία του 1980
Διπλωματική Εργασία 2
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Το 1990 ο Ολλανδός Guido van Rossum δημιούργησε μια υψηλού επιπέδου γλώσσα
προγραμματισμού την Python. Κύριος στόχος της είναι η αναγνωσιμότητα του κώδικά της και
η ευκολία χρήσης της. Το συντακτικό της επιτρέπει στους προγραμματιστές να εκφράσουν
έννοιες σε λιγότερες γραμμές κώδικα απ’ ότι θα ήταν δυνατόν σε γλώσσες όπως η C η C++ ή
Java. Διακρίνεται λόγω του ότι έχει πολλές βιβλιοθήκες που διευκολύνουν ιδιαίτερα αρκετές
συνηθισμένες εργασίες και για την ταχύτητα εκμάθησης της. Η γλώσσα Python θεωρείται
γλώσσα τεχνητής Νοημοσύνης τείνει να αντικαταστήσει την γλώσσα προγραμματισμού LISP
που δημιουργήθηκε μόνο για το σκοπό αυτό. Τέλος η απλότητα της καθώς και το γεγονός ότι
δεν ανήκει καθαρά στις γλώσσες προγραμματισμού αντικειμενοστραφούς ή συναρτησιακής
λογικής αλλά μπορεί να υλοποιήσει τέτοιου είδους προγράμματα την καθιστούν πολύ ισχυρή
γλώσσα που σε συνδυασμό με το πλήθος των βιβλιοθηκών της συναγωνίζεται άλλες γλώσσες
όπως η JAVA, C#,C++.
Διπλωματική Εργασία 3
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
αυτόματη μετάφραση, καθώς και την ανάλυση συναισθήματος (sentiment analysis) που θα
μελετηθεί στην παρούσα διπλωματική.
Διπλωματική Εργασία 4
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Ο Νευρώνας (Εικόνα 1) αποτελεί το βασικό δομικό στοιχείο του νευρικού συστήματος ενός
οργανισμού (Διαμαντάρας 2007). Είναι ένα μεγάλο σχετικά κύτταρο σε σύγκριση με άλλα
κύτταρα που συναντάμε σε έναν οργανισμό και αποτελείται από:
Διπλωματική Εργασία 5
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
γ) Τον νευράξονα ή άξονα : ονομάζεται και νευρίτης ή απλά άξονας, είναι μια λεπτή
ίνα που μπορεί να είναι μέχρι και δεκάδες χιλιάδες φορές μεγαλύτερη σε μήκος από τη
διάμετρο του σώματος. Το μήκος της μπορεί να φτάσει και το 1 μέτρο. Αυτή η δομή μεταφέρει
τα νευρικά σήματα από τον νευρώνα. Κάθε νευρώνας διαθέτει μόνο έναν άξονα, αλλά αυτός
ο άξονας μπορεί να διακλαδίζεται έντονα, με ώστε να επιτυγχάνεται η επικοινωνία με πολλά
κύτταρα-στόχους. Εκεί που τελειώνει ο άξονας υπάρχουν σημαντικά στοιχεία, τα τελικά
κομβία, που χρειάζονται για την μεταφορά των πληροφοριών προς άλλους δενδρίτες άλλων
νευρώνων. Οι περισσότεροι νευράξονες είναι μονωμένοι με έλυτρα μυελίνης.
Διπλωματική Εργασία 6
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Ο ανθρώπινος εγκέφαλος αποτελείται από 100 δισεκατομμύρια νευρώνες και κάθε νευρώνας
έχει περίπου 1000 συνάψεις. Οι περίπου 100 τρισεκατομμύρια συνάψεις καθιστούν τον
ανθρώπινο εγκέφαλο να εκτελεί λειτουργίες που όλες μαζί οδηγούν στην Νοημοσύνη. Αυτές
μπορεί να είναι η αναγνώριση εικόνων, η μνήμη, η αναγνώριση φωνής και κατανόηση
φυσικής γλώσσας, η αντίληψη και κίνηση στον χώρο, η λήψη Αποφάσεων και η μάθηση και
προσαρμογή σε νέα περιβάλλοντα και καταστάσεις.
Βασική αρχή της τεχνητής νοημοσύνης είναι η ύπαρξη ενός υλικού στρώματος πάνω στο οποίο
εκτελούνται όλες οι λειτουργίες που αναφέρθηκαν στην προηγούμενη παράγραφο. Στον
άνθρωπο και στα ζώα το υλικό αυτό είναι οι νευρώνες και η δομή του υλικού είναι ένα πυκνό
δίκτυο μεταξύ των νευρώνων με εκατοντάδες έως χιλιάδες συνάψεις ανά νευρώνα. Το
αντικείμενο της μελέτης της τεχνητής νοημοσύνης είναι η ανάπτυξη ενός υλικού το οποίο θα
μπορεί να υποστηρίξει τις παραπάνω επιθυμητές λειτουργίες άσχετα αν αυτό το υλικό μιμείται
τους νευρώνες η όχι, με την ανάπτυξη αλγορίθμων που θα μιμούνται αυτές τις λειτουργίες
δηλαδή θα κάνουν αναγνώριση .
Διπλωματική Εργασία 7
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Τα τεχνητά νευρωνικά δίκτια είναι μοντέλα που μιμούνται τη λειτουργία των βιολογικών
νευρώνων και τη δομή των βιολογικών νευρωνικών δικτύων και το αντικείμενο του είναι η
ανάπτυξη και η μελέτη μαθηματικών αλγορίθμων που μιμούνται ένα πραγματικό βιολογικό
νευρωνικό δίκτυο.
Στην εικόνα 3 αναπαρίσταται το μοντέλο McCulloch-Pitts το οποίο δεν διαφέρει και πολύ με
το μοντέλο Perceptron του Rosenblat όπως θα αναλυθεί στις επόμενες παραγράφους. Οι
δενδρίτες είναι οι εισόδοι 𝑥0 , 𝑥1 , … , 𝑥𝑚 . Οι τιμές 𝑤𝑘0 𝑤𝑘1 𝑤𝑘2,…….. 𝑤𝑘𝑚 είναι πραγματικοί
αριθμοί, θετικοί ονομάζονται συναπτικά βάρη και είναι θετικές για τις ενισχυτικές συνάψεις
και αρνητικές για τις ανασταλτικές συνάψεις. Το σώμα του νευρώνα αναπαρίσταται από την
𝑢𝑘 και την συνάρτηση φ(.) οπού:
Διπλωματική Εργασία 8
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
𝑚 𝑚
y=φ(u-θ) (2)
Διπλωματική Εργασία 9
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 10
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
1. Τις συνάψεις με κάθε μια από αυτές να έχει το δικό της Βάρος (Weight)
3. Μια συνάρτηση ενεργοποίησης (Activation Function) για τον περιορισμό του πλάτους
σήματος εξόδου του νευρώνα το οποίο συνήθως παίρνει τις τιμές [0,1] ή [-1,1]
4. Την πόλωση (bias) η οποία ανάλογα με το αν είναι θετική ή αρνητική έχει ως αποτέλεσμα
την αύξηση ή μείωση της δικτυακής διέγερσής της συνάρτησης ενεργοποίησης.
𝑢 = ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 − 𝜃
𝑖=1
με y=f(u) (3)
𝑦 = 𝑓 (∑ 𝑤𝑘𝑖 𝑥𝑖 − 𝜃) (4)
𝑖=1
Διπλωματική Εργασία 11
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
𝑢 = 0, ά𝜈 ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 = 𝜃
𝑖=1
Η συνάρτηση ενεργοποίησης f(.) τροφοδοτείται από τη διέγερση u και δίδει την έξοδο y του
νευρώνα. Είναι μη γραμμική και ειδικά στο Perceptron παίρνει μια από τις παρακάτω δύο
μορφές.
1, 𝛼𝜈 𝑢 > 0
𝑓(𝑥) = {
0, 𝛼𝜈 𝑢 ≤ 0
1, 𝛼𝜈 𝑢 > 0
𝑓(𝑥) = {
−1, 𝛼𝜈 𝑢 ≤ 0
Η έξοδος y έχει αποτέλεσμα είτε την κλασική μορφή (1/0) ή τη διπολική μορφή (1/-1). Η
συμπεριφορά του νευρώνα είναι το διάνυσμα των συναπτικών βαρών:
Διπλωματική Εργασία 12
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
𝑢 = ∑ 𝑤𝑖 𝑥𝑖 + 𝑤0 𝑥0 (5)
𝑖=1
𝑢 = ∑ 𝑤𝑖 𝑥𝑖 (6)
𝑖=0
Έτσι εισάγεται μία είσοδος 𝑥0 με σταθερή τιμή -1. Προκύπτει ότι το διάνυσμα εισόδου :
𝑥 = [𝑥0 , 𝑥1 , 𝑥2 , … … . . , 𝑥𝑛 ]𝑇 (7)
είναι n+1 αντί για n. Έτσι με τον ανωτέρω μετασχηματισμό συνηθίζεται να χρησιμοποιείται
την εξίσωση 5 διότι όλες οι παράμετροι είναι ομοιογενοποιημένες στο διάνυσμα παραμέτρων:
𝑊 = [𝑤0 , 𝑤1 , 𝑤2 , … … . . , 𝑤𝑛 ]𝑇 (8)
και το κατώφλι ενεργοποίησης αντιμετωπίζεται με τον ίδιο τρόπο όπως τα συναπτικά βάρη.
Το ίδιο ομογενοποιημένο αποτέλεσμα θα επιτύχουμε αν ορίσουμε 𝑤0 = −𝜃 και 𝑥0 = 1. Στη
περίπτωση αυτή ισχύει η εξίσωση 5 απλά το συναπτικό βάρος 𝑤0 είναι το αντίθετο του
κατωφλιού και ονομάζεται πόλωση (bias) και η είσοδος θα ισούται με 𝑥0 =1.
𝑢 = 𝑊 𝑇 𝑋 (9)
Η μορφή της συνάρτησης μεταφοράς (η τιμή y σε συνάρτηση του x) εξαρτάται από την τιμή
της διέγερσης u και από την επιλογή της συνάρτησης f(.). Αν χρησιμοποιηθεί η συνάρτηση
ενεργοποίησης (1/0) τότε y=1 αν u>0 και y=0 αν u≤0 η εξίσωση :
𝑚
Διπλωματική Εργασία 13
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
αντιστοιχούν σε αρνητικές τιμές u<0 βρίσκονται στην απέναντι πλευρά του υπερεπιπέδου. Τα
σημεία με u=0 είναι πάνω στο υπερ-επίπεδο. Το υπερεπίπεδο u=0 χωρίζει τον χώρο (ℝ𝑛 ) σε
δυο μέρη τον ένα με y=1 και σε άλλο με y=0.
Το δίκτυο Perceptron λύνει προβλήματα ταξινόμησης. Δηλαδή παίρνουμε δύο κλάσεις στις
οποίες πρέπει να επιλέξουμε κάποια χαρακτηριστικά (features). Έστω ότι έχουμε τα
χαρακτηριστικά 𝑥1, 𝑥2 . Το διάνυσμα των χαρακτηριστικών της κλάσης 𝑋 = [𝑥1 , 𝑥2 ]𝑇
ονομάζεται πρότυπο. Αν σχεδιαστούν για τα πρότυπα 𝑋1, 𝑋2 σε επίπεδο χώρο θα έχουμε
κατανομές όπως την εικόνα 6. Έτσι από τις διαφορετικές κατανομές είναι δυνατό να βρεθεί
μια διαχωριστική ευθεία που να χωρίζει τις δυο κλάσεις. Σε αυτή την περίπτωση οι κλάσεις
λέγονται γραμμικά διαχωρίσιμες. Το πρόβλημα όπως παρουσιάζεται από την εικόνα 6 έχει
πολλές λύσεις αφού υπάρχουν πολλές διαχωριστικές γραμμές που μπορούν να λύσουν το
συγκεκριμένο πρόβλημα.
Διπλωματική Εργασία 14
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Εικόνα 6 Μια από τις απειρες διαχωτιστικές γραμμές διαχωρισμού δυο κλάσσεων (Πηγή Διαμανταράς )
Διπλωματική Εργασία 15
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
νευρώνες (κόμβους) του προηγουμένου επιπέδου και με την σειρά του συνδέει όλους τους
νευρώνες του επόμενου.
α. Τον υπολογισμό του σήματος που εμφανίζεται στην έξοδό του κάθε νευρώνα ο οποίος
εκφράζεται ως μια συνεχή μη γραμμική συνάρτηση του σήματος εισόδου και των συναπτικών
βαρών που σχετίζονται με αυτό τον νευρώνα.
Διπλωματική Εργασία 16
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
β. Τον υπολογισμό μιας εκτίμησης του διανύσματος κλίσης (των κλίσεων της
επιφάνειας σφάλματος σε σχέση με τα βάρη που είναι συνδεδεμένα στις εισόδους ενός
νευρώνα) ο οποίος χρειάζεται για τη φάση που εξελίσσεται προς τα πίσω στο δίκτυο.
Διπλωματική Εργασία 17
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
1. Σήματα λειτουργιών (Function signals) : Ένα σήμα εισόδου το οποίο φτάνει στην είσοδο
του δικτύου, διαδίδεται προς τα εμπρός (από νευρώνα προς νευρώνα) σε όλο το δίκτυο και
εμφανίζεται στην έξοδο του δικτύου σαν σήμα εξόδου. Σε κάθε νευρώνα του δικτύου διαμέσου
του οποίου διέρχεται ένα σήμα εισόδου, το σήμα αυτό υπολογίζεται ως συνάρτηση των εισόδων
και των σχετιζόμενων βαρών που εφαρμόζονται σε αυτό το νευρώνα .
2. Σηματα Σφάλματος (error signal) προέρχονται από ένα νευρώνα εξόδου του δικτύου και
διαδίδεται προς τα πίσω (επίπεδο προς επίπεδο) δια μέσω του δικτύου. Αποκαλείται έτσι διότι
ο υπολογισμός του από κάθε νευρώνα του δικτύου απαιτεί τη χρήση μιας εξαρτώμενης από το
σφάλμα συνάρτησης με τη μία η την άλλη μορφή.
1
𝑓(𝑢) = (11)
(1 + 𝑒 −𝑢 )
(𝑒 𝑢 − 𝑒 −𝑢 )
tanh(𝑢) = (12)
(𝑒 𝑢 + 𝑒 −𝑢 )
Διπλωματική Εργασία 18
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
2.5.1 Γενικά
Ο τρόπος με τον οποίο είναι δομημένοι οι νευρώνες ενός νευρωνικού δικτύου σχετίζεται στενά
με τον αλγόριθμο μάθησης που χρησιμοποιείται για την εκπαίδευση του δικτύου. Άρα
πρόκειται για δομημένους αλγόριθμους μάθησης (Simon Haykin, 2009).
Διπλωματική Εργασία 19
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Χαρακτηρίζεται από την παρουσία ενός η περισσοτέρων κρυφών επιπέδων των οποίων οι
υπολογιστικοί κόμβοι αποκαλούνται κρυφοί νευρώνες. Η λειτουργία των κρυφών νευρώνων
είναι να παρεμβαίνουν μεταξύ της εξωτερικά προερχόμενης εισόδου και της εξόδου του δικτιού
με κάποιο χρήσιμο τρόπο. Προσθέτοντας ένα η περισσότερα κρυφά επίπεδα δίδεται η
δυνατότητα εξαγωγής στατιστικών υψηλότερης τάξης από την είσοδό του. Οι πηγαίοι κόμβοι
παρέχουν τα στοιχεία του πρότυπου ενεργοποίησης που έχουμε ορίσει (διανύσματα εισόδου)
τα οποία εισάγονται στο πρώτο κρυφό επίπεδο νευρώνων, υπολογίζονται και τροφοδοτούν το
επόμενο κρυφό επίπεδο. Γενικά οι Νευρώνες στα Πολυεπίπεδα δίκτυα πρόσθιάς τροφοδότησης
τροφοδοτούν με τα σήματα εξόδου τους τα επόμενα επίπεδα και τροφοδοτούνται από τα
σήματα εξόδου των προηγουμένων επιπέδων. Ένα τέτοιο δίκτυο είναι αυτό της εικόνας 7 και
ένα τέτοιο δίκτυο θα χρησιμοποιηθεί στην παρούσα εργασία.
Διπλωματική Εργασία 20
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διαφέρει από ένα νευρωνικό δίκτυο πρόσθιας τροφοδότησης λόγω του ότι έχει τουλάχιστον
ένα βρόγχο ανάδρασης. Όπως φαίνεται στην εικόνα 11 η έξοδος ενός νευρώνα τροφοδοτεί την
είσοδο των νευρώνων του επιπέδου του είτε άλλα προηγούμενα επίπεδα. Τα αναδρομικά δίκτυα
μπορεί να είναι ενός ή και πολλών επιπέδων. Δε θα εξεταστούν στην παρούσα διπλωματική.
Ονομάζονται και Hopfield από τον John Hopfield που τα εισήγαγε το 1982.
Διπλωματική Εργασία 21
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
αυτής χαρακτηρίζει τα λεγόμενα ευφυή συστήματα που δεν ανήκουν απαραίτητα στα
νευρωνικά δίκτυα. Η ικανότητα της μάθησης και της αυτοπροσαρμογής θεωρείται βασικό
συστατικό της ευφυΐας. Ένα αυτόματο σύστημα που μαθαίνει η εκπαιδεύεται χρησιμοποιώντας
κάποια πρότυπα εισόδου λέγεται μηχανή μάθησης. Τα νευρωνικά δίκτυα αποτελούν τυπικές
περιπτώσεις μηχανών μάθησης. Οι διαδικασίες μάθησης στα νευρωνικά δίκτυα χωρίζονται σε
δυο μεγάλες κατηγορίες. Η πρώτη είναι η μάθηση με εκπαιδευτή ή αλλιώς επιβλεπόμενη
μάθηση και η δεύτερη η μάθηση χωρίς εκπαιδευτή η οποία αποτελείται από δύο
υποκατηγορίες, την μη επιβλεπόμενη μάθηση και στην ενισχυτική μάθηση.
Η επιβλεπόμενη μάθηση βασίζεται σε έναν εκπαιδευτή που τροφοδοτεί ένα νευρωνικό δίκτυο
την γνώση μέσω παραδειγμάτων (Simon Haykin, 2009). Το νευρωνικό δίκτυο στην αρχική
μορφή (εικόνα 12) του δεν είναι σε θέση να γνωρίζει κάτι. Αντίθετα ο εκπαιδευτής έχει τη
γνώση και την τροφοδοτεί μέσω παραδειγμάτων εισόδου-εξόδου στο νευρωνικό δίκτυο. Το
κάθε παράδειγμα (διάνυσμα εκπαίδευσης) έχει από τον εκπαιδευτή μία επιθυμητή απόκριση.
Η επιθυμητή απόκριση είναι η βέλτιστη ενέργεια που χρειαζόμαστε από το νευρωνικό δίκτυο.
Έτσι, το δίκτυο χωρίς να γνωρίζει τίποτα μέσω των παραδειγμάτων προσαρμόζεται στην
επιθυμητή απόκριση μέσω του σήματος σφάλματος, τη διαφορά δηλαδή της επιθυμητής
απόκρισης και της πραγματικής απόκρισης του δικτύου. Η προσαρμογή εκτελείται με
επαναληπτικό τρόπο έως ότου η διαφορά σφάλματος να μηδενιστεί η να ελαχιστοποιηθεί ώστε
να θεωρείται βέλτιστη με κάποια στατιστική έννοια. Με αυτό τον τρόπο το δίκτυο αποκτά
γνώση.
Διπλωματική Εργασία 22
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Καλείται και αυτο-οργανούμενη μάθηση καθώς δεν υπάρχει εξωτερικός εκπαιδευτής. (Simon
Haykin, 2009). Υπάρχει ένα ανεξάρτητο από την εργασία μέτρο της ποιότητας της
αναπαράστασης που καλείται να μάθει το δίκτυο. Οι ελεύθερες παράμετροι του δικτύου
βελτιστοποιούνται με αυτό το μέτρο. Για την εκτέλεση μπορούμε να χρησιμοποιήσουμε έναν
κανόνα ανταγωνιστικής μάθησης. Στο επίπεδο των νευρωνικών δικτύων δημιουργούμε δυο
εισόδους η μία σαν επίπεδο εισόδου που λαμβάνει τα δεδομένα και η άλλη ως ανταγωνιστικό
επίπεδο, όπου οι νευρώνες ανταγωνίζονται ο ένας με τον άλλο με ένα κανόνα μάθησης, για την
ευκαιρία να ανταποκριθούν στα δεδομένα εισόδου. Το δίκτυο λειτουργεί με την στρατηγική ο
νικητής τα παίρνει όλα, δηλαδή οι νευρώνες με την μεγαλύτερη είσοδο συνολικά νικά και
ενεργοποιείται απενεργοποιώντας τους άλλους.
Διπλωματική Εργασία 23
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Είναι μία εκμάθηση χωρίς παραδείγματα και εκπαιδευτή και υλοποιείται με την αντιστοίχιση
εισόδου - εξόδου μέσω συνεχούς αλληλεπίδρασης με το περιβάλλον, με στόχο την
ελαχιστοποίηση ενός βαθμού τού δείκτη απόδοσης (Simon Haykin,2009). Βασίζεται σε ένα
μηχανισμό που λειτουργεί ως κριτής, ο οποίος μετατρέπει ένα κύριο σήμα ενίσχυσης
λαμβανόμενο από το περιβάλλον, σε ένα σήμα υψηλότερης ενίσχυσης που αποκαλείται
ευρετικό σήμα ενίσχυσης . Ο στόχος της ενισχυτικής μάθησης είναι να ελαχιστοποιήσει μια
συνάρτηση τρέχοντος κόστους. Ως συνάρτηση τρέχοντος κόστους ορίζεται η πρόβλεψη του
αθροιστικού κόστους ενεργειών που εκτελούνται σε μια αλληλουχία βημάτων αντί απλώς του
άμεσου κόστους μιας ενέργειας. Η λειτουργία του συστήματος μάθησής είναι να ανακαλύψει
αυτές τις ενέργειες και να τις τροφοδοτήσει πίσω στο περιβάλλον.
Στη Μαζική μάθηση, μέθοδος επιβλεπόμενής μάθησης, οι προσαρμογές στα συναπτικά βάρη
του Perceptron πολλών επιπέδων εκτελούνται μετά από την παρουσίαση του συνόλου των
παραδειγμάτων του δείγματος εκπαίδευσης (batches) τα οποία συνιστούν μια εποχή (epoch)
εκπαίδευσης (Simon Haykin, 2009). Η συνάρτηση κόστους για την μαζική μάθηση ορίζεται
από την μέση ενέργεια σφάλματος. Οι προσαρμογές στα συναπτικά βάρη του Perceptron
πολλών επιπέδων γίνεται από εποχή προς εποχή με τα δείγματα εκπαίδευσης να δίδονται
τυχαία. Στην On line Μάθηση, επίσης μέθοδο επιβλεπόμενης μάθησης, οι προσαρμογές στα
Διπλωματική Εργασία 24
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
συναπτικά βάρη εκτελούνται παράδειγμα προς παράδειγμα. Η συνάρτηση κόστους είναι προς
ελαχιστοποίηση και είναι η συνολική στιγμιαία ενέργεια σφάλματος. Η μέθοδος που
χρησιμοποιείται για τις προσαρμογές των βαρών ονομάζεται βαθμωτή κατάβαση (gradient
descent). Τα παραδείγματα παρουσιάζονται με τυχαίο τρόπο κι έτσι η αναζήτηση των βαρών
γίνεται στοχαστικά. Ο στοχαστικός χαρακτήρας έχει το πλεονέκτημα ότι μειώνονται οι
πιθανότητες να παγιδευτεί η διαδικασία μάθησης σε τοπικό ελάχιστο. Απαιτεί λιγότερο χώρο
αποθήκευσης από τη μαζική μάθηση.
Με βήμα εκπαίδευσης 𝛽(𝑘) (συνάρτηση του κ) και πρέπει να τείνει προς το μηδέν καθώς
προχωράει η εκπαίδευση. Τέλος το άθροισμα ∑∞
𝜅=0 𝛽(𝜅) δεν πρέπει να είναι πεπερασμένο και
δεν πρέπει να φθίνει εκθετικά προς το μηδέν. O τερματισμός της διαδικασίας μάθησης
πραγματοποιείται όταν το συνολικό σφάλμα Ε για όλα τα παραδείγματα και για όλους τους
νευρώνες εξόδου γίνει μικρότερο από μία τιμή.
Διπλωματική Εργασία 25
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
j=0,1,2….,N(l), l=1,2,3….,L
Τύποι υπολογισμού δ:
Στρώμα l=1,2,3……,L-1
𝑁(𝑖+1)
𝛿𝑖 (𝑘) (𝑙) = 𝑓′ (𝑢𝑖 (𝑘) (𝑙)) ∑𝜇=1 𝑤𝜇𝑖 (𝑘) (𝑙 + 1) 𝛿𝜇 (𝑘) (𝑙 + 1) (16)
Ο αλγόριθμος Back Propagation είναι μια προσέγγισή της κατάβασης δυναμικού η οποία
περιγράφεται από μια δυναμική εξίσωσή παράγωγων:
𝜕𝑗
𝑑𝑤𝑖𝑗 = −𝑑𝑡 (17)
𝜕𝑤𝑖𝑗
𝜕𝑗
𝛥𝑤𝑖𝑗 (𝑘) = 𝑤𝑖𝑗 (𝑘) − 𝑤𝑖𝑗 (𝑘 − 1) = −𝛽 𝜕𝑤 (18)
𝑖,𝑗 (𝑘)
𝛥𝑤𝑖𝑗 ≈ 𝑑𝑤𝑖𝑗
και 𝛽 ≈ 𝑑𝑡
Το βήμα εκπαίδευσης είναι περίπου ίσο με το ελάχιστο βήμα χρόνου 𝑑𝑡. Για να προσεγγιστεί
η πραγματική κατάβαση δυναμικού θα πρέπει το β να παίρνει την ελάχιστη δυνατή τιμή ώστε
ο αλγόριθμος να συγκλίνει στο κοντινότερο τοπικό ελάχιστο. Αν το βήμα εκπαίδευσης είναι
μεγάλο η σύγκλιση θα είναι ταχύτερη αλλά θα έχουμε κακή σύγκλιση ή ακόμα και απόκλιση
Διπλωματική Εργασία 26
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
του αλγορίθμου με τιμές βαρών στο±∞. Προτιμάται μικρό βήμα εκπαίδευσης σε δίκτυα με
πολλές εισόδους ή εισόδους με μεγάλες τιμές ενώ με λίγες εισόδους ή εισόδους με μικρές τιμές
το βήμα εκπαίδευσης να είναι μεγαλύτερο.
Ο αλγόριθμος Backpropagation παρέχει μια προσέγγιση στην τροχιά που διαγράφεται στο
χώρο των βαρών όπως υπολογίζεται από την μέθοδο της πλέον απότομης κατάβασης (steepest
descent). Όσο μικρότερος είναι ο ρυθμός μάθησής τόσο μικρότερες οι αλλαγές στα συναπτικά
βάρη και τόσο ποιο ομαλή η τροχιά των βαρών. Αυτό υλοποιείται με την ορμή ( Momentum).
Όταν η ευκλείδεια νόρμα του διανύσματος κλίσης, συγκλίνει σε ένα μικρό κατώφλι
κλίσης.
Όταν ο απολυτός ρυθμός μεταβολής του μέσου τετραγωνικού σφάλματος ανά εποχή
είναι μικρός.
Εναλλακτικά, ως συνθήκη τερματισμού μπορεί να θεωρηθεί η πραγματοποίηση
ενός συγκεκριμένου αριθμού εποχών εκπαίδευσης ή η πάροδος ενός συγκεκριμένου χρονικού
διαστήματος.
Διπλωματική Εργασία 27
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 28
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
2.8.1 Γενικά
Η Επεξεργασία φυσικής γλώσσας (NLP) είναι ένας κλάδος της επιστήμης των δεδομένων που
αποτελείται από συστηματικές διαδικασίες για την ανάλυση, την κατανόηση και την απόκτηση
πληροφοριών από τα δεδομένα κειμένου με κάποιο έξυπνο και αποτελεσματικό τρόπο
(Gobinda, Ghowdhury 2005). Χρησιμοποιώντας την NLP μέσω των εργαλείων που έχουν
αναπτυχθεί, μπορεί κανείς να οργανώσει δεδομένα κειμένου, να εκτελέσει πολυάριθμες
αυτοματοποιημένες εργασίες και να λύσει ένα ευρύ φάσμα προβλημάτων όπως την αυτόματη
περίληψη, τη μηχανική μετάφραση, την ονομαστική αναγνώριση οντοτήτων, την εξαγωγή
σχέσεων, την ανάλυση συναισθημάτων, και τοποθέτηση θέματος κλπ. με διάφορες διεργασίες
όπως το Tokenization, διαδικασία μετατροπής ενός κειμένου σε tokens, δηλαδή λέξεις ή
οντότητες που υπάρχουν στο κείμενο. Επειδή το κείμενο είναι η πιο αδόμητη μορφή όλων των
διαθέσιμων δεδομένων, υπάρχουν διάφοροι τύποι θορύβου και τα δεδομένα δεν μπορούν
εύκολα να αναλυθούν χωρίς προεπεξεργασία. Προεπεξεργασία είναι μία διαδικασία
καθαρισμού και τυποποίησης του κειμένου, που το καθιστά χωρίς θόρυβο και έτοιμο για
ανάλυση. Κατά την προεπεξεργασία ενός κειμένου ακολουθούνται συνήθως τρία στάδια.
Το πρώτο στάδιο είναι η αφαίρεση θορύβου. Κάθε κομμάτι κειμένου που δεν σχετίζεται με το
περιεχόμενο των δεδομένων και την τελική έξοδο μπορεί να θεωρηθεί ως θόρυβος. Για
παράδειγμα, οι προειδοποιητικές λέξεις γλώσσας (λέξεις-κλειδιά μιας γλώσσας που
χρησιμοποιούνται συχνά), οι διευθύνσεις URL ή οι σύνδεσμοι, οι οντότητες των κοινωνικών
μέσων (αναφορές, τα hashtags), στίγματα και λέξεις που χρησιμοποιούνται σε αυτά αποτελούν
θόρυβο. Μια γενική προσέγγιση για την αφαίρεση του θορύβου είναι η προετοιμασία ενός
Διπλωματική Εργασία 29
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
λεξικού στο οποίο περιέχονται οι λέξεις που θεωρούμε θόρυβο. Έτσι, όταν παρουσιάζεται μια
λέξη στο κείμενο που υπάρχει, το λεξικό θορύβου την εξαλείφει.
Το δεύτερο στάδιο είναι η κανονικοποίηση λεξικών. Πρόκειται για ένα τύπο θορύβου κειμένου
που έγκειται στις πολλαπλές αναπαραστάσεις που παρουσιάζονται με μία λέξη. Για παράδειγμα
- "παίκτες", "έπαιξε", "παίζουν" και "παίζει" προέρχονται όλες από τη λέξη παιχνίδι αν και
έχουν διαφορετική έννοια αλλά με βάση την ετοιμολογία είναι παρόμοιες. Το βήμα μετατρέπει
όλες τις διαφορές μιας λέξης στην ομαλοποιημένη μορφή τους (επίσης γνωστή ως λήμμα). Η
Κανονικοποίηση είναι ένα κεντρικό βήμα για τη μηχανική των χαρακτηριστικών με το κείμενο,
καθώς μετατρέπει τα υψηλά διασταλτικά χαρακτηριστικά (N διαφορετικά χαρακτηριστικά) στο
χώρο των μικρών διαστάσεων (1 χαρακτηριστικό γνώρισμα). Οι πιο συνηθισμένες πρακτικές
ομαλοποίησης λεξικού είναι η Stemming και το Lemmatizer. To Stemming είναι μια
στοιχειώδης διαδικασία βασισμένη στον κανόνα της απογύμνωσης των επιθημάτων ("ίζω",
"ιζεις", "οι", "ωνω" κ.λπ.) από μια λέξη. Δηλαδή όταν στο κείμενο υπάρχουν οι λέξεις ‘Καλός’,
‘Κάλή’, ‘Καλό’, δεν υπολογίζονται ως τρεις διαφορετικές αλλά ως 3 ΄’Καλ’ Και το
Lemmatization, από την άλλη πλευρά, είναι μια οργανωμένη και βήμα προς βήμα διαδικασία
απόκτησης της ριζικής μορφής της λέξης, που χρησιμοποιεί λεξιλόγιο (λεξικό σημασίας
λέξεων) και μορφολογική ανάλυση (δομή λέξεων και γραμματικές σχέσεις).
Η ταξινόμηση κειμένου είναι ένα από τα κλασικά προβλήματα του NLP. Κάποια
παραδείγματα περιλαμβάνουν, ταυτοποίηση ηλεκτρονικού ταχυδρομείου με μηνύματα
Διπλωματική Εργασία 30
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Υπάρχουν πολλές και σημαντικές βιβλιοθήκες NLP στην Python. Μερικές από αυτές είναι η
Scikit-learn που χρησιμοποιείται για εκμάθηση μηχανών στην Python, η Pattern, μια ενότητα
εξόρυξης ιστού για τα εργαλεία NLP και μηχανική μάθηση, το TextBlob ένα εργαλείο API,
χτισμένο πάνω από NLTK και Pattern,το spaCy NLP σε Python και Cython, το Gensim το
οποίο ασχολείται με μοντελοποίηση θεμάτων για ανθρώπους, το Stanford Core NLP -
Υπηρεσίες NLP και πακέτα από την ομάδα NLP του Stanford. Αυτό που θα χρησιμοποιηθεί
Διπλωματική Εργασία 31
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
στην παρούσα διπλωματική είναι το NLTK (Natural Language Toolkit) Εργαλείο φυσικής
γλώσσας το οποίο θεωρείται ως το πιο πλήρες σύνολο εργαλείων για όλες τις τεχνικές NLP.
Το NLTK δημιουργήθηκε αρχικά το 2001 στο πλαίσιο ενός κύκλου μαθημάτων υπολογιστικής
γλωσσολογίας στο Λονδίνο από το Τμήμα Πληροφορικής και Πληροφορικής του
Πανεπιστημίου της Πενσυλβάνιας. Από τότε έχει αναπτυχθεί και επεκταθεί και έχει υιοθετηθεί
σε μαθήματα σε δεκάδες πανεπιστήμια και χρησιμοποιείται ως τη βάση πολλών ερευνητικών
έργων.
2.9.1 Γενικά
Η Βαθιά Μηχανική Μάθηση (Giancarlo Zacconne 2016) ανήκει στη μηχανική μάθηση, κυρίως
στην επιβλεπόμενη μηχανική μάθηση, αφού εκπαιδεύεται με παραδείγματα και πήρε την
ονομασίας της από τα νευρωνικά δίκτυα πολλών επιπέδων (Deep Neural Networks). Αυτή η
προσέγγιση προσπαθεί να μοντελοποιήσει τον τρόπο με τον οποίο ο ανθρώπινος εγκέφαλος
επεξεργάζεται το φως και τον ήχο και τα μετατρέπει σε όραση και ακοή. Δύο επιτυχείς
εφαρμογές της Βαθιάς Μάθησης είναι η μηχανική όραση και η αναγνώριση ομιλίας. Με την
Βαθιά Μηχανική Μάθησή μπορούν να λυθούν προβλήματα που δεν είναι γραμμικά. Στην
πραγματικότητα αποδεικνύεται ότι είναι δυνατό να λυθούν οποιαδήποτε προβλήματα. Η Βαθιά
Μηχανική Μάθηση κάνει ένα βήμα παραπέρα καθώς λύνει προβλήματα κατανόησης γλώσσας
και εγγράφων. Χρησιμοποιώντας μεθόδους λογιστικής ταξινόμησης (logistic classification)
και στοχαστικών αλγορίθμων βελτιστοποίησης (stochastic optimization) η Βαθιά Μηχανική
Μάθηση σε συνδυασμό με τα πολλά δεδομένα (Big Data) και τα σύνθετα προβλήματα που
επιλύει, καθιστά δυνατή, την κατανόηση του περιεχομένου μίας εικόνας ή της τεχνοτροπίας
ενός πίνακα (Leon A. Gatys, Alexander S. Ecker, Matthias Bethge, 2015) (εικόνα 17), καθώς
και τη μετάφραση ενός κειμένου.
Διπλωματική Εργασία 32
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Εικόνα 17 Μετατροπή εικόνας σε τεχνοτροπία πίνακα (Πηγή: Leon A. Gatys, Alexander S. Ecker, Matthias Bethge,2015 ).
Η Βαθιά Μάθηση αποτελεί μια οικογένεια τεχνικών προσαρμοστικότητας με κοινή δομή και
κοινή ορολογία σε διαφορετικά πεδία επεξεργασίας που καλείται να λύσει. Αναπτύχθηκε τα
τελευταία χρόνια λόγω της αφθονίας δεδομένων, κυρίως στο διαδίκτυο, καθώς οι επιδόσεις
των επεξεργαστών και κυρίως των καρτών γραφικών, έχουν γίνει πολύ γρήγορες για τους
υπολογισμούς γραμμικών προβλημάτων, με αποτέλεσμα ακόμα και ένας οικιακός
υπολογιστής να μπορεί να λύνει σε ικανοποιητικό βαθμό τέτοια προβλήματα.
Στην επιβλεπόμενη μάθηση η ταξινόμηση υλοποιείται δίδοντας στα παραδείγματα μια ετικέτα
(Label) ενός χαρακτηριστικού που τα διαχωρίζει από τα υπόλοιπα. Στα προβλήματα
ταξινόμησης ως επί το πλείστο δίδονται δύο ετικέτες, αφού συνήθως γίνεται διαχωρισμός σε
δυο κατηγορίες. Αυτές μπορεί να είναι για τον διαχωρισμό αντικειμένων σε μεγάλα ή μικρά,
ψηλά ή κοντά, ή όπως στην εργασία θετικά ή αρνητικά. Έτσι δημιουργείται ένα σετ
Διπλωματική Εργασία 33
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
εκπαίδευσης (training set). To σετ εκπαίδευσης είναι αυτό που θα διαχωρίζει τα παραδείγματα
σε σχετικά η μη.
Ο λογιστικός ταξινομητής αποτελεί την κύρια γραμμική εξίσωση εκπαίδευσης και είναι ένας
γραμμικός ταξινομητής που χαρακτηρίζεται από την παρακάτω εξίσωση :
𝑊𝑥 + 𝑏 = 𝑦 (20)
όπου με x συμβολίζεται η είσοδος των δεδομένων, η οποία μπορεί να είναι ένα bit μιας εικόνας,
μίας λέξεις, ενός ήχου ή γενικά ψηφιακού αρχείου, το W εκφράζει την τιμή του βάρους
(weight) και το b την τάση πόλωσης (bias). H διαδικασία εύρεσης του σωστού συνδυασμού
βαρών και τάσεων ονομάζεται και εκπαίδευση του Μοντέλου. Η έξοδος y της εξίσωσης
ονομάζεται πρόβλεψη (prediction), η τιμή της οποίας όσο μεγαλύτερη είναι τόσο μεγαλύτερη
είναι η πιθανότητα το αποτέλεσμα να είναι σωστό. Οι τιμές του y στη λογιστική παλινδρόμηση
λέγονται και logits.
Η πρόβλεψη y που δίδεται από την εξίσωση (20) μπορεί να πάρει διάφορες τιμές και το πεδίο
ορισμού έχει μεγάλο εύρος. Η μετατροπή του σε τιμές εντός πεδίου ορισμού [0,1] υλοποιείται
με την συνάρτηση Softmax (21) (Bridle, 1990) όπου τα αποτελέσματα περιορίζονται και
εκφράζονται πλέον σε πιθανότητες. Οι μεγάλες τιμές της εξίσωσης (20) γίνονται πιθανότητες
που τείνουν 1 και οι μικρές κοντά στο 0. Η εξίσωση περιγράφεται παρακάτω:
𝑒 𝑦𝑖
𝑆(𝑦𝑖 ) = (21)
∑ 𝑖 𝑒 𝑦𝑖
Η συνάρτηση S (Softmax) των τιμών 𝑦𝑖 που εξάγονται από τον γραμμικό ταξινομητή της
εξίσωσης 20, ισούται με το κλάσμα του 𝑒 υψωμένα στο 𝑦𝑖 προς το συνολικό άθροισμα των
αποτελεσμάτων 𝑒 υψωμένα στο 𝑦𝑖 .
Οι ετικέτες ή labels οι οποίες ταξινομούνται στη σωστή κλάση τείνουν στο 1 ενώ οι υπόλοιπες
στο 0. Κάθε ετικέτα αντιπροσωπεύεται από ένα διάνυσμα και έχει την τιμή 1 για τη σωστή
κλάση και 0 για τις υπόλοιπες. Δημιουργούνται πίνακες με πολλά 0 και ελάχιστα 1. Αυτό το
Διπλωματική Εργασία 34
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
πρόβλημα λύνεται με τη συνάρτηση cross entropy Hopfield (1987) and Bishop (1995) που
περιγράφεται από τη σχέση:
H Συνάρτηση (24) μετατρέπει τις πιθανότητες σε τιμές 0 και 1. Αν η πιθανότητα είναι μεγάλη
τότε δίδει τιμή 1 αν είναι μικρή 0. Οι Τιμές S είναι τα αποτελέσματα της συνάρτησης Softmax
ενώ το L (από το Logits) εκφράζει τις τιμές 0 ή 1.
𝑒 𝑊𝑥+𝑏
𝐷(𝑆(𝑊𝑥 + 𝑏), 𝐿) = − ∑ 𝐿𝑙 log ( ) (23)
∑𝑖 𝑒 𝑊𝑥+𝑏
𝜄
Διπλωματική Εργασία 35
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
1
𝑙𝑜𝑠𝑠 = ∑ 𝐷(𝑆(𝑊𝑥𝑖 + 𝑏), 𝐿𝑖 ) (24)
𝑁
𝑖
Αυτό που επιδιώκεται είναι η ελαχιστοποίηση της τιμής της συνάρτησης στη διάρκεια της
εκπαίδευσης. Όσο μειώνεται η τιμή της loss το μοντέλο εκπαιδεύεται. Μαθηματικά όπως
φαίνεται από την εξίσωση 24, ισούται με το σύνολο των τιμών που προκύπτουν από την
διαδικασία της πολυεστιακής λογιστικής ταξινόμησης, προς τα παραδείγματα Ν.
𝑒 𝑊𝑥+𝑏
𝐷(𝑆(𝑊𝑥 + 𝑏), 𝐿) = − ∑ 𝐿𝑙 log ( ) (23)
∑𝑖 𝑒 𝑊𝑥+𝑏
𝜄
οι μοναδικές μεταβλητές είναι τα βάρη W και η τάση b . Η σωστή εύρεσή των βαρών και των
τάσεων είναι αυτή που θα εκπαιδεύσει το δίκτυο. Οι αρχικές τιμές που θα δοθούν
(αρχικοποίηση βαρών) ως 𝑤0 και 𝑏0 και οι τιμές που θα επακολουθήσουν ώστε να φτάσει το
δίκτυο στις σωστές ή σωστότερές τιμές ώστε να εκπαιδευτεί. Λύνεται με αλγόριθμους
στοχαστικής βελτιστοποίησης .
Η βελτιστοποίηση είναι μια επαναλαμβανόμενη ακολουθία εύρεσης βαρών και τάσεων όπως
φαίνεται στις παρακάτω εξισώσεις:
Διπλωματική Εργασία 36
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
𝑤 ← 𝑤 − ∆𝑤 𝐿𝑜𝑠𝑠
και (26)
𝑏 ← 𝑏 − ∆𝑏 𝐿𝑜𝑠𝑠
όπου w και b είναι τα βάρη και οι τάσεις αντίστοιχά και ∆𝑤 𝐿𝑜𝑠𝑠 ∆𝑏 𝐿𝑜𝑠𝑠 οι παράγωγοι
συνάρτησης απώλειας βαρών και τάσεων.
Διπλωματική Εργασία 37
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 38
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Ένα άλλο χαρακτηριστικό είναι η απόσβεση ποσοστού μάθησης (Learning rate decay), η οποία
συμβολίζεται με α. Κατά τη διάρκεια της εκπαίδευσης όσο υπολογίζεται το momentum
παρουσιάζεται η παράμετρος αυτή, η οποία κατά την διάρκεια της εκπαίδευσης πρέπει να
μειώνεται (εικόνα 22).
Η επιλογή του σωστού Ρυθμού μάθησης (Learning rate) είναι καθοριστικής σημασίας για την
εκπαίδευση του νευρωνικού δικτύου. Κατά την εκπαίδευση του ρυθμού μάθησης, η χρήση
μίας υψηλότερης τιμής μάθησης δεν σημαίνει ότι το μοντέλο εκπαίδευσης μαθαίνει
απαραίτητα γρηγορότερα. Έχει αποδειχθεί ότι χρησιμοποιώντας μικρούς ρυθμούς μάθησης το
μοντέλο αποδίδει καλύτερα. Παρατηρώντας την εικόνα 22 φαίνεται, ότι σε υψηλό ρυθμό
Διπλωματική Εργασία 39
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
μάθησης η μάθηση ξεκινά γρηγορότερα σε σχέση με έναν χαμηλότερο ρυθμό μάθησης , αλλά
στη συνέχεια αυτός που αποδίδει καλύτερα είναι ο χαμηλός που τείνει στο μηδέν της γραφικής
παράστασης σε σχέση με τον υψηλό.
Διπλωματική Εργασία 40
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Εικόνα 23 Απόδοση αλγοριθμων βελτιστοποίησης (πηγή: Diederik P. Kingma and Jimmy Lei Ba 2015)
Υπερπροσαρμογή είναι η παραγωγή μιας ανάλυσης που αντιστοιχεί πάρα πολύ ή με ακρίβεια
σε ένα συγκεκριμένο σύνολο δεδομένων και συνεπώς μπορεί να μην ικανοποιήσει πρόσθετα
δεδομένα ή να προβλέψει αξιόπιστες μελλοντικές παρατηρήσεις (Oxford Dictionaries Online).
Ένα υπερπροσαρμοστικό μοντέλο είναι ένα στατιστικό μοντέλο που περιέχει περισσότερες
παραμέτρους από αυτές που δικαιολογούνται από τα δεδομένα (Everitt And Skrondal , 2010).
Στην εικόνα 24 παρουσιάζεται ένα πρόβλημα ταξινόμησης στο οποίο πρέπει να διαχωρίσουμε
τις μπλε και κόκκινες κουκίδες. Οι κουκίδες μπορεί να είναι λέξεις με θετικό συναίσθημα ή
και εικόνες που να περιγράφουν ένα σκύλο ή μία γάτα. Τα νευρωνικά δίκτυα είναι τόσο
πολύπλοκά λόγω της αρχιτεκτονικής τους (Πολλοί κόμβοι, πολλά κρυφά επίπεδα) που κατά
την επίλυση του προβλήματος του διαχωρισμού μπορούν να διαχωρίσουν όλες τις κουκκίδες
δημιουργώντας πολυώνυμα μεγάλου βαθμού. Έτσι υλοποιείται μια λύση όπως την πράσινη
γραμμή της εικόνας. Στην πραγματικότητα αυτό που είναι αποδοτικότερο για το δίκτυο είναι
η μαύρη καμπύλη όπου τα παραδείγματα διαχωρίζονται με μικρότερη ακρίβεια αφήνοντας
κάποια παραδείγματα εκτός αλλά δημιουργώντας μία ποιοτικότερη λύση.
Διπλωματική Εργασία 41
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Για να γίνει ποιο κατανοητό το πρόβλημα της υπερπροσαρμογής θα αναλυθεί η εικόνα 25. Για
την εύρεση της σωστής κλίσης βάση των παραδειγμάτων που στην περίπτωσή της εικόνας
είναι οι μαύρες κουκκίδες πρέπει να βρεθεί μια ευθεία με κλίση η οποία μπορεί να μην περνάει
από όλες τις κουκίδες αλλά ποιοτικά τις ακολουθά. Ένα όμως δίκτυο πολλών επιπέδων δεν θα
αρκεστεί σε αυτό αλλά θα προσπαθήσει να λύσει το πρόβλημα με απόλυτο και υπερβολικό
τρόπο. Η λύση δίδεται από ένα πολυώνυμο μεγάλου βαθμού όπως η μπλε γραμμή την εικόνας
που αναφερόμαστε.
Διπλωματική Εργασία 42
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Το πρόβλημα που αντιμετωπίζουμε είναι ότι λύνεται απολυτά ο διαχωρισμός των δεδομένων
εκπαίδευσης αλλά το δίκτυο παρουσιάζει απόκλιση όταν δίδουμε τα δεδομένα επαλήθευσης,
όπως φαίνεται στην εικόνα 27.
Ένας τρόπος αντιμετώπισης του Overfitting είναι ο πρόωρος τερματισμός της εκπαίδευσης στο
σημείο που ξεκινάει η απόκλιση των σφαλμάτων (εικόνα 26). Αυτό όμως περιορίζει την
εκπαίδευση του δικτύου.
Διπλωματική Εργασία 43
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η μέθοδος ομαλοποίησης L1 κατά τον υπολογισμό της συνάρτησης απώλειας προσθέτει μια
ποινή βάρους α στο απολυτό σύνολο των βαρών.
Διπλωματική Εργασία 44
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 45
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Σημαντικός παράγοντας για την ανάλυση των νευρωνικών δικτύων είναι ο υπολογισμός της
πολυπλοκότητας του μοντέλου. Όπως παρουσιάζεται στην εικόνα 28 για τον υπολογισμό της
πολυπλοκότητας του του γραμμικού μοντέλου που παρουσιάζεται αρκεί να
πολλαπλασιάσουμε το σύνολο των εισόδων χ και να το πολλαπλασιάσουμε με τις πιθανές
εξόδους που εξάγει το μοντέλο. Αν για παράδειγμα εισάγουμε μια εικόνα με 100
εικονοστοιχεία και από την έξοδο αναμένουμε 5 πιθανά αποτελέσματα τότε η πολυπλοκότητα
είναι (100+1)*5 που ισούται με 505.
Διπλωματική Εργασία 46
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η συνάρτηση RELU είναι αποδοτικότερη από τις κλασικές συναρτήσεις ενεργοποίησης όπως
η sigmoid και η tanx. Αυτό συμβαίνει διότι η παράγωγος της RELU παίρνει δύο διακριτές
τιμές [0,1]. Για χ <0 η παράγωγος παίρνει την τιμή 0 και για χ>0 την τιμή 1.
Διπλωματική Εργασία 47
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η προσθήκη ενός κρυμμένου στρώματος σε ένα δίκτυο του επιτρέπει να διαμορφώνει πιο
σύνθετες λειτουργίες. Επίσης, με τη χρήση μιας μη γραμμικής συνάρτησης ενεργοποίησης στο
κρυφό στρώμα του επιτρέπει να μοντελοποιεί μη γραμμικές λειτουργίες. Στην εικόνα 31
αναπαρίσταται παραπάνω ένα νευρωνικό δίκτυο δυο επιπέδων, ενός κρυφού και ενός επιπέδου
εξόδου με συνάρτηση ενεργοποίησης RELU.
Στην εικόνα 32 απεικονίζεται ένα πολυεπίπεδο νευρωνικό δίκτυο δυο κρυφών επιπέδων και
ενός επιπέδου εξόδου.
Διπλωματική Εργασία 48
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Το πρώτο επίπεδο αποτελείται ουσιαστικά από το σύνολο των βαρών και των τάσεων που
εφαρμόζεται στην είσοδο Χ και ενεργοποιείται μέσω της συνάρτησης ενεργοποίησης Relu
στην έξοδό του. Η έξοδος αυτού του στρώματος τροφοδοτεί το επόμενο επίπεδο, αλλά δεν
είναι παρατηρήσιμη εκτός του δικτύου, αφού πλέον αποτελεί κρυφό επίπεδο. Όμοια το
δεύτερο επίπεδο αποτελείται από το σύνολο των βαρών και των τάσεων που εφαρμόζεται στη
είσοδο του Χ και ενεργοποιείται μέσω της συνάρτησης ενεργοποίησης Relu. Τέλος το επίπεδο
εξόδου αποτελείται από τα βάρη και τις τάσεις, και μέσω της συνάρτηση Softmax δημιουργεί
τις πιθανότητες και τα αποτελέσματα.
Ο αλγόριθμός Back Propagation, για τον οποίο έχει γίνει αναφορά σε προηγούμενες ενότητες,
εφαρμόζεται και στην βαθιά μηχανική μάθηση. O Αλγόριθμος Back Propagation είναι μια
γενίκευση του κανόνα δέλτα σε πολυεπίπεδα δίκτυα πρόσθιας τροφοδότησης, που
χρησιμοποιεί τον κανόνα της αλυσίδας (chain rule) για να υπολογίσει διαδοχικά τις κλίσεις για
κάθε στρώμα. Με τον κανόνα της αλυσίδας γίνεται η εύρεση της παραγώγου του μοντέλου του
δικτύου με εύκολο και γρήγορο τρόπο.
Για να γίνει κατανοητός ο κανόνας της αλυσίδας απλοποιούμε το μοντέλο σε απλές λειτουργίες
όπως απεικονίζεται στην εικόνα 33:
Διπλωματική Εργασία 49
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Το δίκτυο είναι μια σειρά από απλές πράξεις ή λειτουργίες όπως γραμμικοί μετασχηματισμοί
και συναρτήσεις ενεργοποίησης. Από την είσοδο Χ εισέρχονται τα δεδομένα τα οποία περνούν
τις λειτουργίες που μπορεί να είναι γραμμικοί μετασχηματισμοί ή συναρτήσεις ενεργοποίησης
και βγαίνουν στην έξοδο y.
Για τον υπολογισμό της παραγώγου υλοποιείται άλλος ένας γράφος όπως το σχήμα:
Ο backpropagation για την υλοποίησή όπως φαίνεται στην εικόνα 36 χρησιμοποιεί ένα
στοχαστικό αλγόριθμο βελτιστοποίησης κλίσης και μία συνάρτηση απώλειας. Λειτουργεί σε
δύο φάσεις την φάση διάδοσης (forward prop) και την φάση οπισδοδιάδοσης σφάλματος (Back
Prop).
Διπλωματική Εργασία 50
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
στην αρχική έξοδο. Το Backpropagation χρησιμοποιεί αυτές τις τιμές σφάλματος για να
υπολογίσει την κλίση της συνάρτησης απώλειας loss function.
Κατά τη φάση της οπισθοδιάδοσης (back prop), αυτή η κλίση τροφοδοτείται στη μέθοδο
βελτιστοποίησης, η οποία με τη σειρά της ενημερώνει τα βάρη, σε μια προσπάθεια να
ελαχιστοποιηθεί η loss function .
Διπλωματική Εργασία 51
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
3.1 TensorFlow
Η Python είναι μια δυναμική γλώσσα προγραμματισμού υψηλού επιπέδου (high level), γενικού
σκοπού (general purpose) με πολύ καλή τεκμηρίωση και χιλιάδες βιβλιοθήκες. πράγμα που
σημαίνει αποτελεσματικότητα με ελάχιστο κώδικα. Στην παρούσα εργασία θα
χρησιμοποιηθούν οι βιβλιοθήκες NLTK και η βιβλιοθήκη NumPy, που θεωρείται θεμελιώδες
πακέτο για επιστημονικό υπολογισμό με την Python. Περιέχει μεταξύ άλλων ένα ισχυρό
αντικείμενο N-διάστατων πινάκων (Array) οι οποίοι είναι ταχύτεροι σε πράξεις από τους
πίνακες της Python. Το Numpy είναι ένα ισχυρό εργαλείο αφού το TensorFlow χρησιμοποιεί
τους πίνακες στην λειτουργία του όπως θα εξηγηθεί και συνδέει τα επεξεργασμένα δεδομένα
– παραδείγματα με αυτό. Θα χρησιμοποιηθεί η βιβλιοθήκη Greekstemmer, ένα Ελληνικό
Stemmer το οποίο αποτέλεσε διπλωματική εργασία μεταπτυχιακού του Γιώργου Νταή, με
τίτλο "Ανάπτυξη ενός Stemmer για την Ελληνική Γλώσσα". Η Λειτουργία του βασίζεται ως
εξής, το σύστημα παίρνει ως είσοδο μια λέξη και αφαιρεί το πλησιέστερο επίθημά του
σύμφωνα με έναν αλγόριθμο που βασίζεται σε συγκεκριμένους κανόνες. Ο αλγόριθμος
ακολουθεί τον γνωστό αλγόριθμο Porter για την αγγλική γλώσσα και αναπτύσσεται σύμφωνα
με τους γραμματικούς κανόνες της νεοελληνικής γλώσσας. Μοναδικός περιορισμός είναι ότι
η ανωτέρω εργασία εκτελείται μόνο όταν οι λέξεις μετατραπούν σε κεφαλαία και αφαιρεθούν
τα σημεία στίξης.
Διπλωματική Εργασία 52
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η βιβλιοθήκη της Python TensorFlow από την ονομασία της, εκφράζει και τον τρόπο με τον
οποίο λειτουργεί. Αποτελείται από τις λέξεις Tensor που σημαίνει τάση-τανυστής και Flow
που σημαίνει ροή. Τα δεδομένα στο TensorFlow αντιπροσωπεύονται ως τάσεις (tensors), οι
οποίες είναι πολυδιάστατοι πίνακες (array) οι οποίοι παίρνουν τις τιμές 0 ή 1 (Nikhil Buduma
2015). Το Flow προδίδει ότι το πρόγραμμα επιτρέπει στους χρήστες να εκφράσουν τους
υπολογισμούς αυτούς ως ένα γράφος (graph) ροής δεδομένων (data flow). Οι κόμβοι
(νευρώνες) του γραφήματος αντιπροσωπεύουν μαθηματικές λειτουργίες που εξάγουν στις
απολήξεις τους δεδομένα που μεταδίδονται στον επόμενο κόμβο για να υπολογίσουν και να
εξάγουν δεδομένα στον επόμενο. Ο τρόπος σκέψης για την ανωτέρω λειτουργία υπολογισμού
βρίσκει εφαρμογή σε πολλά διαφορετικά επιστημονικά πεδία, αλλά το TensorFlow
χρησιμοποιείται κυρίως για νευρωνικά δίκτυα πολλών επιπέδων, δηλαδή για βαθιά εκμάθηση
(Deep Learning). Η ευέλικτη αρχιτεκτονική του επιτρέπει να αναπτυχθούν Βαθιά Νευρωνικά
Δίκτυα και βαθιά μηχανική Μάθηση από ένα κατανεμημένο δίκτυο υπολογιστών με μία ή
περισσότερες CPU ή GPU ακόμα και σε έναν επιτραπέζιο υπολογιστή, ή και σε μία κινητή
συσκευή με ένα μόνο API.
Η κεντρική μονάδα δεδομένων στο TensorFlow είναι ο τανυστής (tensor). Ένας τανυστής
αποτελείται από ένα σύνολο τιμών που διαμορφώνονται σε μια σειρά οποιουδήποτε αριθμού
διαστάσεων. Η τάξη ενός tensor είναι ο αριθμός των διαστάσεων του Σχήμα 36. Το
TensorFlow χρησιμοποιεί πίνακες Numpy για να παρουσιάσει τις διαστάσεις των τανυστών
όπως παρουσιάζεται στον πίνακα 2 και εικόνα 36. Ως διάσταση του τανυστή ορίζεται ο βαθμός
του πίνακα που θα ορίσουμε για την εισαγωγή των δεδομένων. Σχηματικά όπως παρουσιάζεται
στην εικόνα 36 μια διάσταση είναι μια γραμμή, δύο διαστάσεις ένα τετράγωνο, τρεις
διαστάσεις ένας κύβος, τέσσερεις διαστάσεις μια σειρά κύβων και 5 διαστάσεις ένα τετράγωνο
κύβων.
Διπλωματική Εργασία 53
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 54
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Ένα υπολογιστικό γράφημα είναι μια σειρά λειτουργιών TensorFlow διατεταγμένων σε ένα
γράφημα από κόμβους. Σε ένα απλό υπολογιστικό γράφημα, κάθε κόμβος παίρνει μηδενικές ή
περισσότερες τάσεις ως είσοδούς και παράγει έναν τανυστή ως έξοδο. Ένας τύπος κόμβου
είναι μια σταθερά. Όπως όλες οι σταθερές TensorFlow, παίρνει εισόδους και εξάγει μια τιμή
που αποθηκεύει εσωτερικά.
weights : tf.Variable(tf.random_normal(300,200))
Διπλωματική Εργασία 55
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Στον πίνακα 3 ορίζονται δύο δηλώσεις στο tf.Variable. Το πρώτο, tf.random_normal, είναι μια
λειτουργία που παράγει ένα tensor αρχικοποιημένο με μέγεθος 300x200, δηλαδή ότι τα βάρη
συνδέουν ένα στρώμα με 300 νευρώνες σε ένα στρώμα με 200 νευρώνες. Έχουμε επίσης
περάσει ένα όνομα στην κλήση μας στο tf.Variable. Το όνομα είναι ένα μοναδικό
αναγνωριστικό που μας επιτρέπει να ανατρέξουμε στον κατάλληλο κόμβο στο γράφημα
υπολογισμού. Σε αυτή την περίπτωση, τα βάρη προορίζονται να είναι εκπαιδευτικά, ή με άλλα
λόγια, θα υπολογίζουμε αυτόματα και θα εφαρμόζουμε κλίσεις στα βάρη. Όταν καλείται η
tf.Variable, προστίθενται τρεις πράξεις στο γράφημα υπολογισμού (εικόνα 37):
Η λειτουργία που παράγει τον tensor που χρησιμοποιείται για την αρχικοποίηση της
μεταβλητής.
Η λειτουργία tf.assign, η οποία είναι υπεύθυνη για την πλήρωση της μεταβλητής με
την αρχικοποίηση tensor πριν από τη χρήση της μεταβλητής.
Η μεταβλητή λειτουργία, η οποία διατηρεί την τρέχουσα τιμή της μεταβλητής.
Εικόνα 37 Τρείς λειτουργίες προστίθενται στο γράφημα όταν αρχικοποιούμε μια μεταβλητή στο TensorFlow
Διπλωματική Εργασία 56
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Κατηγορία Παραδείγματα
Μαθηματικές πράξεις Add, Sub, Mul, Div, Exp, Log, Greater, Less, Equal…
Λειτουργίες πίνακα Concat, Slice, Split, Constant, Rank, Shape, Shuffle, …
Λειτουργίες μήτρας Matmul, Matrixlnverce …..
Μπλοκ κατασκευής Softmax, Sigmoid, Relu, Maxpool…..
Νευρωνικών Δικτιών
Λειτουργίες Checkpoint Save, Restore……
Λειτουργίες ελέγχου ροής Merge, Switch, Enter, Leave…..
Λειτουργίες Ουράς και Enqueue, Dequeue, ……
συγχρονισμού MutexAcquire, MutexRelease…..
Πίνακας 4 Πίνακας λειτουργιών Tensorflow
Διπλωματική Εργασία 57
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Μία μεταβλητή από μόνη της δεν είναι επαρκής επειδή προορίζεται μόνο να αρχικοποιηθεί
μία φορά. Αντίθετα, χρειαζόμαστε ένα στοιχείο το οποίο συμπληρώνουμε κάθε φορά που
εκτελείται το γράφημα υπολογισμού. Το TensorFlow λύνει αυτό το πρόβλημα
χρησιμοποιώντας την κράτηση θέσης ( Placeholder). Ένας placeholder χρησιμοποιείται σε
πράξεις όπως ακριβώς και οι συνήθεις μεταβλητές TensorFlow και tensors.
Διπλωματική Εργασία 58
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η sess.run χρησιμοποιείται για την εκπαίδευση δικτύων. Πριν προχωρήσουμε στην κατάρτιση
του μοντέλου, αναγκαιούν δύο ακόμη σημαντικές έννοιες στην κατασκευή και διατήρηση
υπολογιστικών γραφημάτων.
Διπλωματική Εργασία 59
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η λογιστική παλινδρόμηση όπως έχει αναφερθεί είναι μια μέθοδος η οποία υπολογίζει την
πιθανότητα ότι μια είσοδος ανήκει σε μία από τις κλάσεις που έχουμε ορίσει.. Στην περίπτωση
της ταξινόμησης συναισθήματος ενός κειμένου σε θετικό η αρνητικό θα υπολογιστεί η
πιθανότητα ενός κειμένου εισόδου να είναι [1,0] αν αυτό είναι θετικό ή [0,1] αν είναι αρνητικό.
Το μοντέλο χρησιμοποιεί ένα πίνακα W που αντιπροσωπεύει τα βάρη των συνδέσεων στο
δίκτυο καθώς και ένα διάνυσμα b αντίστοιχο με τις πολώσεις (biases) για να υπολογίσουμε αν
μια είσοδος x ανήκει στην κλάση i χρησιμοποιώντας την έκφραση Softmax. Στόχος είναι η
εύρεση των τιμών των W και b που ταξινομούν αποτελεσματικότερα τις εισόδους μας όσο το
δυνατόν ακριβέστερα.
Επίσης πρέπει να οριστεί και ο στοχαστικός αλγόριθμος βελτιστοποίησης με τον ρυθμό
μάθησης. Ο εκτιμητής τέλος υπολογίζει τις τιμές με την βοήθεια του στοχαστικού αλγόριθμου
βελτιστοποίησης ελαχιστοποιώντας τις τιμές που εξάγονται από την Softmax όπως φαινεται
στον πίνακα 6.
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=
prediction, labels= y))
optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
Πίνακας 6 Συνάρτηση κόστους και στοχαστικός αλγόριθμος βελτιστοποίησης
Διπλωματική Εργασία 60
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 61
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Στην Ελληνική Γλώσσα δεν υπάρχει κάποιο τέτοιο σετ δεδομένων. Η αναγκαιότητά του
οδήγησε στην μελέτη τεχνικών άντλησης δεδομένων με μεθόδους όπως το Webscraping.
Webscraping είναι η άντληση δεδομένων από μια ιστοσελίδα με κάποιο αλγοριθμικό τρόπο.
Η δομή των ιστοσελίδων δεν είναι τυχαία. Ακολουθεί κάποιο πρότυπο η ακολουθία και έτσι η
εξόρυξη κειμένου από αυτά μπορεί να γίνει με τον ορισμό μιας συγκεκριμένης ακολουθίας.
Για την άντληση θετικού ή αρνητικού συναισθήματος αυτό μπορεί να γίνει από σχόλια ή
κριτικές ταινιών, θεατρικών παραστάσεων, προϊόντων, καταστημάτων, αθλητικών γεγονότων,
σχολιασμό πολιτικής κατάστασης κοινωνικών δρωμένων. Η έκρηξη των κοινωνικών δικτύων
και των e-Shop δημιουργεί χιλιάδες παραδείγματα τα οποία αν οργανωθούν μπορούν να
αποτελέσουν καλά παραδείγματα εκπαίδευσης.
Εξίσου σημαντικό με την υλοποίηση ενός απλού η με πολλά επίπεδα νευρωνικού δικτύου
είναι και η υλοποίηση ενός αλγορίθμου στον οποίο μετατρέπουμε τα εκάστοτε δεδομένα-
παραδείγματα σε μορφή δεδομένων μορφής εισόδου 0 και 1 του νευρωνικού δικτύου το οποίο
θα εκτελέσει τους υπολογισμούς για την εκπαίδευσή του. Η μέθοδος που θα χρησιμοποιηθεί
για τον σκοπό ονομάζεται Bag of words (Σακούλα λέξεων) (Steven Bird, Ewan Klein, and
Edward Loper 2009). Είναι η πιο απλή μέθοδος ταξινόμησης κειμένου. Ο τρόπος με τον οποίο
λειτουργεί παρουσιάζεται στην εικόνα 40. Με έναν αλγόριθμο διαχωρίζουμε το κείμενο
Διπλωματική Εργασία 62
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
(παραδείγματα) στις επιμέρους λέξεις που το αποτελούν. Βρίσκουμε τη ρίζα των λέξεων και
δημιουργούμε ένα λεξικό που μοναδικό χαρακτηριστικό έχει την συχνότητα της κάθε λέξης.
Διπλωματική Εργασία 63
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Αρχικά γίνεται εισαγωγή όλων τα παραδειγμάτων θετικών και αρνητικών χωρίς να είναι
χαρακτηρισμένα (χωρίς ετικέτα) και με το tokenize της βιβλιοθήκης NLTK μετατρέπεται το
κείμενο σε λέξεις. Με τη συνάρτηση Greekstemmer γίνεται η μετατροπή των λέξεων σε ρίζα.
Μόνος περιορισμός του Greekstemmer είναι ότι οι λέξεις πρέπει να μετατραπούν σε κεφαλαία
και χωρίς τόνους ώστε να μπορούν να μετατραπούν σε ρίζες. Με την κλήση της βιβλιοθήκης
collections και συγκεκριμένα της συνάρτησης counter δίδεται η δυνατότητα να μετρηθεί η
συχνότητα κάθε ρίζας λέξης που εμφανίζεται στο σύνολο των παραδειγμάτων που εισάγουμε
για εκπαίδευση στο δίκτυο. Λόγω του όγκου των παραδειγμάτων και λόγω του ότι όλες οι
λέξεις δεν εκφράζουν συχνότητα δημιουργήθηκε ένα φίλτρο το οποίο αφαιρεί τις λέξεις με
μεγάλη συχνότητα όπως τα άρθρα τα οποία από μόνα τους δεν εμφανίζουν συναίσθημα και
λέξεις με μικρή συχνότητα όπως ονόματα. Στο νέο λεξικό επιλέχθηκαν οι λέξεις που
παρουσίαζαν συχνότητα κάτω από 5000 και ανω των 50. Η βιβλιοθήκη random
χρησιμοποιείται για να τοποθετεί τις λέξεις τυχαία και είναι αναγκαία καθώς βοηθά στην
ομογενοποίηση του λεξικού που θα δημιουργηθεί για καλυτέρα στατιστικά αποτελέσματα. Η
κλήση της Numpy κρίνεται απαραίτητη αφού συγχέεται με ακρίβεια με το tensorflow. Η
βιβλιοθήκη pickle χρησιμοποιήθηκε για την μετατροπή του λεξικού σε δυαδικές τιμές και την
αποθήκευσή του για την χρησιμοποίηση σε παραδείγματα που θα δώσουμε στο δίκτυο
αργότερα.
Έτσι, μένουν οι λέξεις που θα αποτελέσουν το λεξικό το οποίο θα τροφοδοτήσει το δίκτυο για
να ξεκινήσει η εκπαίδευση του. Στην συνάρτηση Sample_handling () δημιουργείται μία λίστα
χαρακτηριστικών (Featuresets) και η δημιουργία του πίνακα που αναφέραμε γίνεται με το
np.zeros . Ομοίως δημιουργείται ένα λεξικό το οποίο αν προέρχεται από το αρχείο 'pos.txt' θα
έχει ετικέτα [1, 0] ενώ αν προέρχεται από το αρχείο 'neg.txt' θα έχει ετικέτα [0, 1] το λεξικό θα
ανακατευτεί με την random.shuffle και θα εισέλθει σε πίνακα Numpy ενώ καθορίστηκε
test_size ίσο με 0.1 δηλαδή 10 % όπως φαίνεται στην εικόνα 41.
Διπλωματική Εργασία 64
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Αφού εκπαιδευτεί και αποθηκευτεί το νευρωνικό δίκτυο παρόλο που γνωρίζουμε την ακρίβεια
βάση των παραδειγμάτων, μας δίδεται η δυνατότητα να εισάγουμε τυχαία παραδείγματα τα
οποία δεν έχουν εισαχθεί ποτέ πριν. Η δημιουργία ενός τέτοιου προγράμματος οπού θα
δοκιμάσουμε το δίκτυο δεν διαφέρει πολύ από το πρόγραμμα που υλοποιήθηκε για την
υλοποίηση ενός νευρωνικού δικτύου. Ο τρόπος με τον οποίο τα παραδείγματα θα περάσουν
Διπλωματική Εργασία 65
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
μέσα από το δίκτυο είναι ίδιος με τον τρόπο που το δίκτυο εκπαιδεύτηκε. Απαραίτητο
συστατικό είναι η ανάκληση του αρχείου checkpoint το οποίο έχει κρατήσει τις παραμέτρους
του δικτύου κατά τη διάρκεια της εκπαίδευσής του. Έτσι τα παραδείγματα που εισάγουμε
περνάνε στο δίκτυο μετατρέπονται σε ρίζες λέξεων και το δίκτυο δίδει τις τιμές. Ο κώδικας
που περιγράφηκε βρίσκεται στο Παράρτημα Α
Διπλωματική Εργασία 66
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Για τη λύση του προβλήματος χρησιμοποιήθηκαν 2 αρχεία τύπου text (.txt). To σύνολο των
παραδειγμάτων είναι 11000 παραδείγματα. Κατά τη δημιουργία λεξικού συναισθήματος
δημιουργήθηκε ένα αρχείο Pickle που περιέχει, σε μορφή bit, το λεξικό μήκους 624 λέξεων
που προέκυψε από τη μέθοδο Bag of words. Οι 964 λέξεις αποτελούν τους κόμβους εισόδου
του Νευρωνικού δικτύου. Το δίκτυο έχει 3 κρυφά επίπεδα και 1 επίπεδο εξόδου (εικόνα 42).
Το πρώτο κρυφό επίπεδο έχει 100 κόμβους, το δεύτερο επίπεδο έχει 50 κόμβους και το τρίτο
30 κόμβους. Το επίπεδο εξόδου έχει 2 κόμβους καθώς αν το συναίσθημα είναι θετικό πρέπει
να έχει αποτέλεσμα θα πρέπει αν έχει έξοδο [1,0] ενώ αν έχει αρνητικό [0,1]. Για την αποφυγή
υπερπροσαρμογής χρησιμοποιήθηκε η μέθοδος της απόρριψης με συντελεστή 0,5, δηλαδή η
απόρριψη των μισών κόμβων κατά την εκπαίδευση. Ως Συνάρτηση Ενεργοποίησης
χρησιμοποιήθηκε η συνάρτηση RELU. Για την εκπαίδευση χρησιμοποιήθηκε ο στοχαστικός
αλγόριθμος βελτιστοποίησης ADAM με ρυθμό μάθησης 0,001. Το μοντέλο εκπαιδεύτηκε με
κριτήριο τερματισμού τις περίπου 500 Εποχές. Κατά τον τερματισμό επιτεύχθηκε ακρίβεια
83%.
Διπλωματική Εργασία 67
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Στο TensorBoard η παρουσίαση των δεδομένων γίνεται στον browser του υπολογιστή
ορίζοντας τον ίδιο υπολογιστή ως server με localhost 6006 όπως φαίνεται στην εικόνα 43.
Διπλωματική Εργασία 68
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Με το TensorBoard γίνεται οπτικοποίηση του νευρωνικού δικτύου, όπως φαίνεται στην εικόνα
44. Απεικονίζονται οι εισόδοι, τα κρυφά επίπεδα, καθώς και οι συναρτήσεις υπολογισμού
ακρίβειας και κόστους. Αυτό μπορεί να γίνει ονομάζοντας τις απλές μεταβλητές όπως τα βάρη
και τις τάσεις και την είσοδο χ και έξοδο y, είτε με ομαδοποίηση των στοιχείων του μοντέλου
μας δημιουργώντας πιο συμπαγείς δομές. Οι πιο συμπαγείς δομές είναι η συνάρτηση κόστους,
η συνάρτηση ακρίβειας, το μοντέλο και τα κρυφά επίπεδα.
Διπλωματική Εργασία 69
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Μπορούμε ακόμη να δούμε την ακρίβεια του δικτύου σε σχέση με το χρόνο. Όπως φαίνεται
στην εικόνα 46 στις 500 εποχές η ακρίβεια φτάνει το 86 % για τα σετ εκπαίδευσης (training
set) και 83 % για το σετ επαλήθευσης (test set).
Διπλωματική Εργασία 70
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Η εκπαίδευση του δικτύου όπως φαίνεται στην εικόνα 46 μπορεί να οπτικοποιηθεί σε όλη την
διάρκειά της και δεν παρουσιάζεται απλά ένα τελικό αποτέλεσμα εκπαίδευσης. Αυτό από μόνο
του μπορεί να δώσει πολλές πληροφορίες. Φαίνεται στο γράφημα της εικόνας 46, ότι κατά τη
διάρκεια της εκπαίδευσης απαιτείται κάποιος χρόνος έως ότου η ακρίβεια της εκπαίδευσης να
ομαλοποιηθεί. Ιδιαίτερα στα δεδομένα εκπαίδευσης φαίνεται η απόδοση να σταθεροποιείται ή
και να χάνει στην ακρίβεια, έως ότου να φτάσουν στην ακρίβεια του 80%. Ακόμα και τότε η
γραφική παράσταση δεν είναι σταθερή όσο αυτή των δεδομένων επαλήθευσης. Παρόλα αυτά,
στις 500 εποχές, για τα δεδομένα εκπαίδευσης έχει ακρίβεια περίπου στο 86%.
Εκτός από την συνάρτηση ακρίβειας της εκπαίδευσης, σημαντική συνάρτηση που πρέπει να
μελετηθεί είναι και η συνάρτηση κόστους. Όπως φαίνεται και στην εικόνα 47, η συνάρτηση
κόστους εκπαίδευσης (train) και επαλήθευσης (test) κατά τη διάρκεια της εκπαίδευσης
παίρνουν την τιμή 0,3 και δεν αποκλίνουν μεταξύ τους. Αποφεύγονται, δηλαδή, φαινόμενα
overfitting.
Διπλωματική Εργασία 71
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Το TensorBoard δίνει, ακόμη, τη δυνατότητα να δούμε τις τιμές που παίρνουν τα συναπτικά
βάρη, οι συναρτήσεις ενεργοποίησης και οι τάσεις για τα σετ εκπαίδευσης και επαλήθευσης
ανά επίπεδο. Μπορεί να γίνει σύγκριση μεταξύ σετ εκπαίδευσης και επαλήθευσης. Τα
δεδομένα παρουσιάζονται τρισδιάστατά οπού στο οριζόντιο άξονα έχουμε τα βήματα
εκπαίδευσης και οι τιμές που μπορούν να πάρουν τα βάρη, οι τάσεις και η συνάρτησή
ενεργοποίησης και η τρίτη διάσταση απεικονίζει το σχήμα που παίρνουν αντίστοιχα. Με αυτό
τον τρόπο απεικονίζεται σχηματικά η εκπαίδευση, δηλαδή οι τελική τιμή που θα πάρει το κάθε
κομμάτι του δικτύου.
Διπλωματική Εργασία 72
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Παρατηρείται ότι τα βάρη ακολουθούν κανονική κατανομή για το σετ εκπαίδευσης αλλά και
για το σετ επαλήθευσης (εικόνα 49). Για τις τάσεις ανάλογα με τον αριθμό βημάτων
παρατηρείται ότι υπάρχει μια τυχαιότητα στις τιμές που παίρνουν. Παρόλα αυτά τείνουν να
ακολουθήσουν και αυτές κανονική κατανομή. Όσον αφορά την συνάρτηση ενεργοποίησης ,
παρατηρείται ότι υπάρχουν μικρές αλλαγές στην τιμή της κατά την διάρκεια της εκπαίδευσης.
Διπλωματική Εργασία 73
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 74
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Αντίστοιχες, αλλά ποιο κοντά στο σημείο ισορροπίας, τιμές λαμβάνουν οι τάσεις και τα βάρη
στα επόμενα επίπεδα (εικόνα 50, 51).
Διπλωματική Εργασία 75
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Όπως φαίνεται από την εικόνα 52 από τις 13 λέξεις δίδονται 9 σωστές απαντήσεις. Στο
παράδειγμα ¨ΔΕΝ ΕΝΘΟΥΣΙΑΣΤΙΚΑ¨ φαίνεται να κυριαρχεί το δεν αφού η λέξη
ενθουσιάστηκα από μόνη της αποτελεί λέξη με θετικό συναίσθημα.
Διπλωματική Εργασία 76
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Στις κριτικές ταινιών δόθηκαν όπως φαίνεται από την εικόνα 53 δόθηκαν 13 παραδείγματα
από τα οποία σωστά ήταν τα 8. Παρατηρείται ότι σε κάποια παραδείγματα ενώ τα σχόλια ήταν
θετικά υπήρχε η λέξη δεν οπού υπερίσχυσε του υπόλοιπου σχολίου και λήφθηκε από το δίκτυο
ως αρνητικό.
Διπλωματική Εργασία 77
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Όπως φαίνεται στις παραπάνω εικόνες Στις λέξεις κλειδιά, 8 από τα 13 παραδείγματα είναι
σωστά. Στις κριτικές ταινιών 8 από 13 παραδείγματα είναι σωστά. Στις κριτικές καταστημάτων
προϊόντων 6 από τα 9 παραδείγματα είναι σωστά. Τέλος στην πολιτική επικαιρότητα τα 4 από
τα 6 παραδείγματα είναι σωστά. Στο σύνολο τους 26 από τα 41 είναι σωστά που εκφράζεται
σε επιτυχία 63%
Διπλωματική Εργασία 78
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
5. Επίλογος
Διπλωματική Εργασία 79
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
Διπλωματική Εργασία 80
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
lemmatizer = GreekStemmer()
hm_lines = 100000
Διπλωματική Εργασία 81
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
if __name__ == '__main__':
train_x, train_y, test_x, test_y =
create_feature_sets_and_labels('pos.txt', 'neg.txt')
print("len of lexicon")
print("Εκπαιδευση Νευρωνικού Δυκτίου Ταξινόμισης Κειμένου")
ΚΟΜΒΟΙ_ΕΠΙ_1 = 100
ΚΟΜΒΟΙ_ΕΠΙ_2 = 50
ΚΟΜΒΟΙ_ΕΠΙ_3 = 30
ΕΠΟΧΕΣ= 500
ΕΞΟΔΟΙ = 2
batch_size = 100
Διπλωματική Εργασία 82
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
x = tf.placeholder('float',name='x')
y = tf.placeholder('float',name='y')
keep_prob = tf.placeholder(tf.float32,name='keep_prob')
with tf.name_scope('hidden_layer_1'):
with tf.name_scope('hidden_layer_2'):
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2 = {'ΒΑΡΗ': tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_1,
ΚΟΜΒΟΙ_ΕΠΙ_2]),name='weights'),
'ΤΑΣΗ': tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_2]),name='bias')}
with tf.name_scope('hidden_layer_3'):
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3 = {'ΒΑΡΗ': tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_2,
ΚΟΜΒΟΙ_ΕΠΙ_3]),name='weights'),
'ΤΑΣΗ': tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_3]),name='bias')}
with tf.name_scope('output_layer'):
ΕΠΙΠΕΔΟ_ΕΞΟΔΟΥ = {'ΒΑΡΗ': tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_3,
ΕΞΟΔΟΙ]),name='weights'),
'ΤΑΣΗ': tf.Variable(tf.random_normal([ΕΞΟΔΟΙ]),name='bias') }
def MONTELO_NEYRONIKOY_DYKTIOY(data):
with tf.name_scope('l1'):
l1 = tf.add(tf.matmul(data, ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1['ΒΑΡΗ']),
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1['ΤΑΣΗ'])
l1 = tf.nn.relu(l1)
drop_out=tf.nn.dropout(l1,keep_prob)
tf.summary.histogram('weights',ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1['ΒΑΡΗ'])
tf.summary.histogram('bias',ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1['ΤΑΣΗ'])
tf.summary.histogram('activation',l1)
with tf.name_scope('l2'):
l2 = tf.add(tf.matmul(l1, ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2['ΒΑΡΗ']),
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2['ΤΑΣΗ'])
l2 = tf.nn.relu(l2)
drop_out=tf.nn.dropout(l2,keep_prob)
Διπλωματική Εργασία 83
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
tf.summary.histogram('weights',ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2['ΒΑΡΗ'])
tf.summary.histogram('bias',ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2['ΤΑΣΗ'])
tf.summary.histogram('activation',l2)
with tf.name_scope('l3'):
l3 = tf.add(tf.matmul(l2,ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3['ΒΑΡΗ']),
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3['ΤΑΣΗ'])
l3 = tf.nn.relu(l3)
drop_out=tf.nn.dropout(l3,keep_prob)
tf.summary.histogram('weights',ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3['ΒΑΡΗ'])
tf.summary.histogram('bias',ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3['ΤΑΣΗ'])
tf.summary.histogram('activation',l3)
return ΕΞΟΔΟΣ
saver = tf.train.Saver()
def EKPAIDEYSH_NEYRONIKOY_DYKTIOY(x):
with tf.name_scope('Model'):
prediction = MONTELO_NEYRONIKOY_DYKTIOY(x)
with tf.name_scope('Loss'):
cost =
tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=
prediction, labels= y))
with tf.name_scope('Adam'):
optimizer =
tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
with tf.name_scope('Accuracy'):
tf.summary.scalar("cost", cost)
Διπλωματική Εργασία 84
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
tf.summary.scalar("accuracy", accuracy)
summarizer = tf.summary.merge_all()
train_writer =
tf.summary.FileWriter(logdir="/home/tf2/train/train", graph=sess.graph)
test_writer=tf.summary.FileWriter(logdir="/home/tf2/train/test")
sess.run(tf.global_variables_initializer())
epoch_loss = 0
i = 0
start = i
end = i+batch_size
train_writer.add_summary(summary, i)
_,summary,c
=sess.run([optimizer,summarizer,cost],feed_dict={x: test_x, y: test_y,
keep_prob: 1})
test_writer.add_summary(summary, i)
epoch_loss += c
i += batch_size
epoch +=1
saver.save(sess, "/home/tf2/train/model.ckpt")
EKPAIDEYSH_NEYRONIKOY_DYKTIOY(x)
Διπλωματική Εργασία 85
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
lemmatizer =GreekStemmer()
ΚΟΜΒΟΙ_ΕΠΙ_1 = 100
ΚΟΜΒΟΙ_ΕΠΙ_2 = 50
ΚΟΜΒΟΙ_ΕΠΙ_3 = 30
ΕΞΟΔΟΙ = 2
batch_size = 100
ΕΠΟΧΕΣ = 10
x = tf.placeholder('float')
y = tf.placeholder('float')
current_epoch= tf.Variable(1)
Διπλωματική Εργασία 86
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
def MONTELO_NEYRONIKOY_DYKTIOY(data):
l1 = tf.add(tf.matmul(data, ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1['ΒΑΡΗ']),
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1['ΤΑΣΗ'])
l1 = tf.nn.relu(l1)
l2 = tf.add(tf.matmul(l1, ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2['ΒΑΡΗ']),
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2['ΤΑΣΗ'])
l2 = tf.nn.relu(l2)
l3 = tf.add(tf.matmul(l2,ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3['ΒΑΡΗ']),
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3['ΤΑΣΗ'])
l3 = tf.nn.relu(l3)
return ΕΞΟΔΟΣ
saver =
tf.train.import_meta_graph('/home/tf/tensor/train/model.ckpt.meta')
def use_neural_network(input_data):
prediction = MONTELO_NEYRONIKOY_DYKTIOY(x)
with open('lexicon.pickle','rb') as f:
lexicon = pickle.load(f)
features = np.array(list(features))
#featureset.append([features,classification])
# pos: [1,0] , argmax: 0
# neg: [0,1] , argmax: 1
result =
(sess.run(tf.argmax(prediction.eval(feed_dict={x:[features]}),1)))
if result[0] == 0:
print('Positive:',input_data)
elif result[0] == 1:
print('Negative:',input_data)
Διπλωματική Εργασία 87
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
ΒΙΒΛΙΟΓΡΑΦΙΑ
Διπλωματική Εργασία 88
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
e-book
Διαδικτυακοί σύνδεσμοι
1.https://www.python.org/
2.https://www.tensorflow.org/
3. http://www.nltk.org/
4. https://github.com/skroutz/greek_stemmer
5.https://www.analyticsvidhya.com/blog/2017/01/ultimate-guide-to-understand-implement-
natural-language-processing-codes-in-python/
6.http://ieeetv.ieee.org/conference-highlights/fun-and-games-with-artificial-intelligence-
david-b-fogel
6. https://en.wikipedia.org/wiki/Artificial_neural_network
7.https://el.wikipedia.org/wiki/%CE%9D%CE%B5%CF%85%CF%81%CF%8E%CE%BD%
CE%B1%CF%82#/media/File:Neuron_el.svg
8.https://el.wikipedia.org/wiki/%CE%94%CF%85%CE%BD%CE%B1%CE%BC%CE%B9
%CE%BA%CF%8C_%CE%B5%CE%BD%CE%AD%CF%81%CE%B3%CE%B5%CE%B
9%CE%B1%CF%82#/media/File:Aktionspotential_el.svg
9.http://www.turingarchive.org/
10.http://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf
11. https://www.analyticsvidhya.com/blog/2017/01/ultimate-guide-to-understand-implement-
natural-language-processing-codes-in-python/
12.http://help.sentiment140.com/home
Διπλωματική Εργασία 89
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση
13, http://alexlenail.me/NN-SVG/index.html
14.https://el.wikipedia.org/wiki/%CE%9D%CE%B5%CF%85%CF%81%CF%8E%CE%BD
%CE%B1%CF%82#/media/File:Neuron_el.svg
15. https://en.wikipedia.org/wiki/Overfitting#/media/File:Overfitting.svg
16. https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1751-5823.2011.00149_2.x
Διπλωματική Εργασία 90