You are on page 1of 103

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ

ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΞΕΙΔΙΚΕΥΣΗ
ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΒΑΘΙΑ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ Κ ΑΙ ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ


ΣΤΗΝ ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ

ΚΑΣΣΩΤΑΚΗΣ ΑΝΔΡΕΑΣ

ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ
Δρ. ΡΕΦΑΝΙΔΗΣ ΙΩΑΝΝΗΣ

ΠΑΤΡΑ
ΙΟΥΛΙΟΣ , 2018
© Ελληνικό Ανοικτό Πανεπιστήμιο, 2018
Η παρούσα Εργασία καθώς και τα αποτελέσματα αυτής, αποτελούν συνιδιοκτησία του ΕΑΠ και του φοιτητή, ο
καθένας από τους οποίους έχει το δικαίωμα ανεξάρτητης χρήσης, αναπαραγωγής και αναδιανομής τους (στο
σύνολο ή τμηματικά) για διδακτικούς και ερευνητικούς σκοπούς, σε κάθε περίπτωση αναφέροντας τον τίτλο
και το συγγραφέα της Εργασίας καθώς και το όνομα του ΕΑΠ όπου εκπονήθηκε.
ΒΑΘΙΑ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ
ΣΤΗΝ ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ

Ανδρέας Κασσωτάκης

Επιτροπή Επίβλεψης Διπλωματικής Εργασίας

Επιβλέπων καθηγητής Εξεταστής


Ιωάννης Ρεφανίδης Δημήτριος Καλλές
Καθηγητής ΠαΜακ Αναπλ. Καθηγητής ΕΑΠ

Πάτρα, Ιούλιος 2018


Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Στον Βαγγέλη,
που δεν καταλάβαινε
τι λέγαν τα κομπιούτερ και οι αριθμοί

Διπλωματική Εργασία iii


Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Διπλωματική Εργασία iv
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Περίληψη

Στην παρούσα εργασία μελετήθηκε η δυνατότητα επεξεργασίας της φυσικής γλώσσας με την
χρήση νευρωνικών δικτύων. Τα τελευταία χρόνια τα βαθιά νευρωνικά δίκτυα δηλαδή τα
νευρωνικά δίκτυα πολλών επιπέδων, έχουν επιτύχει αξιοσημείωτες επιδόσεις στο χώρο της
μηχανικής μάθησης και ιδιαίτερα της επιβλεπόμενης μάθησης. Ένας από τους χώρους
εφαρμογής τους είναι η επεξεργασία της φυσικής γλώσσας. Η επεξεργασία φυσικής
γλώσσας περιλαμβάνει τομείς όπως αυτόματη μετάφραση, περίληψη, ταξινόμηση κειμένου
κ.α. Στην εργασία μελετήθηκε το πρόβλημα της ταξινόμησης κειμένου με βάση το
συναίσθημα και ιδιαίτερα αν το κείμενο περιέχει θετικό ή αρνητικό συναίσθημα.
Για την δημιουργία του νευρωνικού δικτύου, αναπτύχθηκε λογισμικό σε γλώσσα
Προγραμματισμού Python με τη χρήση της βιβλιοθήκης Tensorflow η οποία αναπτύχθηκε
από την Google ΑΙ για τον σκοπό αυτό. Η βιβλιοθήκη Tensorflow παρέχει όλες τις μεθόδους
που χρησιμοποιούνται για την υλοποίηση της βαθιάς μάθησης όπως, συναρτήσεις
ενεργοποιήσεως, του αλγορίθμου οπισθοδιάδοσης και στοχαστικών αλγορίθμων
βελτιστοποίησης.
Για την υλοποίηση της εργασίας χρησιμοποιήθηκαν δεδομένα κειμένου τα οποία
αντλήθηκαν από διάφορους διαδικτυακούς χώρους, επεξεργάστηκαν και με την μέθοδο της
¨σακούλας λέξεων¨ δημιουργήθηκε ένα λεξικό το οποίο χρησιμοποιήθηκε για την
εκπαίδευση ενός νευρωνικού δικτύου. Το δίκτυο αποτελείται από ένα επίπεδο εισόδου,
τριών κρυφών επίπεδων και ενός επιπέδου εξόδου.
Τέλος, μελετήθηκε η απόδοση του δικτύου με βάση το σετ δεδομένων κειμένου που
χρησιμοποιήθηκε καθώς και με την εισαγωγή δεδομένων κειμένου που δεν είχαν εισαχθεί
ποτέ στο δίκτυο.

Λέξεις – Κλειδιά

Μηχανική Μάθηση, Νευρωνικά δίκτυα, Επιβλεπόμενη Μάθηση, Βαθιά Νευρωνικά δίκτυα,


Βαθιά μάθηση, Σακούλα λέξεων, 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

Διπλωματική Εργασία vii


Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.9.8 Συνάρτηση Ενεργοποίησης Relu……………………………………………………47


2.9.9 Πολυεπίπεδα Νευρωνικά δίκτυα (Multilayer Neural Networks).….…………….…..48
2.9.10 Back propagation…………………… .….………………………………………….49
3 Ανάλυση Συναισθήματος με TensorFlow……………...…………………………….52
3.1 Python…………………………………………….…………………………………..52
3.2 Τανυστές (Tensors)……………………...……….…………………………………..53
3.3 Δημιουργία και χειρισμός μεταβλητών TensorFlow……..………………………….55
3.4 Λειτουργίες TensorFlow………………..……………………………………………57
3.5 Placeholder Tensors………………………………………………………………….58
3.6 Sessions στο TensorFlow………………………………………………………...…..59
3.7 Λογιστική παλινδρόμηση και στοχαστικοί αλγόριθμοι στο Tensor Flow……………60
3.8 Υλοποίηση MLP στο TensorFlow……………………………………...……………61
3.9 Άντληση παραδειγμάτων……......…………………………………………………...62
3.10 Σακούλα λέξεων (BAG OF WORDS)……………………………………………….63
3.11 Αλγόριθμος δημιουργίας λεξικού συναισθήματος…………………………………...64
3.12 Εφαρμογή του εκπαιδευμένου νευρωνικού δικτύου……………………..…………..65
4 Εφαρμογή Ανάλυσης συναισθήματος από Ελληνικό κείμενο σε Νευρωνικό δίκτυο
πολλών στρωμάτων……………………………………………………………………….....67
4.1 Αρχιτεκτονική μοντέλου εκπαίδευσης…………….………………………………..67
4.2 Οπτικοποίηση δεδομένων εκπαίδευσης……………………..………………………67
5 Επίλογος………………………………………………………………………….…..77
Παράρτημα Α………………………………………………………………………………...81
1. Αλγόριθμος Bag of words…………………………………………………………….81
2. Νευρωνικό δίκτυο εκπαίδευσης……………………………………………………....82
3. Νευρωνικό δίκτυο εισαγωγής τυχαίων παραδειγμάτων……………………………....86

Διπλωματική Εργασία viii


Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Κατάλογος εικόνων

Εικόνα 1 : Βιολογικός Νευρώνας…….……………………………………………………….5


Εικόνα 2 : Ενεργοποίηση Νευρώνα…………………………………………………………...7
Εικόνα 3 : Μοντέλο McCuloch Pitts…………………………………………………………..8
Εικόνα 4 : Απλοποιημένο Μοντέλο Τεχνητού Νευρώνα…………………………………….10
Εικόνα 5 : Διαχωρισμός θετικών και αρνητικών αποτελεσμάτων…………………………...14
Εικόνα 6 : Μια από τις άπειρες διαχωριστικές γραμμές διαχωρισμού δύο κλάσεων………..15
Εικόνα 7 : Perceptron πολλών επιπέδων……………………..………………………………16
Εικόνα 8 : Σήματα Νευρώνων………………………………………………………………..17
Εικόνα 9 : Ενός επιπέδου πρόσθιας τροφοδότησης …………………………………………19
Εικόνα 10 : Πολυεπίπεδο δίκτυο πρόσθιας τροφοδότησης………………………………….20
Εικόνα 11 : Αναδρομικό Νευρωνικό Δίκτυο………………………………………………...21
Εικόνα 12 : Επιβλεπόμενη μάθηση…………………………………………………………. 23
Εικόνα 13 : Μη επιβλεπομένη μάθηση…………………………………………………...… 23
Εικόνα 14 : Ενισχυτική μάθηση……………………………………………………..……… 24
Εικόνα 15 : Τοπικό ελάχιστο 𝛸1 Ολικό ελάχιστο 𝛸2……………...…………………………28
Εικόνα 16 : Ταξινομητής φυσικής γλώσσας……………………………………...………… 31
Εικόνα 17 : Μετατροπή εικόνας σε τεχνοτροπία πίνακα…………………………………… 33
Εικόνα 18 : Διαδικασία τιμών εισόδου χ σε logits……………………………...……………35
Εικόνα 19 : Μείωση του κόστους με αλγόριθμο βελτιστοποίησης Gradient Descend………37
Εικόνα 20 : Βελτιστοποίηση με ορμή…………………………………………….………… 38
Εικόνα 21 : learning rate decay ……………………………………………...………………39
Εικόνα 22 : Σύγκριση Ρυθμών Μάθησης………………………………….…………………40
Εικόνα 23 : Απόδοση αλγορίθμων βελτιστοποίησης ……………..…………………………41
Εικόνα 24 : Υπερπροσαρμογή παραδειγμάτων……………………………………...……… 42

Διπλωματική Εργασία 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
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 52 : Λέξεις κλειδιά …………………………………………………..………………76


Εικόνα 53 : Κριτικές ταινιών………………………………………...………………………77
Εικόνα 54 : Πολιτική επικαιρότητα …………………………………………………………77
Εικόνα 55 :Κριτικές καταστημάτων προϊόντων…………...…………………………………78

Κατάλογος πινάκων

Πίνακας 1 : Βηματικές Συναρτήσεις…………………………………………………………10


Πίνακας 2 : Διαστάσεις Tensorflow σε πίνακα……………...…………………….…………54
Πίνακας 3 : Αρχικοποίηση μεταβλητής ………………………………..……………………55
Πίνακας 4 : Πίνακας λειτουργιών Tensorflow………………….……………………………57
Πίνακας 5 : Ορισμός Placeholder………………………………………….…………………58
Πίνακας 6 : Συνάρτηση κόστους και στοχαστικοί αλγόριθμοι βελτιστοποίησης……………60

Συντομογραφίες & Ακρωνύμια

ADAGRAD : ADAptive GRAdient Descent


ADAM : ADAptive Momentum
CNN : Convolutional Neural Networks
MLP : Multi-Layer Perceptron
NLP : Natural Language Processing
NLTK : Natural Language Toolkit
RELU : REctified Linear Unit
RCNN : Recurrent Convolutional Neural Networks
RNN : Recurrent Neural Networks
SGD : Stochastic Gradient Descent

Διπλωματική Εργασία xi
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Διπλωματική Εργασία xii


Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

1. Εισαγωγή

1.1 Σκοπός

Σκοπός της παρούσας διπλωματικής είναι η μελέτη νευρωνικών δικτύων και ιδιαίτερα μιας
κατηγορίας νευρωνικών δικτύων πολλών στρωμάτων (Multi-Layer Perceptron ή MLP)
πλήρως συνδεδεμένο (fully connected) πρόσθιας τροφοδότησης (Feed forward) γνωστά ως
βαθιά νευρωνικά δίκτυα (Deep Neural Networks). Θα υλοποιηθεί ένα Νευρωνικό Δίκτυο
χρησιμοποιώντας μια βιβλιοθήκη της Python γνωστής ως TensorFlow για την μελέτη του
προβλήματος ανάλυσης και ταξινόμησης συναισθήματος (sentiment analysis), το οποίο θα
είναι στην Ελληνική Γλώσσα.

1.2 Ιστορική Αναδρομή

Η Τεχνητή Νοημοσύνη (Artificial Intelligence), είναι μία από τις νεότερες επιστήμες η οποία
μελετά τον τρόπο με τον οποίο ο άνθρωπος σκέπτεται αντιλαμβάνεται κατανοεί το περιβάλλον
και πως αλληλοεπιδρά με αυτό και ασχολείται με το πώς θα δημιουργηθούν μηχανές –
υπολογιστές οι οποίες υλοποιούν αυτές τις δυνατότητες (Russel, Norving, 2003). Πολλές
επιστήμες όπως η Φιλοσοφία, τα Μαθηματικά, τα Οικονομικά, οι Νευρωεπιστήμες, η
Ψυχολογία και η Γλωσσολογία ασχολήθηκαν με το πώς λειτουργεί η Νοημοσύνη είτε σε
φυσικό είτε σε θεωρητικό επίπεδο, με το πως πραγματοποιείται η λήψη μιας απόφασης η
κατανόηση ενός ακουστικού μηνύματος και η οπτική αναγνώριση ενός αντικειμένου. Πρώτος
ο Έλληνας Φιλόσοφος Αριστοτέλης (384- 322 π.Χ.) διατύπωσε ένα ακριβές σύνολο νόμων
που διέπουν το ορθολογικό μέρος της νόησης. Ανέπτυξε ένα άτυπο σύστημα συλλογισμών για
τη σωστή συλλογιστική, οι οποίοι θεωρητικά επέτρεπαν να παράγει κάνεις συμπεράσματα
μηχανικά με δεδομένες κάποιες αρχικές υποθέσεις. Θεωρείται ο πατέρας του πρώτού
αλγορίθμου ο οποίος αναπτύχθηκε 2300 χρόνια αργότερα από τους Newell και Simon.

Ο George Boole Μαθηματικός (1815-1864) ανέπτυξε μια μέθοδο γνωστή ως προτασιακή


λογική η οποία ονομάστηκε και λογική Boole. Ο Alain Turing το 1950 στην εργασία του με
τίτλο Computing Machinery and Intelligence θέτει τις βάσεις της ΤΝ που ακόμα και σήμερα
είναι γνωστό ως το περίφημο test Turing. Για την υλοποίηση του Turing test χρειάζονταν ένας

Διπλωματική Εργασία 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
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

παρουσιάζονται το μοντέλο perceptron πολλών στρωμάτων (Multi-Layer Perceptron ή MLP )


σε συνδυασμό με τον αλγόριθμο εκπαίδευσης Back Propagation το δίκτυο Νευρώνων αποκτά
απεριόριστες δυνατότητες αναπαράστασης συναρτήσεων και διαχωρισμού κλάσεων. Η
απόδοση των ηλεκτρονικών υπολογιστών την περίοδο τότε καθιστούσε απαγορευτική την
δημιουργία και εκμετάλλευση τέτοιων μοντέλων με αποτέλεσμα για 20 τουλάχιστον χρόνια
να μην πάρει τις ερευνητικές και πρακτικές διαστάσεις που έχει σήμερα το συγκεκριμένο
πεδίο.

Το 1990 ο Ολλανδός Guido van Rossum δημιούργησε μια υψηλού επιπέδου γλώσσα
προγραμματισμού την Python. Κύριος στόχος της είναι η αναγνωσιμότητα του κώδικά της και
η ευκολία χρήσης της. Το συντακτικό της επιτρέπει στους προγραμματιστές να εκφράσουν
έννοιες σε λιγότερες γραμμές κώδικα απ’ ότι θα ήταν δυνατόν σε γλώσσες όπως η C η C++ ή
Java. Διακρίνεται λόγω του ότι έχει πολλές βιβλιοθήκες που διευκολύνουν ιδιαίτερα αρκετές
συνηθισμένες εργασίες και για την ταχύτητα εκμάθησης της. Η γλώσσα Python θεωρείται
γλώσσα τεχνητής Νοημοσύνης τείνει να αντικαταστήσει την γλώσσα προγραμματισμού LISP
που δημιουργήθηκε μόνο για το σκοπό αυτό. Τέλος η απλότητα της καθώς και το γεγονός ότι
δεν ανήκει καθαρά στις γλώσσες προγραμματισμού αντικειμενοστραφούς ή συναρτησιακής
λογικής αλλά μπορεί να υλοποιήσει τέτοιου είδους προγράμματα την καθιστούν πολύ ισχυρή
γλώσσα που σε συνδυασμό με το πλήθος των βιβλιοθηκών της συναγωνίζεται άλλες γλώσσες
όπως η JAVA, C#,C++.

Το 2011 η Google Brain Team δημιούργησε το DistBelief ως ιδιόκτητο σύστημα μηχανικής


μάθησης που βασίζεται σε νευρωνικά δίκτυα βαθιάς μηχανικής μάθησης. Η χρήση του
αυξήθηκε ταχύτατα σε ποικίλες εταιρείες της Alphabet (Μητρική εταιρία της Google) τόσο σε
ερευνητικές όσο και σε εμπορικές εφαρμογές. Η Google ανέθεσε σε πολλούς επιστήμονες
υπολογιστών, συμπεριλαμβανομένου του Jeff Dean, να απλοποιήσουν και να
επαναπροσδιορίσουν τον κώδικα βάσης του DistBelief σε μια ταχύτερη και πιο στιβαρή
βιβλιοθήκη εφαρμογών, η οποία έγινε TensorFlow. Το 2015 δόθηκε στο κοινό υπό την άδεια
ανοικτού κώδικα Apache 2.0 ως βιβλιοθήκη της Python. Τέλος το 2016 παρουσιάστηκε η
έκδοση TensorFlow V1.0. Στην παρούσα εργασία θα χρησιμοποιηθεί η έκδοση 1.4. Το
TensorFlow χρησιμοποιείται για ένα πλήθος εφαρμογών όπως την αναγνώριση εικόνας, την

Διπλωματική Εργασία 3
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

αυτόματη μετάφραση, καθώς και την ανάλυση συναισθήματος (sentiment analysis) που θα
μελετηθεί στην παρούσα διπλωματική.

Διπλωματική Εργασία 4
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2. Νευρωνικά δίκτυα Μηχανική Μάθηση και επεξεργασία


φυσικής Γλώσσας

2.1 Νευρωνικά Δίκτυα

O εγκέφαλος είναι ένας πολύπλοκος, μη γραμμικός, παράλληλος επεξεργαστής που οργανώνει


τα δομικά του στοιχεία τους Νευρώνες, με τέτοιο τρόπο ώστε να εκτελούν υπολογισμούς
(αναγνώριση προτύπων, αντίληψη, έλεγχος, κίνηση κ.α) με ταχύτητα πολλαπλάσια από ένα
σημερινό υπολογιστή (Haykin 2009). Από την στιγμή της γέννησης, ο εγκέφαλος έχει μία
σημαντική δομή και ικανότητα να κατασκευάζει δικούς του κανόνες συμπεριφοράς (εμπειρία).
Το νευρικό σύστημα του ανθρώπου είναι το σύστημα που ρυθμίζει και ελέγχει τη λειτουργία
όλων των οργάνων του ανθρωπίνου σώματος, καθώς επίσης και τη μεταξύ τους αρμονική
συνεργασία. Αποτελεί επίσης την έδρα των ψυχικών λειτουργιών και επιπλέον μέσω των
αισθητήριων οργάνων (μάτι, αυτί, δέρμα, γλώσσα, μύτη) συμβάλλει στην αντίληψη του
περιβάλλοντος από τον άνθρωπο.

2.2 Βιολογικός Νευρώνας

Ο Νευρώνας (Εικόνα 1) αποτελεί το βασικό δομικό στοιχείο του νευρικού συστήματος ενός
οργανισμού (Διαμαντάρας 2007). Είναι ένα μεγάλο σχετικά κύτταρο σε σύγκριση με άλλα
κύτταρα που συναντάμε σε έναν οργανισμό και αποτελείται από:

Εικόνα 1 Βιολογικός Νευρώνας (πηγή: Wikipedia)

Διπλωματική Εργασία 5
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

α) Το σώμα : είναι το μεγαλύτερο κεντρικό τμήμα του κυττάρου το οποίο


περιλαμβάνει και τον πυρήνα. Συνδέεται με τους δενδρίτες και συνήθως είναι ενός νευράξονα.

β) Τους δενδρίτες : αποτελούν πύλες εισόδου ηλεκτρικών σημάτων από άλλους


νευρώνες μέσω των συνάψεων του.

γ) Τον νευράξονα ή άξονα : ονομάζεται και νευρίτης ή απλά άξονας, είναι μια λεπτή
ίνα που μπορεί να είναι μέχρι και δεκάδες χιλιάδες φορές μεγαλύτερη σε μήκος από τη
διάμετρο του σώματος. Το μήκος της μπορεί να φτάσει και το 1 μέτρο. Αυτή η δομή μεταφέρει
τα νευρικά σήματα από τον νευρώνα. Κάθε νευρώνας διαθέτει μόνο έναν άξονα, αλλά αυτός
ο άξονας μπορεί να διακλαδίζεται έντονα, με ώστε να επιτυγχάνεται η επικοινωνία με πολλά
κύτταρα-στόχους. Εκεί που τελειώνει ο άξονας υπάρχουν σημαντικά στοιχεία, τα τελικά
κομβία, που χρειάζονται για την μεταφορά των πληροφοριών προς άλλους δενδρίτες άλλων
νευρώνων. Οι περισσότεροι νευράξονες είναι μονωμένοι με έλυτρα μυελίνης.

δ) τις συνάψεις (Νευραξονικές απολήξεις) είναι τα σημεία ένωσης μεταξύ διακλαδώσεων


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

Στους βιολογικούς νευρώνες η πληροφορία μεταδίδεται ως ένας ηλεκτρικός παλμός. Κάθε


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

Διπλωματική Εργασία 6
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 2 Ενεργοποίηση Νευρώνα (Πηγή Wikipedia)

Ο ανθρώπινος εγκέφαλος αποτελείται από 100 δισεκατομμύρια νευρώνες και κάθε νευρώνας
έχει περίπου 1000 συνάψεις. Οι περίπου 100 τρισεκατομμύρια συνάψεις καθιστούν τον
ανθρώπινο εγκέφαλο να εκτελεί λειτουργίες που όλες μαζί οδηγούν στην Νοημοσύνη. Αυτές
μπορεί να είναι η αναγνώριση εικόνων, η μνήμη, η αναγνώριση φωνής και κατανόηση
φυσικής γλώσσας, η αντίληψη και κίνηση στον χώρο, η λήψη Αποφάσεων και η μάθηση και
προσαρμογή σε νέα περιβάλλοντα και καταστάσεις.

2.3 Τεχνητός Νευρώνας

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

Διπλωματική Εργασία 7
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

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

2.3.1 Το μοντέλο McCulloch-Pitts

Ο Νευρώνας του μοντέλου McCulloch-Pitts (McCulloch–Pitts,1943) μοντέλο που όπως


αναφέρθηκε στην εισαγωγή έθεσε τις βάσεις της μελέτης και ανάπτυξης των νευρωνικών
δικτύων, περιγράφεται ως μια δραστηριότητα ενός δυαδικού αριθμού y όπου λειτουργεί ως
εξής:

y=0 Ο νευρώνας είναι αδρανής

y=1 Ο νευρώνας ενεργοποιείται

Εικόνα 3 Μοντέλο McCulloch Pitts (Πηγή Wikipedia)

Στην εικόνα 3 αναπαρίσταται το μοντέλο McCulloch-Pitts το οποίο δεν διαφέρει και πολύ με
το μοντέλο Perceptron του Rosenblat όπως θα αναλυθεί στις επόμενες παραγράφους. Οι
δενδρίτες είναι οι εισόδοι 𝑥0 , 𝑥1 , … , 𝑥𝑚 . Οι τιμές 𝑤𝑘0 𝑤𝑘1 𝑤𝑘2,…….. 𝑤𝑘𝑚 είναι πραγματικοί
αριθμοί, θετικοί ονομάζονται συναπτικά βάρη και είναι θετικές για τις ενισχυτικές συνάψεις
και αρνητικές για τις ανασταλτικές συνάψεις. Το σώμα του νευρώνα αναπαρίσταται από την
𝑢𝑘 και την συνάρτηση φ(.) οπού:

Διπλωματική Εργασία 8
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Αν 𝑥1 , 𝑥2,……… 𝑥𝑚 οι εισόδοι, το άθροισμα φορτίου 𝑢𝑘 ισούται :

𝑚 𝑚

𝑢 = ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 ή 𝑢 = ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 − 𝜃 (1)


𝑖=0 𝑖=1

Αν το u είναι μεγαλύτερο από το κατώφλι (threshold) τότε ενεργοποιείται ο Νευρώνας


αλλιώς παραμένει αδρανής και μαθηματικά ισχύει:

y=φ(u-θ) (2)

με φ(.) να είναι η βηματική συνάρτηση η συνάρτηση ενεργοποίησης του νευρώνα. Ο


νευράξονα καταλήγει στην σύναψη 𝑦𝑘 Oι Βηματικές συναρτήσεις η Συναρτήσεις
ενεργοποίησης του Νευρώνα (neuron activation function) έχουν τις μορφές του πίνακα 1
(Διαμαντάρας 2007)

Βηματική (step function)


f(u) = -1 αν u≤0
f(u) = 1 αν u>0
Σιγμοειδής (sigmoid)
f(u) = 1/(1+𝑒 −𝑢 )

Υπερβολική εφαπτομένη (hyperbolic tangent)


f(u) = tanh(u) =/(1-𝑒 −𝑢 )
/(1+𝑒 −𝑢 )

δ. Συνάρτηση κατωφλίου (threshold function)


f(u) = 0 αν u≤0
f(u) = u αν 0<u<1
f(u) = 1 αν u≥1

Διπλωματική Εργασία 9
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

ε. Συνάρτηση ράμπας (ramp function)


f(u) = 0 αν u≤0
f(u) = u αν u≥0

στ. Γραμμική (linear)


f(u) = u

Πίνακας 1 Βηματικές Συναρτήσεις

2.3.2 Το μοντέλο Perceptron.


Το μοντέλο Perceptron η νευρωνικό δίκτυο (Rosenblat,1958) απεικονίζεται στην εικόνα 4. Η
λέξη δίκτυο χρησιμοποιείται καταχρηστικά αφού δεν υπάρχουν περισσότεροι του ενός
νευρώνες για να συνδεθούν μεταξύ τους. Οι μόνες συνδέσεις που υπάρχουν είναι μεταξύ των
εισόδων και του νευρώνα.

Εικόνα 4 Απλοποιημένο Μοντέλο Τεχνητού Νευρώνα (Πηγή Wikipedia)

Διπλωματική Εργασία 10
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Ο νευρώνας του μοντέλου Perceptron είναι η θεμελιώδης μονάδα επεξεργασία πληροφορίας


για τη λειτουργία ενός νευρωνικού δικτύου. Αποτελείται από σύμφωνα με το σχήμα από τρία
βασικά στοιχεία:

1. Τις συνάψεις με κάθε μια από αυτές να έχει το δικό της Βάρος (Weight)

2. Έναν αθροιστή (Adder) ο οποίος αθροίζει τα σήματα εισόδου, σταθμισμένα από τα


συναπτικά βάρη .

3. Μια συνάρτηση ενεργοποίησης (Activation Function) για τον περιορισμό του πλάτους
σήματος εξόδου του νευρώνα το οποίο συνήθως παίρνει τις τιμές [0,1] ή [-1,1]

4. Την πόλωση (bias) η οποία ανάλογα με το αν είναι θετική ή αρνητική έχει ως αποτέλεσμα
την αύξηση ή μείωση της δικτυακής διέγερσής της συνάρτησης ενεργοποίησης.

Μαθηματικά υλοποιείται όπως η (1) την παρακάτω συνάρτηση μεταφοράς :

𝑢 = ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 − 𝜃
𝑖=1

με y=f(u) (3)

η για συντομία από τις δυο ανωτέρω:


𝑚

𝑦 = 𝑓 (∑ 𝑤𝑘𝑖 𝑥𝑖 − 𝜃) (4)
𝑖=1

με τα διανύσματα εισόδου είναι τα 𝑥1 , 𝑥2 , 𝑥3 …..𝑥𝑚 και τα συναπτικά βάρη να είναι τα


𝑤𝑘1 , 𝑤𝑘2 , 𝑤𝑘3 ……𝑤𝑘𝑚 , το κατώφλι ενεργοποίησης είναι η παράμετρος θ, και η Πόλωση
(bias) είσοδος 𝑥0 και έχει την τιμή +1 .

Διπλωματική Εργασία 11
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Η διέγερση u είναι θετική αν


𝑚

𝑢 > 0, ά𝜈 ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 > 𝜃


𝑖=1

𝑢 = 0, ά𝜈 ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 = 𝜃
𝑖=1

𝑢 < 0, ά𝜈 ∑ 𝑊𝑘𝑖 ∗ 𝑥𝑖 < 𝜃


𝑖=1

Η συνάρτηση ενεργοποίησης f(.) τροφοδοτείται από τη διέγερση u και δίδει την έξοδο y του
νευρώνα. Είναι μη γραμμική και ειδικά στο Perceptron παίρνει μια από τις παρακάτω δύο
μορφές.

1, 𝛼𝜈 𝑢 > 0
𝑓(𝑥) = {
0, 𝛼𝜈 𝑢 ≤ 0

1, 𝛼𝜈 𝑢 > 0
𝑓(𝑥) = {
−1, 𝛼𝜈 𝑢 ≤ 0

Η έξοδος y έχει αποτέλεσμα είτε την κλασική μορφή (1/0) ή τη διπολική μορφή (1/-1). Η
συμπεριφορά του νευρώνα είναι το διάνυσμα των συναπτικών βαρών:

𝑤 = [𝑤1 , 𝑤2 , … … . . 𝑤𝑛 ]𝑇 και το κατώφλι θ.

Το μοντέλο της εξίσωσης 1α μπορεί να απλοποιηθεί αν το κατώφλι θ θεωρηθεί ως ένα ακόμη


συνοπτικό βάρος (𝑤0 ) το οποίο θα πολλαπλασιαστεί με την σταθερή είσοδο 𝑥0 = −1 οπότε
ισχύει η εξίσωση :

Διπλωματική Εργασία 12
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

𝑢 = ∑ 𝑤𝑖 𝑥𝑖 + 𝑤0 𝑥0 (5)
𝑖=1

και αν ι=0 έως n


𝑛

𝑢 = ∑ 𝑤𝑖 𝑥𝑖 (6)
𝑖=0

Έτσι εισάγεται μία είσοδος 𝑥0 με σταθερή τιμή -1. Προκύπτει ότι το διάνυσμα εισόδου :

𝑥 = [𝑥0 , 𝑥1 , 𝑥2 , … … . . , 𝑥𝑛 ]𝑇 (7)

είναι n+1 αντί για n. Έτσι με τον ανωτέρω μετασχηματισμό συνηθίζεται να χρησιμοποιείται
την εξίσωση 5 διότι όλες οι παράμετροι είναι ομοιογενοποιημένες στο διάνυσμα παραμέτρων:

𝑊 = [𝑤0 , 𝑤1 , 𝑤2 , … … . . , 𝑤𝑛 ]𝑇 (8)

και το κατώφλι ενεργοποίησης αντιμετωπίζεται με τον ίδιο τρόπο όπως τα συναπτικά βάρη.
Το ίδιο ομογενοποιημένο αποτέλεσμα θα επιτύχουμε αν ορίσουμε 𝑤0 = −𝜃 και 𝑥0 = 1. Στη
περίπτωση αυτή ισχύει η εξίσωση 5 απλά το συναπτικό βάρος 𝑤0 είναι το αντίθετο του
κατωφλιού και ονομάζεται πόλωση (bias) και η είσοδος θα ισούται με 𝑥0 =1.

Έτσι η εξίσωση 5 εκφράζεται και ως το εσωτερικό γινόμενο των διανυσμάτων W και X


οπότε ισχύει ότι:

𝑢 = 𝑊 𝑇 𝑋 (9)

Η μορφή της συνάρτησης μεταφοράς (η τιμή y σε συνάρτηση του x) εξαρτάται από την τιμή
της διέγερσης u και από την επιλογή της συνάρτησης f(.). Αν χρησιμοποιηθεί η συνάρτηση
ενεργοποίησης (1/0) τότε y=1 αν u>0 και y=0 αν u≤0 η εξίσωση :
𝑚

𝑦 = 𝑓(∑ 𝑤𝑘𝑖 ∗ 𝑥𝑖 − 𝜃)(10)


𝑖=1

αντιστοιχεί σε υπερεπιπέδου σε χώρο n διαστάσεων (ℝ𝑛 ). Τα στοιχεία x που αντιστοιχούν σε


θετικές τιμές u>0 βρίσκονται από τη μία πλευρά του υπερεπιπέδου ενώ τα σημεία x που

Διπλωματική Εργασία 13
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

αντιστοιχούν σε αρνητικές τιμές u<0 βρίσκονται στην απέναντι πλευρά του υπερεπιπέδου. Τα
σημεία με u=0 είναι πάνω στο υπερ-επίπεδο. Το υπερεπίπεδο u=0 χωρίζει τον χώρο (ℝ𝑛 ) σε
δυο μέρη τον ένα με y=1 και σε άλλο με y=0.

Όπως φαίνεται στην εικόνα 5 στον χώρο (ℝ𝑛 ) η εξίσωση 𝑢 = 𝑤1 𝑥1 + 𝑤2 𝑥2 − 𝜃 = 0 ορίζει


μία ευθεία η οποία είναι κάθετη στο διάνυσμα των συναπτικών βαρών 𝑤 = [𝑤1 , 𝑤2 ]𝑇 . Η
ευθεία αυτή χωρίζει το επίπεδο σε δύο τμήματα το ένα προς κατεύθυνση w που έχει τα σημεία
X για u >0 ή y=1 και την αντίθετη κατεύθυνση προς w με τα σημεία x για u<0 ή y=0.

Εικόνα 5 Διαχωρισμός θετικών και αρνητικών αποτελεσμάτων (Πηγή Διαμανταράς)

Το δίκτυο Perceptron λύνει προβλήματα ταξινόμησης. Δηλαδή παίρνουμε δύο κλάσεις στις
οποίες πρέπει να επιλέξουμε κάποια χαρακτηριστικά (features). Έστω ότι έχουμε τα
χαρακτηριστικά 𝑥1, 𝑥2 . Το διάνυσμα των χαρακτηριστικών της κλάσης 𝑋 = [𝑥1 , 𝑥2 ]𝑇
ονομάζεται πρότυπο. Αν σχεδιαστούν για τα πρότυπα 𝑋1, 𝑋2 σε επίπεδο χώρο θα έχουμε
κατανομές όπως την εικόνα 6. Έτσι από τις διαφορετικές κατανομές είναι δυνατό να βρεθεί
μια διαχωριστική ευθεία που να χωρίζει τις δυο κλάσεις. Σε αυτή την περίπτωση οι κλάσεις
λέγονται γραμμικά διαχωρίσιμες. Το πρόβλημα όπως παρουσιάζεται από την εικόνα 6 έχει
πολλές λύσεις αφού υπάρχουν πολλές διαχωριστικές γραμμές που μπορούν να λύσουν το
συγκεκριμένο πρόβλημα.

Διπλωματική Εργασία 14
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 6 Μια από τις απειρες διαχωτιστικές γραμμές διαχωρισμού δυο κλάσσεων (Πηγή Διαμανταράς )

Ένας νευρώνας Perceptron μπορεί να λύσει γραμμικά διαχωρίσιμα προβλήματα. Υπάρχουν


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

2.4 Το μοντέλο Perceptron πολλών στρωμάτων (MLP).

Το μοντέλο Perceptron με ένα μόνο Νευρώνα μπορεί να αναπαραστήσει μόνο επίπεδες


επιφάνειες, όπως αναλύθηκε στην προηγουμένη παράγραφο. Το μοντέλο Perceptron πολλών
στρωμάτων (Multiple layer Perceptron MLP) λύνει αυτό το πρόβλημα. Βασικά
χαρακτηριστικά του Perceptron πολλών επιπέδων είναι ότι κάθε νευρώνας περιλαμβάνει μία μη
γραμμική συνάρτηση ενεργοποίησης η οποία πρέπει να είναι διαφορίσημη (Simon
Haykin,2009). Το δίκτυο περιέχει ένα ή περισσότερα επίπεδα τα οποία παραμένουν κρυφά για
τους κόμβους των επιπέδων εισόδου και εξόδου. Τέλος, το δίκτυο επιδεικνύει μεγάλη
συνδεσιμότητα ο βαθμός της οποίος καθορίζεται από τα συναπτικά βάρη του δικτύου. Στην
εικόνα 7 απεικονίζεται ένας αρχιτεκτονικός γράφος Perceptron πολλών επιπέδων με δύο
επίπεδα κρυφά και ένα επίπεδο εξόδου. Το δίκτυο είναι πλήρως συνδεδεμένο (fully connected)
που σημαίνει ότι ένας νευρώνας σε οποιοδήποτε επίπεδο του δικτύου συνδέεται με όλους τους

Διπλωματική Εργασία 15
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

νευρώνες (κόμβους) του προηγουμένου επιπέδου και με την σειρά του συνδέει όλους τους
νευρώνες του επόμενου.

Εικόνα 7 Perceptron πολλών επιπέδων

Οι νευρώνες εξόδου απαρτίζουν το επίπεδο εξόδου του δικτύου. Οι υπόλοιποι νευρώνες


αποτελούν τα κρυφά επίπεδα του δικτύου. Το πρώτο κρυφό επίπεδο τροφοδοτείται από το
επίπεδο εισόδου του δικτυού, το οποίο αποτελείται από μονάδες εισόδου. οι μονάδες εισόδου
δεν είναι νευρώνες δηλαδή δεν εκτελούνται υπολογισμοί, αλλά εισάγουν τα δεδομένα στο
δίκτυο. Οι έξοδοί που παράγονται από το πρώτο κρυφό επίπεδο εφαρμόζονται στο επόμενο
κρυφό επίπεδο η διαδικασία συνεχίζεται κατά τον ίδιο τρόπο για όλο το υπόλοιπο του δικτύου.

Κάθε νευρώνας perceptron εκτελεί δύο υπολογισμούς:

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

Διπλωματική Εργασία 16
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

β. Τον υπολογισμό μιας εκτίμησης του διανύσματος κλίσης (των κλίσεων της
επιφάνειας σφάλματος σε σχέση με τα βάρη που είναι συνδεδεμένα στις εισόδους ενός
νευρώνα) ο οποίος χρειάζεται για τη φάση που εξελίσσεται προς τα πίσω στο δίκτυο.

2.4.1 Λειτουργία κρυφών νευρώνων

Οι κρυφοί νευρώνες εκτελώντας τους υπολογισμούς, λειτουργούν ως ανιχνευτές


χαρακτηριστικών (features detectors). Καθώς προχωρά η διαδικασία μάθησης οι κρυφοί
νευρώνες αρχίζουν να ανακαλύπτουν χαρακτηριστικά που χαρακτηρίζουν τα δεδομένα
εκπαίδευσης. Αυτό γίνεται εκτελώντας ένα μη γραμμικό μετασχηματισμό στα σημεία εισόδου
σε ένα χώρο που αποκαλείται χώρος χαρακτηριστικών. Σε αυτόν το χώρο κλάσεις
χαρακτηριστικών που ενδιαφέρουν μια εργασία ταξινόμησης προτύπων, για παράδειγμα,
μπορούν να ξεχωρίσουν από οτιδήποτε άλλο θα μπορούσε να υπάρχει στον αρχικό χώρο
δεδομένών εισόδου. Ο σχηματισμός αυτού του χώρου χαρακτηριστικών μέσω της
επιβλεπομένης μάθησης είναι αυτό που διαφοροποιεί το perceptron του Rosenblatt με το
perceptron πολλών επιπέδων.

Εικόνα 8 Σήματα Νευρώνων

Διπλωματική Εργασία 17
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Από την εικόνα 8 διακρίνονται δύο σήματα:

1. Σήματα λειτουργιών (Function signals) : Ένα σήμα εισόδου το οποίο φτάνει στην είσοδο
του δικτύου, διαδίδεται προς τα εμπρός (από νευρώνα προς νευρώνα) σε όλο το δίκτυο και
εμφανίζεται στην έξοδο του δικτύου σαν σήμα εξόδου. Σε κάθε νευρώνα του δικτύου διαμέσου
του οποίου διέρχεται ένα σήμα εισόδου, το σήμα αυτό υπολογίζεται ως συνάρτηση των εισόδων
και των σχετιζόμενων βαρών που εφαρμόζονται σε αυτό το νευρώνα .

2. Σηματα Σφάλματος (error signal) προέρχονται από ένα νευρώνα εξόδου του δικτύου και
διαδίδεται προς τα πίσω (επίπεδο προς επίπεδο) δια μέσω του δικτύου. Αποκαλείται έτσι διότι
ο υπολογισμός του από κάθε νευρώνα του δικτύου απαιτεί τη χρήση μιας εξαρτώμενης από το
σφάλμα συνάρτησης με τη μία η την άλλη μορφή.

2.4.2 Δυνατότητες Δικτύων Perceptron πολλών στρωμάτων


Στα Δίκτυα Perceptron πολλών στρωμάτων δεν είναι δυνατό να χρησιμοποιηθούν Βηματικές
συναρτήσεις διότι δεν είναι παραγωγήσιμες. Ο λόγος είναι ότι οι περισσότεροι κανόνες
εκπαίδευσης βασίζονται σε μεθόδους βελτιστοποίησης οι οποίες χρησιμοποιούν παραγώγους.
Έτσι, χρησιμοποιούνται συνήθως η σιγμοειδής συνάρτηση

1
𝑓(𝑢) = (11)
(1 + 𝑒 −𝑢 )

και την υπερβολική εφαπτομένη(hyperbolic tangent) που εκφράζεται μαθηματικά ως εξής:

(𝑒 𝑢 − 𝑒 −𝑢 )
tanh(𝑢) = (12)
(𝑒 𝑢 + 𝑒 −𝑢 )

Διπλωματική Εργασία 18
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.5 Αρχιτεκτονικές δικτύων

2.5.1 Γενικά

Ο τρόπος με τον οποίο είναι δομημένοι οι νευρώνες ενός νευρωνικού δικτύου σχετίζεται στενά
με τον αλγόριθμο μάθησης που χρησιμοποιείται για την εκπαίδευση του δικτύου. Άρα
πρόκειται για δομημένους αλγόριθμους μάθησης (Simon Haykin, 2009).

2.5.2 Δίκτυα πρόσθιας τροφοδότησης ενός επιπέδου

Σε ένα νευρωνικό δίκτυο οι νευρώνες οργανώνονται σε μορφή επιπέδων. Στην απλούστερη


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

Εικόνα 9 Ενός επιπέδου πρόσθιας τροφοδότησης

Διπλωματική Εργασία 19
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.5.2 Πολυεπίπεδα δίκτυα πρόσθιας τροφοδότησης.

Χαρακτηρίζεται από την παρουσία ενός η περισσοτέρων κρυφών επιπέδων των οποίων οι
υπολογιστικοί κόμβοι αποκαλούνται κρυφοί νευρώνες. Η λειτουργία των κρυφών νευρώνων
είναι να παρεμβαίνουν μεταξύ της εξωτερικά προερχόμενης εισόδου και της εξόδου του δικτιού
με κάποιο χρήσιμο τρόπο. Προσθέτοντας ένα η περισσότερα κρυφά επίπεδα δίδεται η
δυνατότητα εξαγωγής στατιστικών υψηλότερης τάξης από την είσοδό του. Οι πηγαίοι κόμβοι
παρέχουν τα στοιχεία του πρότυπου ενεργοποίησης που έχουμε ορίσει (διανύσματα εισόδου)
τα οποία εισάγονται στο πρώτο κρυφό επίπεδο νευρώνων, υπολογίζονται και τροφοδοτούν το
επόμενο κρυφό επίπεδο. Γενικά οι Νευρώνες στα Πολυεπίπεδα δίκτυα πρόσθιάς τροφοδότησης
τροφοδοτούν με τα σήματα εξόδου τους τα επόμενα επίπεδα και τροφοδοτούνται από τα
σήματα εξόδου των προηγουμένων επιπέδων. Ένα τέτοιο δίκτυο είναι αυτό της εικόνας 7 και
ένα τέτοιο δίκτυο θα χρησιμοποιηθεί στην παρούσα εργασία.

Εικόνα 10 Πολυεπίπεδο δικτυο πρόσθιας τροφοδοτησης

Διπλωματική Εργασία 20
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.5.3 Αναδρομικά Νευρωνικά Δίκτυα (Recurrent Neural Network)

Διαφέρει από ένα νευρωνικό δίκτυο πρόσθιας τροφοδότησης λόγω του ότι έχει τουλάχιστον
ένα βρόγχο ανάδρασης. Όπως φαίνεται στην εικόνα 11 η έξοδος ενός νευρώνα τροφοδοτεί την
είσοδο των νευρώνων του επιπέδου του είτε άλλα προηγούμενα επίπεδα. Τα αναδρομικά δίκτυα
μπορεί να είναι ενός ή και πολλών επιπέδων. Δε θα εξεταστούν στην παρούσα διπλωματική.
Ονομάζονται και Hopfield από τον John Hopfield που τα εισήγαγε το 1982.

Εικόνα 11 Αναδρομικό Νευρωνικό Δίκτυο (Πηγή Wikipedia)

2.6 Μηχανική Μάθηση

2.6.1 Διαδικασίες Μάθησης

Μάθηση είναι η διαδικασία αυτοπροσαρμογής ενός συστήματος με στόχο να βελτιστοποιεί


κάποιο κριτήριο καταλληλόλητας για την επίλυση ενός συγκεκριμένου προβλήματος
(Διαμαντάρας, 2009). Στα νευρωνικά δίκτυα η μάθηση ή εκπαίδευση υλοποιείται με την αλλαγή
των εσωτερικών παραμέτρων ενός δικτύου που συνήθως είναι τα συναπτικά βάρη με στόχο την
ελαχιστοποίηση ενός κριτηρίου συνήθως το μέσο τετραγωνικό σφάλμα. Η έννοια της μάθησης

Διπλωματική Εργασία 21
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

αυτής χαρακτηρίζει τα λεγόμενα ευφυή συστήματα που δεν ανήκουν απαραίτητα στα
νευρωνικά δίκτυα. Η ικανότητα της μάθησης και της αυτοπροσαρμογής θεωρείται βασικό
συστατικό της ευφυΐας. Ένα αυτόματο σύστημα που μαθαίνει η εκπαιδεύεται χρησιμοποιώντας
κάποια πρότυπα εισόδου λέγεται μηχανή μάθησης. Τα νευρωνικά δίκτυα αποτελούν τυπικές
περιπτώσεις μηχανών μάθησης. Οι διαδικασίες μάθησης στα νευρωνικά δίκτυα χωρίζονται σε
δυο μεγάλες κατηγορίες. Η πρώτη είναι η μάθηση με εκπαιδευτή ή αλλιώς επιβλεπόμενη
μάθηση και η δεύτερη η μάθηση χωρίς εκπαιδευτή η οποία αποτελείται από δύο
υποκατηγορίες, την μη επιβλεπόμενη μάθηση και στην ενισχυτική μάθηση.

2.6.2 Επιβλεπόμενη μάθηση (supervised learning)

Η επιβλεπόμενη μάθηση βασίζεται σε έναν εκπαιδευτή που τροφοδοτεί ένα νευρωνικό δίκτυο
την γνώση μέσω παραδειγμάτων (Simon Haykin, 2009). Το νευρωνικό δίκτυο στην αρχική
μορφή (εικόνα 12) του δεν είναι σε θέση να γνωρίζει κάτι. Αντίθετα ο εκπαιδευτής έχει τη
γνώση και την τροφοδοτεί μέσω παραδειγμάτων εισόδου-εξόδου στο νευρωνικό δίκτυο. Το
κάθε παράδειγμα (διάνυσμα εκπαίδευσης) έχει από τον εκπαιδευτή μία επιθυμητή απόκριση.
Η επιθυμητή απόκριση είναι η βέλτιστη ενέργεια που χρειαζόμαστε από το νευρωνικό δίκτυο.
Έτσι, το δίκτυο χωρίς να γνωρίζει τίποτα μέσω των παραδειγμάτων προσαρμόζεται στην
επιθυμητή απόκριση μέσω του σήματος σφάλματος, τη διαφορά δηλαδή της επιθυμητής
απόκρισης και της πραγματικής απόκρισης του δικτύου. Η προσαρμογή εκτελείται με
επαναληπτικό τρόπο έως ότου η διαφορά σφάλματος να μηδενιστεί η να ελαχιστοποιηθεί ώστε
να θεωρείται βέλτιστη με κάποια στατιστική έννοια. Με αυτό τον τρόπο το δίκτυο αποκτά
γνώση.

Διπλωματική Εργασία 22
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 12 Επιβλεπόμενη μάθηση

2.6.3 Μη επιβλεπόμενη μάθηση (unsupervised learning)

Καλείται και αυτο-οργανούμενη μάθηση καθώς δεν υπάρχει εξωτερικός εκπαιδευτής. (Simon
Haykin, 2009). Υπάρχει ένα ανεξάρτητο από την εργασία μέτρο της ποιότητας της
αναπαράστασης που καλείται να μάθει το δίκτυο. Οι ελεύθερες παράμετροι του δικτύου
βελτιστοποιούνται με αυτό το μέτρο. Για την εκτέλεση μπορούμε να χρησιμοποιήσουμε έναν
κανόνα ανταγωνιστικής μάθησης. Στο επίπεδο των νευρωνικών δικτύων δημιουργούμε δυο
εισόδους η μία σαν επίπεδο εισόδου που λαμβάνει τα δεδομένα και η άλλη ως ανταγωνιστικό
επίπεδο, όπου οι νευρώνες ανταγωνίζονται ο ένας με τον άλλο με ένα κανόνα μάθησης, για την
ευκαιρία να ανταποκριθούν στα δεδομένα εισόδου. Το δίκτυο λειτουργεί με την στρατηγική ο
νικητής τα παίρνει όλα, δηλαδή οι νευρώνες με την μεγαλύτερη είσοδο συνολικά νικά και
ενεργοποιείται απενεργοποιώντας τους άλλους.

Εικόνα 13 Μη επιβλεπόμενη μάθηση

Διπλωματική Εργασία 23
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.6.4 Ενισχυτική μάθηση (Reinforcement Learning)

Είναι μία εκμάθηση χωρίς παραδείγματα και εκπαιδευτή και υλοποιείται με την αντιστοίχιση
εισόδου - εξόδου μέσω συνεχούς αλληλεπίδρασης με το περιβάλλον, με στόχο την
ελαχιστοποίηση ενός βαθμού τού δείκτη απόδοσης (Simon Haykin,2009). Βασίζεται σε ένα
μηχανισμό που λειτουργεί ως κριτής, ο οποίος μετατρέπει ένα κύριο σήμα ενίσχυσης
λαμβανόμενο από το περιβάλλον, σε ένα σήμα υψηλότερης ενίσχυσης που αποκαλείται
ευρετικό σήμα ενίσχυσης . Ο στόχος της ενισχυτικής μάθησης είναι να ελαχιστοποιήσει μια
συνάρτηση τρέχοντος κόστους. Ως συνάρτηση τρέχοντος κόστους ορίζεται η πρόβλεψη του
αθροιστικού κόστους ενεργειών που εκτελούνται σε μια αλληλουχία βημάτων αντί απλώς του
άμεσου κόστους μιας ενέργειας. Η λειτουργία του συστήματος μάθησής είναι να ανακαλύψει
αυτές τις ενέργειες και να τις τροφοδοτήσει πίσω στο περιβάλλον.

Εικόνα 14 Ενισχυτική μάθηση

2.6.5 Μαζική και on-line μάθηση

Στη Μαζική μάθηση, μέθοδος επιβλεπόμενής μάθησης, οι προσαρμογές στα συναπτικά βάρη
του Perceptron πολλών επιπέδων εκτελούνται μετά από την παρουσίαση του συνόλου των
παραδειγμάτων του δείγματος εκπαίδευσης (batches) τα οποία συνιστούν μια εποχή (epoch)
εκπαίδευσης (Simon Haykin, 2009). Η συνάρτηση κόστους για την μαζική μάθηση ορίζεται
από την μέση ενέργεια σφάλματος. Οι προσαρμογές στα συναπτικά βάρη του Perceptron
πολλών επιπέδων γίνεται από εποχή προς εποχή με τα δείγματα εκπαίδευσης να δίδονται
τυχαία. Στην On line Μάθηση, επίσης μέθοδο επιβλεπόμενης μάθησης, οι προσαρμογές στα

Διπλωματική Εργασία 24
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

συναπτικά βάρη εκτελούνται παράδειγμα προς παράδειγμα. Η συνάρτηση κόστους είναι προς
ελαχιστοποίηση και είναι η συνολική στιγμιαία ενέργεια σφάλματος. Η μέθοδος που
χρησιμοποιείται για τις προσαρμογές των βαρών ονομάζεται βαθμωτή κατάβαση (gradient
descent). Τα παραδείγματα παρουσιάζονται με τυχαίο τρόπο κι έτσι η αναζήτηση των βαρών
γίνεται στοχαστικά. Ο στοχαστικός χαρακτήρας έχει το πλεονέκτημα ότι μειώνονται οι
πιθανότητες να παγιδευτεί η διαδικασία μάθησης σε τοπικό ελάχιστο. Απαιτεί λιγότερο χώρο
αποθήκευσης από τη μαζική μάθηση.

2.7 Εκπαίδευση Νευρωνικών Δικτυών

2.7.1 Κανόνας Δέλτα


Ο κανόνας Δέλτα η Adaline (Adaptive LINear Element ή Αυτοπροσαρμοζόμενο Γραμμικό
Στοιχείο). Εισήχθη από τον Windrow για να περιγράψει ένα απλοποιημένο μοντέλο Νευρώνα.
Υπολογίζοντας και εφαρμόζοντας τη θεωρία ελαχίστων τετραγώνων, τη θεωρία των
στοχαστικών αλγορίθμων και του Μέσου τετραγωνικού σφάλματος (Mean Square Error) και
την κατάβαση δυναμικού για την ελαχιστοποιώντας το κόστους προκύπτει η εξίσωση:

𝛥𝑤(𝑘) = 𝑤(𝑘) − 𝑤(𝑘 − 1) (13)

Με βήμα εκπαίδευσης 𝛽(𝑘) (συνάρτηση του κ) και πρέπει να τείνει προς το μηδέν καθώς
προχωράει η εκπαίδευση. Τέλος το άθροισμα ∑∞
𝜅=0 𝛽(𝜅) δεν πρέπει να είναι πεπερασμένο και

δεν πρέπει να φθίνει εκθετικά προς το μηδέν. O τερματισμός της διαδικασίας μάθησης
πραγματοποιείται όταν το συνολικό σφάλμα Ε για όλα τα παραδείγματα και για όλους τους
νευρώνες εξόδου γίνει μικρότερο από μία τιμή.

2.7.3 Αλγόριθμος Back-Propagation

Ο αλγόριθμος Back-Propagation (ή και Γενικευμένος κανόνας Δέλτα) ανήκει στην κατηγορία


δικτύων που εκπαιδεύονται με επίβλεψη. Χρησιμοποιείται στη εκπαίδευση Νευρωνικών
δικτύων πολλών στρωμάτων. Υπολογίζοντας τα διανύσματα εισόδου με το μέσω τετραγωνικό
σφάλμα και την κατάβαση δυναμικού και υπολογίζοντας επίσης την παράγωγο του κόστους
σε συνάρτηση με το συναπτικό βάρος αποδεικνύεται ότι η Εξίσωση ενημέρωσης των βαρών:

Διπλωματική Εργασία 25
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

𝑤𝑖𝑗 (𝑙, 𝑘 + 1) = 𝑤𝑖𝑗 (𝑙, 𝑘) + 𝛽𝛿𝜄 (𝜅) (𝑙)𝑎𝑗 (𝑘) (𝑙 − 1) (14)

j=0,1,2….,N(l), l=1,2,3….,L

Τύποι υπολογισμού δ:

Στρώμα L= τελευταίο στρώμα:

′(𝑢𝑖 (𝑘) (𝐿))(𝑑𝑖 (𝑘) −𝑦𝑖 (𝑘) ) (15)


𝛿𝑖 (𝑘) (𝐿) = 𝑓

Στρώμα l=1,2,3……,L-1

𝑁(𝑖+1)
𝛿𝑖 (𝑘) (𝑙) = 𝑓′ (𝑢𝑖 (𝑘) (𝑙)) ∑𝜇=1 𝑤𝜇𝑖 (𝑘) (𝑙 + 1) 𝛿𝜇 (𝑘) (𝑙 + 1) (16)

Ο αλγόριθμος Back Propagation είναι μια προσέγγισή της κατάβασης δυναμικού η οποία
περιγράφεται από μια δυναμική εξίσωσή παράγωγων:

𝜕𝑗
𝑑𝑤𝑖𝑗 = −𝑑𝑡 (17)
𝜕𝑤𝑖𝑗

Η εξίσωση Back Propagation

𝜕𝑗
𝛥𝑤𝑖𝑗 (𝑘) = 𝑤𝑖𝑗 (𝑘) − 𝑤𝑖𝑗 (𝑘 − 1) = −𝛽 𝜕𝑤 (18)
𝑖,𝑗 (𝑘)

προσεγγίζει την προηγούμενη εξίσωση 13 όταν ισχύουν οι παραδοχές

𝛥𝑤𝑖𝑗 ≈ 𝑑𝑤𝑖𝑗

και 𝛽 ≈ 𝑑𝑡

Το βήμα εκπαίδευσης είναι περίπου ίσο με το ελάχιστο βήμα χρόνου 𝑑𝑡. Για να προσεγγιστεί
η πραγματική κατάβαση δυναμικού θα πρέπει το β να παίρνει την ελάχιστη δυνατή τιμή ώστε
ο αλγόριθμος να συγκλίνει στο κοντινότερο τοπικό ελάχιστο. Αν το βήμα εκπαίδευσης είναι
μεγάλο η σύγκλιση θα είναι ταχύτερη αλλά θα έχουμε κακή σύγκλιση ή ακόμα και απόκλιση

Διπλωματική Εργασία 26
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

του αλγορίθμου με τιμές βαρών στο±∞. Προτιμάται μικρό βήμα εκπαίδευσης σε δίκτυα με
πολλές εισόδους ή εισόδους με μεγάλες τιμές ενώ με λίγες εισόδους ή εισόδους με μικρές τιμές
το βήμα εκπαίδευσης να είναι μεγαλύτερο.

2.7.3.1 Ρυθμός μάθησης

Ο αλγόριθμος Backpropagation παρέχει μια προσέγγιση στην τροχιά που διαγράφεται στο
χώρο των βαρών όπως υπολογίζεται από την μέθοδο της πλέον απότομης κατάβασης (steepest
descent). Όσο μικρότερος είναι ο ρυθμός μάθησής τόσο μικρότερες οι αλλαγές στα συναπτικά
βάρη και τόσο ποιο ομαλή η τροχιά των βαρών. Αυτό υλοποιείται με την ορμή ( Momentum).

∆𝑤𝑖,𝑗 (𝑛) = 𝑎∆𝑤𝑖,𝑗 (𝑛 − 1) + 𝜂𝛿𝑗 (𝑛)𝑦𝑖 (𝑛) (19)

όπου α η σταθερά ορμής.

2.7.3.2 Κριτήριο τερματισμού


Για τον τερματισμό του αλγορίθμου Back Propagation χρησιμοποιούνται τα εξής κριτήρια
τερματισμού:

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

Διπλωματική Εργασία 27
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.7.3.3 Αρχικοποίηση των βαρών

Τα βάρη κατά την εκκίνηση αρχικοποιούνται σε μικρές τιμές. Αν γίνει αρχικοποίηση με


μεγάλες τιμές επέρχεται κορεσμός (μικρή μεταβολή των συναπτικών βαρών) όχι γιατί έχει
φτάσει σε καλό επίπεδο το νευρωνικό δίκτυο αλλά γιατί η έξοδος των νευρώνων είναι κοντά
στο όριο της συνάρτησης ενεργοποίησης f.

2.7.3.4 Τοπικά Ελάχιστα

Χαρακτηριστικό της κατάβασης δυναμικού είναι η πιθανότητα να καταλήξουμε σε τοπικά


ελάχιστα (εικόνα 15). Δεν είναι επιθυμητό καθώς η λύση του προβλήματος είναι σαφώς
υποδεέστερη σε σχέση με το ολικό ελάχιστο. Αυτό αποφεύγεται δίνοντας πάλι μικρές τιμές
στα αρχικά βάρη.

Εικόνα 15 Τοπικό ελάχιστο Χ1 ολικο ελάχιστο Χ2

Διπλωματική Εργασία 28
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.8 Επεξεργασία φυσικής γλώσσας (Natural Language


Processing NLP)

2.8.1 Γενικά

Η Επεξεργασία φυσικής γλώσσας (NLP) είναι ένας κλάδος της επιστήμης των δεδομένων που
αποτελείται από συστηματικές διαδικασίες για την ανάλυση, την κατανόηση και την απόκτηση
πληροφοριών από τα δεδομένα κειμένου με κάποιο έξυπνο και αποτελεσματικό τρόπο
(Gobinda, Ghowdhury 2005). Χρησιμοποιώντας την NLP μέσω των εργαλείων που έχουν
αναπτυχθεί, μπορεί κανείς να οργανώσει δεδομένα κειμένου, να εκτελέσει πολυάριθμες
αυτοματοποιημένες εργασίες και να λύσει ένα ευρύ φάσμα προβλημάτων όπως την αυτόματη
περίληψη, τη μηχανική μετάφραση, την ονομαστική αναγνώριση οντοτήτων, την εξαγωγή
σχέσεων, την ανάλυση συναισθημάτων, και τοποθέτηση θέματος κλπ. με διάφορες διεργασίες
όπως το Tokenization, διαδικασία μετατροπής ενός κειμένου σε tokens, δηλαδή λέξεις ή
οντότητες που υπάρχουν στο κείμενο. Επειδή το κείμενο είναι η πιο αδόμητη μορφή όλων των
διαθέσιμων δεδομένων, υπάρχουν διάφοροι τύποι θορύβου και τα δεδομένα δεν μπορούν
εύκολα να αναλυθούν χωρίς προεπεξεργασία. Προεπεξεργασία είναι μία διαδικασία
καθαρισμού και τυποποίησης του κειμένου, που το καθιστά χωρίς θόρυβο και έτοιμο για
ανάλυση. Κατά την προεπεξεργασία ενός κειμένου ακολουθούνται συνήθως τρία στάδια.

Το πρώτο στάδιο είναι η αφαίρεση θορύβου. Κάθε κομμάτι κειμένου που δεν σχετίζεται με το
περιεχόμενο των δεδομένων και την τελική έξοδο μπορεί να θεωρηθεί ως θόρυβος. Για
παράδειγμα, οι προειδοποιητικές λέξεις γλώσσας (λέξεις-κλειδιά μιας γλώσσας που
χρησιμοποιούνται συχνά), οι διευθύνσεις URL ή οι σύνδεσμοι, οι οντότητες των κοινωνικών
μέσων (αναφορές, τα hashtags), στίγματα και λέξεις που χρησιμοποιούνται σε αυτά αποτελούν
θόρυβο. Μια γενική προσέγγιση για την αφαίρεση του θορύβου είναι η προετοιμασία ενός

Διπλωματική Εργασία 29
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

λεξικού στο οποίο περιέχονται οι λέξεις που θεωρούμε θόρυβο. Έτσι, όταν παρουσιάζεται μια
λέξη στο κείμενο που υπάρχει, το λεξικό θορύβου την εξαλείφει.

Το δεύτερο στάδιο είναι η κανονικοποίηση λεξικών. Πρόκειται για ένα τύπο θορύβου κειμένου
που έγκειται στις πολλαπλές αναπαραστάσεις που παρουσιάζονται με μία λέξη. Για παράδειγμα
- "παίκτες", "έπαιξε", "παίζουν" και "παίζει" προέρχονται όλες από τη λέξη παιχνίδι αν και
έχουν διαφορετική έννοια αλλά με βάση την ετοιμολογία είναι παρόμοιες. Το βήμα μετατρέπει
όλες τις διαφορές μιας λέξης στην ομαλοποιημένη μορφή τους (επίσης γνωστή ως λήμμα). Η
Κανονικοποίηση είναι ένα κεντρικό βήμα για τη μηχανική των χαρακτηριστικών με το κείμενο,
καθώς μετατρέπει τα υψηλά διασταλτικά χαρακτηριστικά (N διαφορετικά χαρακτηριστικά) στο
χώρο των μικρών διαστάσεων (1 χαρακτηριστικό γνώρισμα). Οι πιο συνηθισμένες πρακτικές
ομαλοποίησης λεξικού είναι η Stemming και το Lemmatizer. To Stemming είναι μια
στοιχειώδης διαδικασία βασισμένη στον κανόνα της απογύμνωσης των επιθημάτων ("ίζω",
"ιζεις", "οι", "ωνω" κ.λπ.) από μια λέξη. Δηλαδή όταν στο κείμενο υπάρχουν οι λέξεις ‘Καλός’,
‘Κάλή’, ‘Καλό’, δεν υπολογίζονται ως τρεις διαφορετικές αλλά ως 3 ΄’Καλ’ Και το
Lemmatization, από την άλλη πλευρά, είναι μια οργανωμένη και βήμα προς βήμα διαδικασία
απόκτησης της ριζικής μορφής της λέξης, που χρησιμοποιεί λεξιλόγιο (λεξικό σημασίας
λέξεων) και μορφολογική ανάλυση (δομή λέξεων και γραμματικές σχέσεις).

Το τρίτο στάδιο είναι η τυποποίηση αντικειμένου. Τα δεδομένα κειμένου περιέχουν συχνά


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

2.8.2 Ταξινόμηση κειμένου (text classification)

Η ταξινόμηση κειμένου είναι ένα από τα κλασικά προβλήματα του NLP. Κάποια
παραδείγματα περιλαμβάνουν, ταυτοποίηση ηλεκτρονικού ταχυδρομείου με μηνύματα

Διπλωματική Εργασία 30
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

ηλεκτρονικού ταχυδρομείου, κατάταξη θέματος ειδήσεων, κριτικές καταστημάτων,


προϊόντων, ταινιών, πολιτικής επικαιρότητας, ταξινόμηση συναισθημάτων και οργάνωση
ιστοσελίδων από μηχανές αναζήτησης. Η ταξινόμηση κειμένου, με κοινή λέξη, ορίζεται ως
μια τεχνική για τη συστηματική ταξινόμηση ενός αντικειμένου κειμένου (έγγραφο ή πρόταση)
σε μια από τις σταθερές κατηγορίες. Είναι μια πολύ χρήσιμη τεχνική όταν το μέγεθος των
δεδομένων είναι πολύ μεγάλο, ειδικά για την οργάνωση, το φιλτράρισμα πληροφοριών και
τους σκοπούς αποθήκευσης. Ένας τυπικός ταξινομητής φυσικής γλώσσας στα νευρωνικά
δίκτυα αποτελείται από δύο μέρη, την Εκπαίδευση και την Πρόβλεψη όπως φαίνεται στην
παρακάτω εικόνα 16. Η εισαγωγή κειμένου δημιουργεί διαδικασίες και λειτουργίες. Τα
μοντέλα μηχανικής μάθησης μαθαίνουν αυτά τα χαρακτηριστικά και χρησιμοποιούνται για την
πρόβλεψη του νέου κειμένου.

Εικόνα 16 Ταξινομητής φυσικής γλώσσας

Υπάρχουν πολλές και σημαντικές βιβλιοθήκες 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 Βαθιά Μηχανική Μάθηση (Deep Learning)

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 ).

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

2.9.2 Το πρόβλημα της ταξινόμησης

Στην επιβλεπόμενη μάθηση η ταξινόμηση υλοποιείται δίδοντας στα παραδείγματα μια ετικέτα
(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) που
περιγράφεται από τη σχέση:

𝐷(𝑆, 𝐿) = − ∑ 𝐿𝑙 log(𝑆𝑖 ) (22)


𝑖

H Συνάρτηση (24) μετατρέπει τις πιθανότητες σε τιμές 0 και 1. Αν η πιθανότητα είναι μεγάλη
τότε δίδει τιμή 1 αν είναι μικρή 0. Οι Τιμές S είναι τα αποτελέσματα της συνάρτησης Softmax
ενώ το L (από το Logits) εκφράζει τις τιμές 0 ή 1.

Από όλες τις συναρτήσεις μαζί συνεπάγεται ότι :

𝑒 𝑊𝑥+𝑏
𝐷(𝑆(𝑊𝑥 + 𝑏), 𝐿) = − ∑ 𝐿𝑙 log ( ) (23)
∑𝑖 𝑒 𝑊𝑥+𝑏
𝜄

και σχηματικά η διαδικασία που περιγράφηκε παρουσιάζεται στην εικόνα 18

Εικόνα 18 Διαδικασια τιμών εισοδου χ σε logits

Διπλωματική Εργασία 35
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Η ανωτέρω συνάρτηση (23) ονομάζεται multinomial logistic classification ή πολυεστιακή


λογιστική ταξινόμηση. Στόχος είναι η μείωση της cross entropy και αυτό γίνεται
υπολογίζοντας την απώλεια εκπαίδευσης (Loss) ή Average cross entropy η οποία ισούται με:

1
𝑙𝑜𝑠𝑠 = ∑ 𝐷(𝑆(𝑊𝑥𝑖 + 𝑏), 𝐿𝑖 ) (24)
𝑁
𝑖

Αυτό που επιδιώκεται είναι η ελαχιστοποίηση της τιμής της συνάρτησης στη διάρκεια της
εκπαίδευσης. Όσο μειώνεται η τιμή της loss το μοντέλο εκπαιδεύεται. Μαθηματικά όπως
φαίνεται από την εξίσωση 24, ισούται με το σύνολο των τιμών που προκύπτουν από την
διαδικασία της πολυεστιακής λογιστικής ταξινόμησης, προς τα παραδείγματα Ν.

2.9.2 Αρχικοποίηση βαρών

Από στην συνάρτηση 23 παρατηρείται ότι

𝑒 𝑊𝑥+𝑏
𝐷(𝑆(𝑊𝑥 + 𝑏), 𝐿) = − ∑ 𝐿𝑙 log ( ) (23)
∑𝑖 𝑒 𝑊𝑥+𝑏
𝜄

οι μοναδικές μεταβλητές είναι τα βάρη W και η τάση b . Η σωστή εύρεσή των βαρών και των
τάσεων είναι αυτή που θα εκπαιδεύσει το δίκτυο. Οι αρχικές τιμές που θα δοθούν
(αρχικοποίηση βαρών) ως 𝑤0 και 𝑏0 και οι τιμές που θα επακολουθήσουν ώστε να φτάσει το
δίκτυο στις σωστές ή σωστότερές τιμές ώστε να εκπαιδευτεί. Λύνεται με αλγόριθμους
στοχαστικής βελτιστοποίησης .

Η βελτιστοποίηση είναι μια επαναλαμβανόμενη ακολουθία εύρεσης βαρών και τάσεων όπως
φαίνεται στις παρακάτω εξισώσεις:

Διπλωματική Εργασία 36
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

𝑤 ← 𝑤 − ∆𝑤 𝐿𝑜𝑠𝑠

και (26)

𝑏 ← 𝑏 − ∆𝑏 𝐿𝑜𝑠𝑠

όπου w και b είναι τα βάρη και οι τάσεις αντίστοιχά και ∆𝑤 𝐿𝑜𝑠𝑠 ∆𝑏 𝐿𝑜𝑠𝑠 οι παράγωγοι
συνάρτησης απώλειας βαρών και τάσεων.

Η μείωση της συνάρτησης κόστους γίνεται με αλγορίθμους βελτιστοποίησης. Ο gradient


descent είναι ένας γνωστός αλγόριθμος βελτιστοποίησης. Ο gradient descent βρίσκει την
παραγωγό (διαφορά) των δυο βαρών 𝑤1 και 𝑤2 και επαναλαμβάνεται όσο αυτή μειώνεται
μέχρι την επιθυμητή λύση όπως περιγράφεται στην εικόνα 20. Είναι ένας κάλος αλγόριθμος
βελτιστοποίησης αλλά έχει ένα μεγάλο μειονέκτημα. Σε μεγάλα σετ δεδομένων έχει αποδειχθεί
ότι είναι μια χρονοβόρα και κοστοβόρα σε πόρους διαδικασία καθώς απαιτείται ο υπολογισμός
της παραγώγου όλων των δεδομένων σε απαγορευτικά πολλές επαναλήψεις. Το πρόβλημα
αυτό λύνεται με τους στοχαστικούς αλγορίθμους βελτιστοποίησης.

Εικόνα 19 Μειωση του κόστους με αλγοριθμο βελτιστοποίησης Gradient Descend

Διπλωματική Εργασία 37
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.9.4 Στοχαστική βελτιστοποίηση (Stochastic optimization)

Οι μέθοδοι στοχαστικής βελτιστοποίησης είναι μέθοδοι που παράγουν και χρησιμοποιούν


τυχαίες μεταβλητές για την επίλυση του προβλήματος. Περιλαμβάνουν επίσης μεθόδους με
τυχαίες επαναλήψεις. (Spall, J. C.2003). Οι μέθοδοι στοχαστικής βελτιστοποίησης γενικεύουν
τις ντετερμινιστικές μεθόδους για τα προσδιοριστικά προβλήματα. Ο λόγος για τον οποίο
χρησιμοποιείται αυτή η μέθοδος είναι διότι αν χρησιμοποιηθεί η μέθοδος gradient descent θα
πρέπει να χρησιμοποιηθούν όλα τα δεδομένα κάτι που κάνει τον υπολογισμό πολύπλοκο.

Στους στοχαστικούς αλγόριθμους βελτιστοποίησης χρησιμοποιείται ένας εκτιμητής


(estimator). Ο εκτιμητής υπολογίζει μια μικρή ποσότητα της συνάρτησης κόστους των
εκπαιδευμένων δεδομένων τυχαία. Έτσι, υπολογίζει την απώλεια για το δείγμα της παραγώγου
ως προς το δείγμα. Ακόμα και αν κατά την έναρξη της εκπαίδευσης δεν παρουσιάζονται τα
αναμενόμενα αποτελέσματα κατά την εξέλιξή της αυτό επιτυγχάνεται. Η διαδικασία αυτή
λέγεται stochastic gradient descent. Αυτό που την κάνει και πετυχαίνει είναι το Momentum ή
ορμή. Η λειτουργία της είναι απλή και αποδοτική. Κατά τη διάρκεια της εκπαίδευσης το δείγμα
παραδειγμάτων τείνει στη σωστή λύση και σε κάποιες περιπτώσεις απομακρύνεται από αυτή.
Το momentum κρατά μόνο τις περιπτώσεις που τα τυχαία παραδείγματα προσδίδουν βελτίωση
(εικόνα 21)

Εικόνα 20 Βελτιστοποίηση με ορμή

Διπλωματική Εργασία 38
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Η ορμή ακολουθεί την παρακάτω σχέση:

𝑀 ← 0.9𝑀 + ∆𝑙𝑜𝑠𝑠 (27)

Ένα άλλο χαρακτηριστικό είναι η απόσβεση ποσοστού μάθησης (Learning rate decay), η οποία
συμβολίζεται με α. Κατά τη διάρκεια της εκπαίδευσης όσο υπολογίζεται το momentum
παρουσιάζεται η παράμετρος αυτή, η οποία κατά την διάρκεια της εκπαίδευσης πρέπει να
μειώνεται (εικόνα 22).

Εικόνα 21 learning rate decay

Η επιλογή του σωστού Ρυθμού μάθησης (Learning rate) είναι καθοριστικής σημασίας για την
εκπαίδευση του νευρωνικού δικτύου. Κατά την εκπαίδευση του ρυθμού μάθησης, η χρήση
μίας υψηλότερης τιμής μάθησης δεν σημαίνει ότι το μοντέλο εκπαίδευσης μαθαίνει
απαραίτητα γρηγορότερα. Έχει αποδειχθεί ότι χρησιμοποιώντας μικρούς ρυθμούς μάθησης το
μοντέλο αποδίδει καλύτερα. Παρατηρώντας την εικόνα 22 φαίνεται, ότι σε υψηλό ρυθμό

Διπλωματική Εργασία 39
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

μάθησης η μάθηση ξεκινά γρηγορότερα σε σχέση με έναν χαμηλότερο ρυθμό μάθησης , αλλά
στη συνέχεια αυτός που αποδίδει καλύτερα είναι ο χαμηλός που τείνει στο μηδέν της γραφικής
παράστασης σε σχέση με τον υψηλό.

Εικόνα 22 Σύγκριση Ρυθμών Μαθησης

Ο Αλγόριθμος ADAGRAD (ADAptive GRAdient Descent) είναι μια βελτιστοποίηση του


SGD (Stochastic Gradient Descent) ο οποίος υπολογίζει μόνος του την Αρχικοποίηση ρυθμού
μάθησης (learning rate), Διάσπαση ρυθμού μάθησης (learning rate decay), Ορμή (momentum)
,μέγεθος παρτίδας παραδειγμάτων (batch size), και αρχικοποίηση των βαρών (weight
initialization). ο ADAGRAD υλοποιεί τα ανωτέρω εκτός του batch size και αρχικοποίησης
των βαρών. Αφήνει τον ρυθμό μάθησης να προσαρμοστεί σε σχέση με τις παραμέτρους. όταν
οι παράμετροι είναι μη συχνοί κάνει μεγάλες αλλαγές ενώ όταν είναι συχνοί μικρές. ο
καλύτερος optimizer όπως φαίνεται στην εικόνα 22 είναι ο ADAM optimizer (ADAptive
Momentum) ο οποίος είναι βελτίωση των προηγουμένων βελτιστοποιητών υπολογίζει όσα και
ο ADAGRAD και επίσης υπολογίζει για κάθε παράμετρο το ρυθμό μάθησης και τις αλλαγές
της ορμής (Momentum) ( Diederik P. Kingma and Jimmy Lei Ba 2015)

Διπλωματική Εργασία 40
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 23 Απόδοση αλγοριθμων βελτιστοποίησης (πηγή: Diederik P. Kingma and Jimmy Lei Ba 2015)

2.9.5 Υπερπροσαρμογή (overfitting)

Υπερπροσαρμογή είναι η παραγωγή μιας ανάλυσης που αντιστοιχεί πάρα πολύ ή με ακρίβεια
σε ένα συγκεκριμένο σύνολο δεδομένων και συνεπώς μπορεί να μην ικανοποιήσει πρόσθετα
δεδομένα ή να προβλέψει αξιόπιστες μελλοντικές παρατηρήσεις (Oxford Dictionaries Online).
Ένα υπερπροσαρμοστικό μοντέλο είναι ένα στατιστικό μοντέλο που περιέχει περισσότερες
παραμέτρους από αυτές που δικαιολογούνται από τα δεδομένα (Everitt And Skrondal , 2010).
Στην εικόνα 24 παρουσιάζεται ένα πρόβλημα ταξινόμησης στο οποίο πρέπει να διαχωρίσουμε
τις μπλε και κόκκινες κουκίδες. Οι κουκίδες μπορεί να είναι λέξεις με θετικό συναίσθημα ή
και εικόνες που να περιγράφουν ένα σκύλο ή μία γάτα. Τα νευρωνικά δίκτυα είναι τόσο
πολύπλοκά λόγω της αρχιτεκτονικής τους (Πολλοί κόμβοι, πολλά κρυφά επίπεδα) που κατά
την επίλυση του προβλήματος του διαχωρισμού μπορούν να διαχωρίσουν όλες τις κουκκίδες
δημιουργώντας πολυώνυμα μεγάλου βαθμού. Έτσι υλοποιείται μια λύση όπως την πράσινη
γραμμή της εικόνας. Στην πραγματικότητα αυτό που είναι αποδοτικότερο για το δίκτυο είναι
η μαύρη καμπύλη όπου τα παραδείγματα διαχωρίζονται με μικρότερη ακρίβεια αφήνοντας
κάποια παραδείγματα εκτός αλλά δημιουργώντας μία ποιοτικότερη λύση.

Διπλωματική Εργασία 41
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 24 Υπερπροσαρμογή παραδειγμάτων (Πηγή: Wikipedia)

Για να γίνει ποιο κατανοητό το πρόβλημα της υπερπροσαρμογής θα αναλυθεί η εικόνα 25. Για
την εύρεση της σωστής κλίσης βάση των παραδειγμάτων που στην περίπτωσή της εικόνας
είναι οι μαύρες κουκκίδες πρέπει να βρεθεί μια ευθεία με κλίση η οποία μπορεί να μην περνάει
από όλες τις κουκίδες αλλά ποιοτικά τις ακολουθά. Ένα όμως δίκτυο πολλών επιπέδων δεν θα
αρκεστεί σε αυτό αλλά θα προσπαθήσει να λύσει το πρόβλημα με απόλυτο και υπερβολικό
τρόπο. Η λύση δίδεται από ένα πολυώνυμο μεγάλου βαθμού όπως η μπλε γραμμή την εικόνας
που αναφερόμαστε.

Διπλωματική Εργασία 42
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 25 Υπερπροσαρμογή (Πηγή: Wikipedia)

Το πρόβλημα που αντιμετωπίζουμε είναι ότι λύνεται απολυτά ο διαχωρισμός των δεδομένων
εκπαίδευσης αλλά το δίκτυο παρουσιάζει απόκλιση όταν δίδουμε τα δεδομένα επαλήθευσης,
όπως φαίνεται στην εικόνα 27.

Ένας τρόπος αντιμετώπισης του Overfitting είναι ο πρόωρος τερματισμός της εκπαίδευσης στο
σημείο που ξεκινάει η απόκλιση των σφαλμάτων (εικόνα 26). Αυτό όμως περιορίζει την
εκπαίδευση του δικτύου.

Εικόνα 26 Υπερπροσαρμογή σην συναρτηση κόστους

Διπλωματική Εργασία 43
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Ένας άλλος τρόπος για να αποφευχθεί η υπερπροσαρμογή (overfitting) είναι η ομαλοποίηση


(Regularization) του δικτύου. Κατά την εκπαίδευση του όταν αρχίζει να υπερπροσαρμόζεται
τα βάρη των νευρώνων αρχίζουν να παίρνουν μεγάλες τιμές. Η ομαλοποίηση λειτουργεί με
την επιβολή μιας παραμέτρου α στη συνάρτηση κόστους όπου δεν επιτρέπει να δίδονται
υψηλές τιμές τα βάρη. Υπάρχουν δυο μέθοδοι ομαλοποίησης η L1 που ονομάζεται και LASSO
και η L2 η οποία αποτελεί εξέλιξη της L1 γνωστή ως Ridge Regression.

Η μέθοδος ομαλοποίησης L1 κατά τον υπολογισμό της συνάρτησης απώλειας προσθέτει μια
ποινή βάρους α στο απολυτό σύνολο των βαρών.

𝑙𝑜𝑠𝑠 ← 𝑙𝑜𝑠𝑠 + 𝑤𝑒𝑖𝑔ℎ𝑡 𝑝𝑒𝑛𝑎𝑙𝑡𝑦

𝑙𝑜𝑠𝑠 ← ∑(𝑦𝑖 − 𝑦̂𝑖 )2 + 𝑎 ∑|𝑤𝑖 | (28)


𝑖 𝑖

Στην Ridge Regression η L2 προστίθεται ποινή βάρους το τετράγωνο των συνολικών


βαρών.

𝑙𝑜𝑠𝑠 ← 𝑙𝑜𝑠𝑠 + 𝑤𝑒𝑖𝑔ℎ𝑡 𝑝𝑒𝑛𝑎𝑙𝑡𝑦

𝑙𝑜𝑠𝑠 ← ∑(𝑦𝑖 − 𝑦̂𝑖 )2 + 𝑎 ∑ 𝑤𝑖2 (29)


𝑖 𝑖

Διπλωματική Εργασία 44
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.9.5 Απόρριψη (Dropout)

Η απόρριψη (Dropout) (Nitish Srivastava,Georey Hinton, Alex Krizhevsky,Ilya Sutskever,


Ruslan Salakhutdinov, 2014) είναι μια τεχνική αποτροπής της υπερφόρτωσης (Overfitting) και
παρέχει έναν τρόπο να συνδυάζει αποτελεσματικά όλες σχεδόν τις αρχιτεκτονικές νευρωνικών
δικτύων αποτελεσματικά. Ο όρος "dropout" αναφέρεται στην απομάκρυνση κόμβων (κρυφές
και ορατές) σε ένα νευρωνικό δίκτυο. Με την απομάκρυνση κόμβου, εννοούμε προσωρινά την
απομάκρυνσή του από το δίκτυο, μαζί με όλες τις εισερχόμενες και εξερχόμενες συνδέσεις,
όπως φαίνεται στην εικόνα 27 . Η επιλογή των μονάδων που θα απομακρυνθούν είναι τυχαία.
Στην απλούστερη περίπτωση κάθε μονάδα διατηρείται με μια σταθερή πιθανότητα p
ανεξάρτητα από άλλες μονάδες, όπου το p μπορεί να επιλεγεί χρησιμοποιώντας ένα σύνολο
επικύρωσης ή μπορεί απλά να ρυθμιστεί στο 0,5, το οποίο φαίνεται να είναι κοντά στη
βέλτιστη, στις περισσότερες αρχιτεκτονικές δικτύων . Η απόρριψη υλοποιείται μόνο για το σετ
δεδομένων εκπαίδευσης. Για το σετ επικύρωσης τα δεδομένα περνάνε από όλους τους
κόμβους.

Εικόνα 27 Dropout με απόρριψη 0.5

Διπλωματική Εργασία 45
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.9.7 Πολυπλοκότητα Γραμμικών μοντέλων

Σημαντικός παράγοντας για την ανάλυση των νευρωνικών δικτύων είναι ο υπολογισμός της
πολυπλοκότητας του μοντέλου. Όπως παρουσιάζεται στην εικόνα 28 για τον υπολογισμό της
πολυπλοκότητας του του γραμμικού μοντέλου που παρουσιάζεται αρκεί να
πολλαπλασιάσουμε το σύνολο των εισόδων χ και να το πολλαπλασιάσουμε με τις πιθανές
εξόδους που εξάγει το μοντέλο. Αν για παράδειγμα εισάγουμε μια εικόνα με 100
εικονοστοιχεία και από την έξοδο αναμένουμε 5 πιθανά αποτελέσματα τότε η πολυπλοκότητα
είναι (100+1)*5 που ισούται με 505.

Εικόνα 28 Υπολογισμός πολυπλοκότητα μοντελου Xw+b

Η εκτέλεση της λειτουργίας της εικόνας 28 μαθηματικά είναι ουσιαστικά ένας


πολλαπλασιασμός πινάκων.

Διπλωματική Εργασία 46
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.9.7 Συνάρτηση ενεργοποίησης RELU

Επικρατέστερη συνάρτηση ενεργοποίησης για τα βαθιά νευρωνικά δίκτυα έχει επικρατήσει η


συνάρτηση RELU (Abien Fred M. Agarap 2018).H συνάρτηση ενεργοποίησης RELU
(REctified Linear Unit),είναι μία απλή μη γραμμική συνάρτηση για την οποία όπου x>0 y=x
και x<0 y=0. H γραφική της παράσταση περιγράφεται στην εικόνα 29.

Εικόνα 29 Συνάρτηση Relu

Η συνάρτηση RELU είναι αποδοτικότερη από τις κλασικές συναρτήσεις ενεργοποίησης όπως
η sigmoid και η tanx. Αυτό συμβαίνει διότι η παράγωγος της RELU παίρνει δύο διακριτές
τιμές [0,1]. Για χ <0 η παράγωγος παίρνει την τιμή 0 και για χ>0 την τιμή 1.

Εικόνα 30 Παράγωγος Relu

Διπλωματική Εργασία 47
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

2.9.9 Πολυεπίπεδα Νευρωνικά δίκτυα (Multilayer Neural Networks)

Η προσθήκη ενός κρυμμένου στρώματος σε ένα δίκτυο του επιτρέπει να διαμορφώνει πιο
σύνθετες λειτουργίες. Επίσης, με τη χρήση μιας μη γραμμικής συνάρτησης ενεργοποίησης στο
κρυφό στρώμα του επιτρέπει να μοντελοποιεί μη γραμμικές λειτουργίες. Στην εικόνα 31
αναπαρίσταται παραπάνω ένα νευρωνικό δίκτυο δυο επιπέδων, ενός κρυφού και ενός επιπέδου
εξόδου με συνάρτηση ενεργοποίησης RELU.

Εικόνα 31 Νευρωνικό δίκτυο 2 επιπέδων

Στην εικόνα 32 απεικονίζεται ένα πολυεπίπεδο νευρωνικό δίκτυο δυο κρυφών επιπέδων και
ενός επιπέδου εξόδου.

Εικόνα 32 Νευρωνικό δίκτυο 3 επιπέδων

Διπλωματική Εργασία 48
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Το πρώτο επίπεδο αποτελείται ουσιαστικά από το σύνολο των βαρών και των τάσεων που
εφαρμόζεται στην είσοδο Χ και ενεργοποιείται μέσω της συνάρτησης ενεργοποίησης Relu
στην έξοδό του. Η έξοδος αυτού του στρώματος τροφοδοτεί το επόμενο επίπεδο, αλλά δεν
είναι παρατηρήσιμη εκτός του δικτύου, αφού πλέον αποτελεί κρυφό επίπεδο. Όμοια το
δεύτερο επίπεδο αποτελείται από το σύνολο των βαρών και των τάσεων που εφαρμόζεται στη
είσοδο του Χ και ενεργοποιείται μέσω της συνάρτησης ενεργοποίησης Relu. Τέλος το επίπεδο
εξόδου αποτελείται από τα βάρη και τις τάσεις, και μέσω της συνάρτηση Softmax δημιουργεί
τις πιθανότητες και τα αποτελέσματα.

2.9.8 Back Propagation

Ο αλγόριθμός Back Propagation, για τον οποίο έχει γίνει αναφορά σε προηγούμενες ενότητες,
εφαρμόζεται και στην βαθιά μηχανική μάθηση. O Αλγόριθμος Back Propagation είναι μια
γενίκευση του κανόνα δέλτα σε πολυεπίπεδα δίκτυα πρόσθιας τροφοδότησης, που
χρησιμοποιεί τον κανόνα της αλυσίδας (chain rule) για να υπολογίσει διαδοχικά τις κλίσεις για
κάθε στρώμα. Με τον κανόνα της αλυσίδας γίνεται η εύρεση της παραγώγου του μοντέλου του
δικτύου με εύκολο και γρήγορο τρόπο.

Για να γίνει κατανοητός ο κανόνας της αλυσίδας απλοποιούμε το μοντέλο σε απλές λειτουργίες
όπως απεικονίζεται στην εικόνα 33:

Εικόνα 33 Απλοποιημένο μοντελο 2 επιπεδων

Διπλωματική Εργασία 49
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

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

Για τον υπολογισμό της παραγώγου υλοποιείται άλλος ένας γράφος όπως το σχήμα:

Εικόνα 34 Σχηματική παρουσιαση παραγώγόυ 𝑦 − 𝑦̂

Ο backpropagation για την υλοποίησή όπως φαίνεται στην εικόνα 36 χρησιμοποιεί ένα
στοχαστικό αλγόριθμο βελτιστοποίησης κλίσης και μία συνάρτηση απώλειας. Λειτουργεί σε
δύο φάσεις την φάση διάδοσης (forward prop) και την φάση οπισδοδιάδοσης σφάλματος (Back
Prop).

Κατά τη φάση της διάδοσης με τον στοχαστικό αλγόριθμο βελτιστοποίησης ρυθμίζεται το


βάρος των νευρώνων υπολογίζοντας την κλίση μέσω της συνάρτησης απώλειας (loss
function). Έτσι όταν το διάνυσμα εισόδου παρουσιάζεται στο δίκτυο, μεταδίδεται προς τα
εμπρός μέσω του δικτύου, επίπεδο-επίπεδο, μέχρι να φτάσει στο στρώμα εξόδου. Στη
συνέχεια, η έξοδος του δικτύου συγκρίνεται με την επιθυμητή έξοδο μέσω της loss function.
Η τιμή σφάλματος που προκύπτει υπολογίζεται για καθένα από τους νευρώνες στο στρώμα
εξόδου. Οι τιμές σφάλματος στη συνέχεια μεταδίδονται από την έξοδο πίσω μέσω του δικτύου,
έως ότου κάθε νευρώνας έχει μια σχετική τιμή σφάλματος που αντανακλά τη συμβολή του

Διπλωματική Εργασία 50
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

στην αρχική έξοδο. Το Backpropagation χρησιμοποιεί αυτές τις τιμές σφάλματος για να
υπολογίσει την κλίση της συνάρτησης απώλειας loss function.

Κατά τη φάση της οπισθοδιάδοσης (back prop), αυτή η κλίση τροφοδοτείται στη μέθοδο
βελτιστοποίησης, η οποία με τη σειρά της ενημερώνει τα βάρη, σε μια προσπάθεια να
ελαχιστοποιηθεί η loss function .

Εικόνα 35 Σχηματική απεικόνιση Back Propagation

Η ανωτέρω διαδικασία επαναλαμβάνεται πολλές φορές στα αρχικά σας ενημερώνοντας τα


βάρη και τις τάσεις έως ότου βελτιστοποιηθεί ολόκληρο το μοντέλο.

Διπλωματική Εργασία 51
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3. Ανάλυση συναισθήματος με Tensorflow

3.1 TensorFlow

Η Python είναι μια δυναμική γλώσσα προγραμματισμού υψηλού επιπέδου (high level), γενικού
σκοπού (general purpose) με πολύ καλή τεκμηρίωση και χιλιάδες βιβλιοθήκες. πράγμα που
σημαίνει αποτελεσματικότητα με ελάχιστο κώδικα. Στην παρούσα εργασία θα
χρησιμοποιηθούν οι βιβλιοθήκες NLTK και η βιβλιοθήκη NumPy, που θεωρείται θεμελιώδες
πακέτο για επιστημονικό υπολογισμό με την Python. Περιέχει μεταξύ άλλων ένα ισχυρό
αντικείμενο N-διάστατων πινάκων (Array) οι οποίοι είναι ταχύτεροι σε πράξεις από τους
πίνακες της Python. Το Numpy είναι ένα ισχυρό εργαλείο αφού το TensorFlow χρησιμοποιεί
τους πίνακες στην λειτουργία του όπως θα εξηγηθεί και συνδέει τα επεξεργασμένα δεδομένα
– παραδείγματα με αυτό. Θα χρησιμοποιηθεί η βιβλιοθήκη Greekstemmer, ένα Ελληνικό
Stemmer το οποίο αποτέλεσε διπλωματική εργασία μεταπτυχιακού του Γιώργου Νταή, με
τίτλο "Ανάπτυξη ενός Stemmer για την Ελληνική Γλώσσα". Η Λειτουργία του βασίζεται ως
εξής, το σύστημα παίρνει ως είσοδο μια λέξη και αφαιρεί το πλησιέστερο επίθημά του
σύμφωνα με έναν αλγόριθμο που βασίζεται σε συγκεκριμένους κανόνες. Ο αλγόριθμος
ακολουθεί τον γνωστό αλγόριθμο Porter για την αγγλική γλώσσα και αναπτύσσεται σύμφωνα
με τους γραμματικούς κανόνες της νεοελληνικής γλώσσας. Μοναδικός περιορισμός είναι ότι
η ανωτέρω εργασία εκτελείται μόνο όταν οι λέξεις μετατραπούν σε κεφαλαία και αφαιρεθούν
τα σημεία στίξης.

Το εργαλείο pickle υλοποιεί μετατροπή αντικειμένων εικόνων ή κειμένου σε δυαδικά


πρωτόκολλα για τη σειριοποίηση και την αποσεριοποίηση. Το "pickup" είναι η διαδικασία με
την οποία η ιεραρχία αντικειμένων Python μετατρέπεται σε ροή byte και "unpickling" είναι η
αντίστροφη λειτουργία, όπου μια ροή byte μετατρέπεται ξανά σε μια ιεραρχία αντικειμένων.
Θα χρησιμοποιηθεί στην ψηφιοποίηση του λεξικού.

Διπλωματική Εργασία 52
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Η βιβλιοθήκη της Python TensorFlow από την ονομασία της, εκφράζει και τον τρόπο με τον
οποίο λειτουργεί. Αποτελείται από τις λέξεις Tensor που σημαίνει τάση-τανυστής και Flow
που σημαίνει ροή. Τα δεδομένα στο TensorFlow αντιπροσωπεύονται ως τάσεις (tensors), οι
οποίες είναι πολυδιάστατοι πίνακες (array) οι οποίοι παίρνουν τις τιμές 0 ή 1 (Nikhil Buduma
2015). Το Flow προδίδει ότι το πρόγραμμα επιτρέπει στους χρήστες να εκφράσουν τους
υπολογισμούς αυτούς ως ένα γράφος (graph) ροής δεδομένων (data flow). Οι κόμβοι
(νευρώνες) του γραφήματος αντιπροσωπεύουν μαθηματικές λειτουργίες που εξάγουν στις
απολήξεις τους δεδομένα που μεταδίδονται στον επόμενο κόμβο για να υπολογίσουν και να
εξάγουν δεδομένα στον επόμενο. Ο τρόπος σκέψης για την ανωτέρω λειτουργία υπολογισμού
βρίσκει εφαρμογή σε πολλά διαφορετικά επιστημονικά πεδία, αλλά το TensorFlow
χρησιμοποιείται κυρίως για νευρωνικά δίκτυα πολλών επιπέδων, δηλαδή για βαθιά εκμάθηση
(Deep Learning). Η ευέλικτη αρχιτεκτονική του επιτρέπει να αναπτυχθούν Βαθιά Νευρωνικά
Δίκτυα και βαθιά μηχανική Μάθηση από ένα κατανεμημένο δίκτυο υπολογιστών με μία ή
περισσότερες CPU ή GPU ακόμα και σε έναν επιτραπέζιο υπολογιστή, ή και σε μία κινητή
συσκευή με ένα μόνο API.

3.2 Τανιστές (Tensors)

Η κεντρική μονάδα δεδομένων στο TensorFlow είναι ο τανυστής (tensor). Ένας τανυστής
αποτελείται από ένα σύνολο τιμών που διαμορφώνονται σε μια σειρά οποιουδήποτε αριθμού
διαστάσεων. Η τάξη ενός tensor είναι ο αριθμός των διαστάσεων του Σχήμα 36. Το
TensorFlow χρησιμοποιεί πίνακες Numpy για να παρουσιάσει τις διαστάσεις των τανυστών
όπως παρουσιάζεται στον πίνακα 2 και εικόνα 36. Ως διάσταση του τανυστή ορίζεται ο βαθμός
του πίνακα που θα ορίσουμε για την εισαγωγή των δεδομένων. Σχηματικά όπως παρουσιάζεται
στην εικόνα 36 μια διάσταση είναι μια γραμμή, δύο διαστάσεις ένα τετράγωνο, τρεις
διαστάσεις ένας κύβος, τέσσερεις διαστάσεις μια σειρά κύβων και 5 διαστάσεις ένα τετράγωνο
κύβων.

Διπλωματική Εργασία 53
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 36 Σχηματική παρασταση διαστασεων τανυστων

3. # ένας μηδενικής τάξης tensor; a scalar with shape [],


[1., 2., 3.] # ένας πρώτης τάξης tensor, ένα διάνυσμα με σχήμα [3]
[[1., 2., 3.], [4., 5., 6.]] # ένας δεύτερης τάξης tensor; ένας πίνακα με σχήμα [2, 3]
[[[1., 2., 3.]], [[7., 8., 9.]]] # μίας τρίτης τάξης tensor με σχήμα [2, 1, 3]
Πίνακας 2 Διαστάσεις Tensorflow σε πίνακα

Το πρόγραμμα TensorFlow αποτελείται από δύο διακριτά τμήματα:

 Δημιουργία του υπολογιστικού γραφήματος (tf.Graph)


 Εκτέλεση του υπολογιστικού γραφήματος. (tf.Session)

Διπλωματική Εργασία 54
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Ένα υπολογιστικό γράφημα είναι μια σειρά λειτουργιών TensorFlow διατεταγμένων σε ένα
γράφημα από κόμβους. Σε ένα απλό υπολογιστικό γράφημα, κάθε κόμβος παίρνει μηδενικές ή
περισσότερες τάσεις ως είσοδούς και παράγει έναν τανυστή ως έξοδο. Ένας τύπος κόμβου
είναι μια σταθερά. Όπως όλες οι σταθερές TensorFlow, παίρνει εισόδους και εξάγει μια τιμή
που αποθηκεύει εσωτερικά.

3.3 Μεταβλητές TensorFlow

Οι μεταβλητές (Variables) χρησιμοποιούνται για την αναπαράσταση των παραμέτρων του


μοντέλου. Οι μεταβλητές TensorFlow περιέχουν τανυστές, αλλά σε αντίθεση με τους
φυσιολογικούς τανιστές οι οποίοι αρχικοποιούνται μόνο στην αρχή της εκτέλεσης του
γραφήματος, η χρήση των μεταβλητών διαρκεί στις εκτελέσεις ενός γραφήματος. Οι
μεταβλητές TensorFlow έχουν τις παρακάτω ιδιότητες:
 Πρέπει να γίνει αυστηρή αρχικοποίηση των μεταβλητών προτού χρησιμοποιηθεί για
πρώτη φορά ο γράφος.
 Με τις μεθόδους κλήσης που θα οριστούν οι μεταβλητές τροποποιούνται μετά από κάθε
επανάληψη καθώς αναζητούμε τις βέλτιστες ρυθμίσεις παραμέτρων ενός μοντέλου για την
εκπαίδευσή του.
 Είναι δυνατό να αποθηκευτούν οι τιμές σε μεταβλητές για να μπορούν να
χρησιμοποιηθούν για μεταγενέστερη χρήση.
Μεταβλητές σε ένα νευρωνικό δίκτυο αποτελούν τα βάρη και οι τάσεις. Ο ορισμός μιας
μεταβλητής παρουσιάζεται στον πίνακα 3, όπου αρχικοποιείται μια μεταβλητή που περιγράφει
τα βάρη που συνδέουν τους νευρώνες μεταξύ δύο στρωμάτων ενός Νευρωνικού Δικτύου
Πρόσθιας τροφοδότησης (Feedforward neural network).

weights : tf.Variable(tf.random_normal(300,200))

Πίνακας 3 Αρχικοποίηση μεταβλητής

Διπλωματική Εργασία 55
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Στον πίνακα 3 ορίζονται δύο δηλώσεις στο tf.Variable. Το πρώτο, tf.random_normal, είναι μια
λειτουργία που παράγει ένα tensor αρχικοποιημένο με μέγεθος 300x200, δηλαδή ότι τα βάρη
συνδέουν ένα στρώμα με 300 νευρώνες σε ένα στρώμα με 200 νευρώνες. Έχουμε επίσης
περάσει ένα όνομα στην κλήση μας στο tf.Variable. Το όνομα είναι ένα μοναδικό
αναγνωριστικό που μας επιτρέπει να ανατρέξουμε στον κατάλληλο κόμβο στο γράφημα
υπολογισμού. Σε αυτή την περίπτωση, τα βάρη προορίζονται να είναι εκπαιδευτικά, ή με άλλα
λόγια, θα υπολογίζουμε αυτόματα και θα εφαρμόζουμε κλίσεις στα βάρη. Όταν καλείται η
tf.Variable, προστίθενται τρεις πράξεις στο γράφημα υπολογισμού (εικόνα 37):
 Η λειτουργία που παράγει τον tensor που χρησιμοποιείται για την αρχικοποίηση της
μεταβλητής.
 Η λειτουργία tf.assign, η οποία είναι υπεύθυνη για την πλήρωση της μεταβλητής με
την αρχικοποίηση tensor πριν από τη χρήση της μεταβλητής.
 Η μεταβλητή λειτουργία, η οποία διατηρεί την τρέχουσα τιμή της μεταβλητής.

Εικόνα 37 Τρείς λειτουργίες προστίθενται στο γράφημα όταν αρχικοποιούμε μια μεταβλητή στο TensorFlow

Όπως αναφέρεται παραπάνω, πριν χρησιμοποιηθεί οποιαδήποτε μεταβλητή TensorFlow, η


λειτουργία tf.assign πρέπει να τρέξει έτσι ώστε η μεταβλητή να αρχικοποιηθεί κατάλληλα με
την επιθυμητή τιμή. Συνήθως υλοποιείται ορίζοντας το tf.global_variables_initializer () το
οποίο θα αρχικοποιήσει όλες τις λειτουργίες tf.assign στο γράφημά μας. Κύριες μεταβλητές
που δηλώνονται σε ένα νευρωνικό δίκτυο είναι τα βάρη και οι τάσεις πόλωσης.

Διπλωματική Εργασία 56
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.4 Λειτουργίες TensorFlow

Οι λειτουργίες (Operations) στο TensorFlow αντιπροσωπεύουν αφηρημένους


μετασχηματισμούς που εφαρμόζονται σε τάσεις στον υπολογιστικό Γράφο. Οι λειτουργίες
μπορεί να έχουν γνωρίσματα που μπορεί να προσφέρονται a priori ή να συνάγονται κατά το
χρόνο εκτέλεσης. Eνα χαρακτηριστικό μπορεί να χρησιμεύσει για να περιγράψει τους
αναμενόμενους τύπους εισόδου (προσθήκη τάσεων τύπου float32 έναντι int32). Ακριβώς όπως
ονομάζονται μεταβλητές, μπορεί να παρέχονται και λειτουργίες με ένα προαιρετικό
χαρακτηριστικό ονόματος για εύκολη αναφορά στον υπολογιστικό γράφο. Μια λειτουργία
αποτελείται από έναν ή περισσότερους πυρήνες (Kernels), οι οποίοι αντιπροσωπεύουν
υλοποιήσεις συγκεκριμένων συσκευών.
Στον πίνακα 4 παρουσιάζονται λειτουργίες ανά κατηγορία οι οποίες περιγράφουν τις
δυνατότητες στο TensorFlow. Στην υλοποίηση του νευρωνικού δικτύου χρησιμοποιούνται οι
λειτουργίες για μαθηματικούς υπολογισμούς όπως η matmul που υλοποιεί τον
πολλαπλασιασμό Wx, η λειτουργία Relu που εκτελεί υπολογισμούς της ομώνυμης συνάρτησης
καθώς και η λειτουργία Save Restore οπού αποθηκεύει το μοντέλο για περεταίρω χρήση.

Κατηγορία Παραδείγματα
Μαθηματικές πράξεις 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
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.5 Κράτηση θέσης (Placeholder)

Μία μεταβλητή από μόνη της δεν είναι επαρκής επειδή προορίζεται μόνο να αρχικοποιηθεί
μία φορά. Αντίθετα, χρειαζόμαστε ένα στοιχείο το οποίο συμπληρώνουμε κάθε φορά που
εκτελείται το γράφημα υπολογισμού. Το TensorFlow λύνει αυτό το πρόβλημα
χρησιμοποιώντας την κράτηση θέσης ( Placeholder). Ένας placeholder χρησιμοποιείται σε
πράξεις όπως ακριβώς και οι συνήθεις μεταβλητές TensorFlow και tensors.

x = tf.placeholder(tf.float32, name="x", shape=[None, 784])


W = tf.Variable(tf.random_uniform([784,10], -1, 1), name="W")
multiply = tf.matmul(x, W)
Πίνακας 5 Ορισμός Placeholder

Στον πίνακα 5 ορίζεται ένας placeholder όπου το x αντιπροσωπεύει μια μίνι-παρτίδα


αποθηκευμένων δεδομένων ως float32'. Παρατηρούμε ότι το x έχει 784 στήλες, πράγμα που
σημαίνει ότι κάθε δείγμα δεδομένων έχει 784 διαστάσεις. Παρατηρούμε επίσης ότι το x έχει
έναν απροσδιόριστο αριθμό γραμμών. Αυτό σημαίνει ότι το x αρχικοποιείται με έναν
αυθαίρετο αριθμό δειγμάτων δεδομένων. Ενώ θα μπορούσε να πολλαπλασιαστεί κάθε δείγμα
δεδομένων ξεχωριστά με το W, εκφράζοντας μια πλήρη μίνι-παρτίδα ως tensor, επιτρέπει να
υπολογίσουμε τα αποτελέσματα για όλα τα δείγματα δεδομένων παράλληλα. Το αποτέλεσμα
είναι ότι η i-οστη σειρά του πολλαπλασιαστή τάσης αντιστοιχεί σε W πολλαπλασιασμένη με
το i-ιοστό δείγμα δεδομένων.
Ακριβώς όπως οι μεταβλητές πρέπει να αρχικοποιηθούν την πρώτη φορά που δημιουργείται
το γράφημα υπολογισμού, οι placeholders πρέπει να τροφοδοτούν κάθε φορά που εκτελείται
το γράφημα υπολογισμού (ή υπογράμμιση). Κύριοι Placeholders σε ένα νευρωνικό δίκτυο
είναι οι εισόδοι χ και η πρόβλεψη y.

Διπλωματική Εργασία 58
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.6 Sessions στο TensorFlow

Ένα πρόγραμμα TensorFlow αλληλοεπιδρά με τον γράφο υπολογισμού χρησιμοποιώντας μια


περίοδο λειτουργίας (Session). Είναι αναγκαία για την επαναλαμβανόμενη υλοποίηση του
υπολογιστικού γράφου της εικόνας 38. Στην εικόνα 38 παρουσιάζονται οι μεταβλητές των
βαρών (W) και τάσεων (b) ο placeholder x και διακρίνονται οι λειτουργίες tf.matmul που
υλοποιεί τον πολλαπλασιασμό Wx και το tf.add που υλοποιεί την πρόσθεση του
πολλαπλασιασμού Wx με το b και δίδει έξοδο το αποτέλεσμα της εξίσωσης Wx+b. Το
tf.session χρησιμοποιείται για την επανάληψη του υπολογισμού του γραφήματος για όσες
φορές οριστεί.

Εικόνα 38 Παράδειγμα απλού υπολογιστικού γράφου

Η sess.run χρησιμοποιείται για την εκπαίδευση δικτύων. Πριν προχωρήσουμε στην κατάρτιση
του μοντέλου, αναγκαιούν δύο ακόμη σημαντικές έννοιες στην κατασκευή και διατήρηση
υπολογιστικών γραφημάτων.

Διπλωματική Εργασία 59
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.7 Λογιστική παλινδρόμηση και στοχαστικοί αλγόριθμοι στο TensorFlow

Η λογιστική παλινδρόμηση όπως έχει αναφερθεί είναι μια μέθοδος η οποία υπολογίζει την
πιθανότητα ότι μια είσοδος ανήκει σε μία από τις κλάσεις που έχουμε ορίσει.. Στην περίπτωση
της ταξινόμησης συναισθήματος ενός κειμένου σε θετικό η αρνητικό θα υπολογιστεί η
πιθανότητα ενός κειμένου εισόδου να είναι [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 Συνάρτηση κόστους και στοχαστικός αλγόριθμος βελτιστοποίησης

Το ανώτερο μοντέλο υλοποιείται σε τέσσερις φάσεις:


1. Συμπερασματικό: το οποίο παράγει μια κατανομή πιθανότητας στις τάξεις εξόδου.
2. Το κόστος ή απώλεια (loss): η οποία υπολογίζει την τιμή της συνάρτησης σφάλματος (στην
περίπτωση αυτή, την cross entropy)
3. Την εκπαίδευση(training): η οποία είναι υπεύθυνη για τον υπολογισμό των διαβαθμίσεων
του μοντέλου τις παραμέτρους και την ενημέρωση του μοντέλου
4. Την αξιολόγηση: ποιος θα καθορίσει την αποτελεσματικότητα ενός μοντέλου.

Διπλωματική Εργασία 60
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.8 Υλοποίηση Βαθύ Νευρωνικού Δικτύου στο TensorFlow

Για την ταξινόμηση συναισθήματος, δημιουργήθηκε υλοποιήθηκε ένα νευρωνικό δίκτυο 3


κρυφών επιπέδων (εικόνα 39), με 964 κόμβους στο επίπεδο εισόδου, στο πρώτο κρυφό , 100
νευρώνες, 50 νευρώνες στο δεύτερο κρυφό επίπεδο, 30 νευρώνες στο τρίτο επίπεδο και στο
επίπεδο εξόδου 2 νευρώνες. Η διάρκεια εκπαίδευσης ορίστηκε στις 500 εποχές. Η εκπαίδευση
έγινε ανά batches και ορίστηκε batch size ίσο με 100. Χρησιμοποιήθηκε συνάρτηση
ενεργοποίησης RELU και η Softmax cross entropy περιέχει στοχαστικό αλγόριθμο βελτίωσης
τον AdamOptimizer με ρυθμό μάθησης 0.001. Τέλος για την αποφυγή το Overfitting
εφαρμόστηκε η μέθοδος Dropout με πιθανότητα συγκράτησης κόμβων 0,5.

Εικόνα 39 Νευρωνικό Δυκτιο 3 κρυφών επιπέδων

Διπλωματική Εργασία 61
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.9 Άντληση παραδειγμάτων

Στην επιβλεπομένη μάθηση η εκπαίδευση ενός νευρωνικού δικτύου γίνεται μέσω


παραδειγμάτων. Τα παραδείγματα είναι αυτά που θα εκπαιδεύσουν αποτελεσματικά το
νευρωνικό δίκτυο. Στο επίπεδο της NLP ξένα πανεπιστήμια έχουν δημιουργήσει σετ
δεδομένων φυσικής γλώσσας για την αξιολόγηση εργασιών μηχανικής μάθησής με ποιο
γνωστό αυτό του πανεπιστήμιου του Stanford, το Sentiment 140.

Στην Ελληνική Γλώσσα δεν υπάρχει κάποιο τέτοιο σετ δεδομένων. Η αναγκαιότητά του
οδήγησε στην μελέτη τεχνικών άντλησης δεδομένων με μεθόδους όπως το Webscraping.
Webscraping είναι η άντληση δεδομένων από μια ιστοσελίδα με κάποιο αλγοριθμικό τρόπο.
Η δομή των ιστοσελίδων δεν είναι τυχαία. Ακολουθεί κάποιο πρότυπο η ακολουθία και έτσι η
εξόρυξη κειμένου από αυτά μπορεί να γίνει με τον ορισμό μιας συγκεκριμένης ακολουθίας.
Για την άντληση θετικού ή αρνητικού συναισθήματος αυτό μπορεί να γίνει από σχόλια ή
κριτικές ταινιών, θεατρικών παραστάσεων, προϊόντων, καταστημάτων, αθλητικών γεγονότων,
σχολιασμό πολιτικής κατάστασης κοινωνικών δρωμένων. Η έκρηξη των κοινωνικών δικτύων
και των e-Shop δημιουργεί χιλιάδες παραδείγματα τα οποία αν οργανωθούν μπορούν να
αποτελέσουν καλά παραδείγματα εκπαίδευσης.

3.10 Σακούλα λέξεων (BAG OF WORDS)

Εξίσου σημαντικό με την υλοποίηση ενός απλού η με πολλά επίπεδα νευρωνικού δικτύου
είναι και η υλοποίηση ενός αλγορίθμου στον οποίο μετατρέπουμε τα εκάστοτε δεδομένα-
παραδείγματα σε μορφή δεδομένων μορφής εισόδου 0 και 1 του νευρωνικού δικτύου το οποίο
θα εκτελέσει τους υπολογισμούς για την εκπαίδευσή του. Η μέθοδος που θα χρησιμοποιηθεί
για τον σκοπό ονομάζεται Bag of words (Σακούλα λέξεων) (Steven Bird, Ewan Klein, and
Edward Loper 2009). Είναι η πιο απλή μέθοδος ταξινόμησης κειμένου. Ο τρόπος με τον οποίο
λειτουργεί παρουσιάζεται στην εικόνα 40. Με έναν αλγόριθμο διαχωρίζουμε το κείμενο

Διπλωματική Εργασία 62
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

(παραδείγματα) στις επιμέρους λέξεις που το αποτελούν. Βρίσκουμε τη ρίζα των λέξεων και
δημιουργούμε ένα λεξικό που μοναδικό χαρακτηριστικό έχει την συχνότητα της κάθε λέξης.

Εικόνα 40 Bag of Words

Όπως φαίνεται στην εικόνα 40 δημιουργήθηκε ένας πίνακας λέξεως με παράδειγμα


[H,ΝΕΥΡΩΝΙΚ,ΔΕΔΟΜΕΝ, ΜΟΡΦ,……,ΣΗΜΑΝΤΙΚ]. Κατά την εκπαίδευση και
επαλήθευση το κάθε παράδειγμα η κάθε πρόταση που θα εισέρχεται στο δίκτυο θα ελέγχεται
αν υπάρχει κάποια λέξη στον πίνακα (λεξικό).Αν υπάρχει θα επιστρέφει την τιμή 1 αλλιώς θα
επιστρέφει την τιμή 0. Δηλαδή αν η είσοδος είναι « ΤΑ ΝΕΥΡΩΝΙΚΑ ΔΥΚΤΙΑ ΑΠΑΙΤΟΥΝ
ΔΕΔΟΜΕΝΑ» αυτό που θα επιστρέφει θα είναι [0,1,1,0,…..,0] αφού στην πρόταση δεν
υπάρχουν οι λέξεις Η,ΜΟΡΦ,ΣΗΜΑΝΤ.

Διπλωματική Εργασία 63
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3.11 Αλγόριθμος δημιουργίας λεξικού συναισθήματος

Αρχικά γίνεται εισαγωγή όλων τα παραδειγμάτων θετικών και αρνητικών χωρίς να είναι
χαρακτηρισμένα (χωρίς ετικέτα) και με το 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
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 41 Διαχωρισμός δεδομένων εκπαίδευσης με δεδομένων επαλήθευσης

Η συνάρτηση Create_features_sets_and_Labels () δημιουργεί σετ χαρακτηριστικών στα οποία


θα προστεθεί μια ετικέτα [1,0] ή [0,1] εφόσον το κείμενο είναι θετικού ή αρνητικού
συναισθήματος. Τα παραδείγματα που βρίσκονται στο Pos.txt ανήκουν στα θετικά και τα
παραδείγματα Neg.txt ανήκουν στα αρνητικά. Τα παραδείγματα θα ανακατεύονται για
καλυτέρα στατιστικά αποτελέσματα και αποτελούν ένα πίνακα. Όπως αναφέρθηκε και σε
προηγουμένη ενότητα τα παραδείγματα είναι αυτά που θα δώσουν τα στατιστικά
αποτελέσματα για το αν το δίκτυο κλείνει στη σωστή κατεύθυνση. H κύρια συνάρτηση του
προγράμματος μας, η οποία καλείται στο νευρωνικό δίκτυο, είναι αυτή που δημιουργεί τα
χαρακτηριστικά και τις ετικέτες των δεδομένων εκπαίδευσής και τεστ και τα αποθηκεύει στο
αρχείο lexicon.pickle, το οποίο μπορεί να χρησιμοποιηθεί για μελλοντική χρήση για την
εφαρμογή του δικτύου.

3.12 Εφαρμογή του εκπαιδευμένου Νευρωνικού Δικτύου.

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

Διπλωματική Εργασία 65
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

μέσα από το δίκτυο είναι ίδιος με τον τρόπο που το δίκτυο εκπαιδεύτηκε. Απαραίτητο
συστατικό είναι η ανάκληση του αρχείου checkpoint το οποίο έχει κρατήσει τις παραμέτρους
του δικτύου κατά τη διάρκεια της εκπαίδευσής του. Έτσι τα παραδείγματα που εισάγουμε
περνάνε στο δίκτυο μετατρέπονται σε ρίζες λέξεων και το δίκτυο δίδει τις τιμές. Ο κώδικας
που περιγράφηκε βρίσκεται στο Παράρτημα Α

Διπλωματική Εργασία 66
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

4. Εφαρμογή Ανάλυσης συναισθήματος από ελληνικό κείμενο


σε Νευρωνικό δίκτυο πολλών Στρωμάτων

4.1 Αρχιτεκτονική μοντέλου εκπαίδευσης

Για τη λύση του προβλήματος χρησιμοποιήθηκαν 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%.

Εικόνα 42 Αρχιτεκτονική Δικτύου χωρίς επίπεδο εισόδου (Πηγή : alexlenail.me)

Διπλωματική Εργασία 67
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

4.2 Οπτικοποίηση δεδομένων εκπαίδευσης

Οι υπολογισμοί που χρησιμοποιεί το TensorFlow σε ένα βαθύ νευρωνικό δίκτυο είναι


πολύπλοκοι. Για την καλύτερη κατανόηση, τον εντοπισμό σφαλμάτων και τη βελτιστοποίηση
των προγραμμάτων το TensorFlow, συμπεριλαμβάνει ένα σετ εργαλείων οπτικοποίησης που
ονομάζεται TensorBoard. Το TensorBoard χρησιμοποιείται για την απεικόνιση του γράφου
TensorFlow, για το σχεδιασμό ποσοτικών μετρήσεων για την εκτέλεση του γραφήματος και
την προβολή των δεδομένων, όπως εικόνες που περνούν μέσα από αυτό. Επίσης, λειτουργεί
με κάποια εργαλεία με τα οποία οπτικοποιεί τα δεδομένα.

Στο TensorBoard η παρουσίαση των δεδομένων γίνεται στον browser του υπολογιστή
ορίζοντας τον ίδιο υπολογιστή ως server με localhost 6006 όπως φαίνεται στην εικόνα 43.

Εικόνα 43 Εντολή στο τερματικό για εισαγωγή στο tensorboard

Διπλωματική Εργασία 68
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Με το TensorBoard γίνεται οπτικοποίηση του νευρωνικού δικτύου, όπως φαίνεται στην εικόνα
44. Απεικονίζονται οι εισόδοι, τα κρυφά επίπεδα, καθώς και οι συναρτήσεις υπολογισμού
ακρίβειας και κόστους. Αυτό μπορεί να γίνει ονομάζοντας τις απλές μεταβλητές όπως τα βάρη
και τις τάσεις και την είσοδο χ και έξοδο y, είτε με ομαδοποίηση των στοιχείων του μοντέλου
μας δημιουργώντας πιο συμπαγείς δομές. Οι πιο συμπαγείς δομές είναι η συνάρτηση κόστους,
η συνάρτηση ακρίβειας, το μοντέλο και τα κρυφά επίπεδα.

Εικόνα 44 Ο κυριος Γράφος του Δικτύου

Μπορούμε να δούμε επίσης τα εσωτερικά χαρακτηριστικά από τα οποία αποτελούνται οι


συμπαγείς δομές που δημιουργήθηκαν. Στην εικόνα 45 διαφαίνεται από τι αποτελείται η
συνάρτηση κόστους. Όπως είναι φανερό εμπεριέχει τη συνάρτηση Softmax, η οποία,
συνδέεται ως έξοδος με το στοχαστικό αλγόριθμο βελτιστοποίησης ADAM και έχει ως είσοδο
τη συνάρτηση model που υλοποιεί τη γραμμική συνάρτηση των τριών κρυφών επιπέδων. Έτσι,
οι συμπαγείς δομές που έχουμε ορίσει να ελέγχονται και να μην αποτελούν ένα μαύρο κουτί
του συστήματος που δημιουργήσαμε.

Διπλωματική Εργασία 69
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 45 Συστατικά της Loss Function.

Μπορούμε ακόμη να δούμε την ακρίβεια του δικτύου σε σχέση με το χρόνο. Όπως φαίνεται
στην εικόνα 46 στις 500 εποχές η ακρίβεια φτάνει το 86 % για τα σετ εκπαίδευσης (training
set) και 83 % για το σετ επαλήθευσης (test set).

Εικόνα 46 Εκπαίδευση σε σχέση με το χρόνο

Διπλωματική Εργασία 70
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Η εκπαίδευση του δικτύου όπως φαίνεται στην εικόνα 46 μπορεί να οπτικοποιηθεί σε όλη την
διάρκειά της και δεν παρουσιάζεται απλά ένα τελικό αποτέλεσμα εκπαίδευσης. Αυτό από μόνο
του μπορεί να δώσει πολλές πληροφορίες. Φαίνεται στο γράφημα της εικόνας 46, ότι κατά τη
διάρκεια της εκπαίδευσης απαιτείται κάποιος χρόνος έως ότου η ακρίβεια της εκπαίδευσης να
ομαλοποιηθεί. Ιδιαίτερα στα δεδομένα εκπαίδευσης φαίνεται η απόδοση να σταθεροποιείται ή
και να χάνει στην ακρίβεια, έως ότου να φτάσουν στην ακρίβεια του 80%. Ακόμα και τότε η
γραφική παράσταση δεν είναι σταθερή όσο αυτή των δεδομένων επαλήθευσης. Παρόλα αυτά,
στις 500 εποχές, για τα δεδομένα εκπαίδευσης έχει ακρίβεια περίπου στο 86%.

Εκτός από την συνάρτηση ακρίβειας της εκπαίδευσης, σημαντική συνάρτηση που πρέπει να
μελετηθεί είναι και η συνάρτηση κόστους. Όπως φαίνεται και στην εικόνα 47, η συνάρτηση
κόστους εκπαίδευσης (train) και επαλήθευσης (test) κατά τη διάρκεια της εκπαίδευσης
παίρνουν την τιμή 0,3 και δεν αποκλίνουν μεταξύ τους. Αποφεύγονται, δηλαδή, φαινόμενα
overfitting.

Εικόνα 47 Γράφημα κόστους

Διπλωματική Εργασία 71
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Παρακάτω (εικόνα 48) απεικονίζεται η συνάρτηση κόστους με περισσότερη λεπτομέρεια. Τα


δεδομένα εκπαίδευσης τείνουν στα δεδομένα της επαλήθευσης. Φαίνεται ότι κατά τη διάρκεια
της εκπαίδευσης, τα δεδομένα εκπαίδευσης και επαλήθευσης δεν συμβαδίζουν, αλλά αυτό
διορθώνεται και όπως φαίνεται στο τέλος της εκπαίδευσης παίρνουν ιδίες σχεδόν τιμές.

Εικόνα 48 Γράφημα κόστους με Λεπτομέρεια

Το TensorBoard δίνει, ακόμη, τη δυνατότητα να δούμε τις τιμές που παίρνουν τα συναπτικά
βάρη, οι συναρτήσεις ενεργοποίησης και οι τάσεις για τα σετ εκπαίδευσης και επαλήθευσης
ανά επίπεδο. Μπορεί να γίνει σύγκριση μεταξύ σετ εκπαίδευσης και επαλήθευσης. Τα
δεδομένα παρουσιάζονται τρισδιάστατά οπού στο οριζόντιο άξονα έχουμε τα βήματα
εκπαίδευσης και οι τιμές που μπορούν να πάρουν τα βάρη, οι τάσεις και η συνάρτησή
ενεργοποίησης και η τρίτη διάσταση απεικονίζει το σχήμα που παίρνουν αντίστοιχα. Με αυτό
τον τρόπο απεικονίζεται σχηματικά η εκπαίδευση, δηλαδή οι τελική τιμή που θα πάρει το κάθε
κομμάτι του δικτύου.

Διπλωματική Εργασία 72
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 49 Τιμές 1ου κρυφού επιπέδου.

Παρατηρείται ότι τα βάρη ακολουθούν κανονική κατανομή για το σετ εκπαίδευσης αλλά και
για το σετ επαλήθευσης (εικόνα 49). Για τις τάσεις ανάλογα με τον αριθμό βημάτων
παρατηρείται ότι υπάρχει μια τυχαιότητα στις τιμές που παίρνουν. Παρόλα αυτά τείνουν να
ακολουθήσουν και αυτές κανονική κατανομή. Όσον αφορά την συνάρτηση ενεργοποίησης ,
παρατηρείται ότι υπάρχουν μικρές αλλαγές στην τιμή της κατά την διάρκεια της εκπαίδευσης.

Διπλωματική Εργασία 73
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 50 Τιμές 2ου κρυφού επιπέδου

Διπλωματική Εργασία 74
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 51 Τιμές 3ου κρυφού επιπέδου.

Αντίστοιχες, αλλά ποιο κοντά στο σημείο ισορροπίας, τιμές λαμβάνουν οι τάσεις και τα βάρη
στα επόμενα επίπεδα (εικόνα 50, 51).

Διπλωματική Εργασία 75
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

4.3 Αποτελεσματικότητα εκπαιδευμένου δικτύου με εισαγωγή νέων


παραδειγμάτων

Στη παρούσα διπλωματική δημιουργήθηκε ένα πρόγραμμα στο οποίο τοποθετούμε


παραδείγματα εκτός του σετ δεδομένων εκπαίδευσης για να δούμε πως ανταποκρίνεται το
δίκτυο. Τα παραδείγματα περνάνε μέσα από το εκπαιδευμένο δίκτυο και από τους νευρώνες
εξόδου χαρακτηρίζεται το κάθε παράδειγμα ως θετικό ή αρνητικό. Στις εικόνες 52-55 έχουν
δοθεί παραδείγματα από κάποιες λέξεις κλειδιά από κριτικές ταινιών, πολιτικής επικαιρότητας,
και κριτικές προϊόντων καταστημάτων. Το δίκτυο ανταποκρίνεται σε κάποια παραδείγματα
σωστά, παρουσιάζει όμως και σημαντικά σφάλματα.

Εικόνα 52 Λεξεις κλειδιά

Όπως φαίνεται από την εικόνα 52 από τις 13 λέξεις δίδονται 9 σωστές απαντήσεις. Στο
παράδειγμα ¨ΔΕΝ ΕΝΘΟΥΣΙΑΣΤΙΚΑ¨ φαίνεται να κυριαρχεί το δεν αφού η λέξη
ενθουσιάστηκα από μόνη της αποτελεί λέξη με θετικό συναίσθημα.

Διπλωματική Εργασία 76
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 53 Κριτικές ταινιών

Στις κριτικές ταινιών δόθηκαν όπως φαίνεται από την εικόνα 53 δόθηκαν 13 παραδείγματα
από τα οποία σωστά ήταν τα 8. Παρατηρείται ότι σε κάποια παραδείγματα ενώ τα σχόλια ήταν
θετικά υπήρχε η λέξη δεν οπού υπερίσχυσε του υπόλοιπου σχολίου και λήφθηκε από το δίκτυο
ως αρνητικό.

Εικόνα 54 Πολιτική επικαιρότητα

Διπλωματική Εργασία 77
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Εικόνα 55 Κριτικές καταστημάτων προϊόντων

Όπως φαίνεται στις παραπάνω εικόνες Στις λέξεις κλειδιά, 8 από τα 13 παραδείγματα είναι
σωστά. Στις κριτικές ταινιών 8 από 13 παραδείγματα είναι σωστά. Στις κριτικές καταστημάτων
προϊόντων 6 από τα 9 παραδείγματα είναι σωστά. Τέλος στην πολιτική επικαιρότητα τα 4 από
τα 6 παραδείγματα είναι σωστά. Στο σύνολο τους 26 από τα 41 είναι σωστά που εκφράζεται
σε επιτυχία 63%

Διπλωματική Εργασία 78
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

5. Επίλογος

Η Ταξινόμηση συναισθήματος Ελληνικού κειμένου με χρήση τεχνικών βαθιάς μηχανικής


μάθησης απέδωσε στο 86 % το οποίο κρίνεται ικανοποιητικό αφού υλοποιήθηκε για πρώτη
φορά, αλλά όχι αρκετά επαρκές καθώς στατιστικά δεν κρίνεται αξιόπιστο. Τρόποι που θα
μπορούσαν να βελτιώσουν την ανωτέρω μελέτη θα ήταν η ενασχόληση με την βιβλιοθήκη
NLTK ώστε να μπορεί να υποστηρίξει πλήρως την Ελληνική Γλώσσα κάτι το οποίο δεν έχει
πραγματοποιηθεί μέχρι σήμερα. Αυτό μπορεί να γίνει με την ενσωμάτωση και βελτίωση του
Greekstemmer και ενσωμάτωσή του στην ανωτέρω βιβλιοθήκη, καθώς και την δημιουργία και
ενσωμάτωση ενός Lemmatizer. Ένας άλλος τρόπος θα ήταν η δημιουργία ενός
πιστοποιημένου, ως προς την αξιοπιστία, σετ δεδομένων θετικού ή αρνητικού συναισθήματος
ακόμα και βαθμονομημένου συναισθήματος στα πρότυπα του σεντιμεντ140, το οποίο δε θα
περιέχει σφάλματα.

Τέλος θα μπορούσαν να χρησιμοποιηθούν άλλες τεχνικές νευρωνικών δικτιών όπως τα


συνελικτικά νευρωνικά δίκτυα, Convolutional Neural Networks (CNN) (Xiang Zhang Junbo
Zhao Yann LeCun, 2015) ή τα Επαναλαμβανόμενα νευρωνικά δίκτυα, Recurrent Neural
Networks (RNN) (Pengfei Liu Xipeng Qiu_ Xuanjing Huang, 2016) ή και συνδυασμός τους
Recurrent Convolutional Neural Networks (RCNN) (Siwei Lai, Liheng Xu, Kang Liu, Jun
Zhao, 2015) για να μελετηθεί τo πόσο αποτελεσματικές είναι οι αρχιτεκτονικές αυτές στην
ταξινόμησης φυσικής γλώσσας.

Διπλωματική Εργασία 79
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Διπλωματική Εργασία 80
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

Παράρτημα Α : Πηγαίος κώδικας αναπτυχθέντος λογισμικού


1. Αλγόριθμος Bag of words
import nltk
from nltk.tokenize import word_tokenize
import numpy as np
import random
import pickle
from collections import Counter
from greek_stemmer import GreekStemmer

lemmatizer = GreekStemmer()
hm_lines = 100000

def create_lexicon(pos, neg):


lexicon = []
with open(pos, 'r') as f:
contents = f.readlines()
for l in contents[:hm_lines]:
all_words = word_tokenize(l.upper())
lexicon += list(all_words)
with open(neg, 'r') as f:
contents = f.readlines()
for l in contents[:hm_lines]:
all_words = word_tokenize(l.upper())
lexicon += list(all_words)
lexicon = [lemmatizer.stem(i) for i in lexicon]
w_counts = Counter(lexicon)
l2 = []
for w in w_counts:
if 1000 > w_counts[w] > 50:
l2.append(w)
print(len(l2))
return l2

def sample_handling(sample, lexicon, classification):


featureset = []
with open(sample, 'r') as f:
contents = f.readlines()
for l in contents[:hm_lines]:
current_words = word_tokenize(l.upper())
current_words = [lemmatizer.stem(i)for i in current_words]
features = np.zeros(len(lexicon))
for word in current_words:
if word.upper() in lexicon:
index_value = lexicon.index(word.upper())
features[index_value] += 1
features = list(features)
featureset.append([features, classification])return featureset

Διπλωματική Εργασία 81
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

def create_feature_sets_and_labels(pos, neg, test_size=0.1):


lexicon = create_lexicon(pos, neg)
features = []
features += sample_handling('pos.txt', lexicon, [1, 0])
features += sample_handling('neg.txt', lexicon, [0, 1])
random.shuffle(features)
features = np.array(features)
testing_size = int(test_size*len(features))
train_x = list(features[:, 0][:-testing_size])
train_y = list(features[:, 1][:-testing_size])
test_x = list(features[:, 0][-testing_size:])
test_y = list(features[:, 1][-testing_size:])
return train_x, train_y, test_x, test_y

if __name__ == '__main__':
train_x, train_y, test_x, test_y =
create_feature_sets_and_labels('pos.txt', 'neg.txt')

with open('lexicon.pickle', 'wb') as f:

pickle.dump([train_x, train_y, test_x, test_y], f)

2. Νευρωνικό δίκτυο εκπαίδευσης


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
from taxinomishkeimenoy import create_feature_sets_and_labels
import tensorflow as tf
tf.reset_default_graph()
import pickle
import numpy as np

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'):

ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1 = {'ΒΑΡΗ': tf.Variable(tf.random_normal([len(train_x[0]),


ΚΟΜΒΟΙ_ΕΠΙ_1]),name='weights'),
'ΤΑΣΗ': tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_1]),name='bias')}

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)

ΕΞΟΔΟΣ = tf.matmul(drop_out, ΕΠΙΠΕΔΟ_ΕΞΟΔΟΥ['ΒΑΡΗ']) +


ΕΠΙΠΕΔΟ_ΕΞΟΔΟΥ['ΤΑΣΗ']

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'):

correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))

accuracy = tf.reduce_mean(tf.cast(correct, 'float'))

with tf.Session() as sess:

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())

for epoch in range(int(ΕΠΟΧΕΣ)):

epoch_loss = 0

i = 0

while i < len(train_x):

start = i

end = i+batch_size

batch_x = np.array(train_x[start: end])

batch_y = np.array(train_y[start: end])

_, summary, c = sess.run([optimizer, summarizer, cost],


feed_dict={x: batch_x, y: batch_y,keep_prob : 0.5})

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

print('Ολοκληρώθηκε', epoch+1, 'Εποχή εκπαίδευσης απο


Σύνολο', ΕΠΟΧΕΣ,'Εποχές', 'Απώλεια:', epoch_loss)

epoch +=1

saver.save(sess, "/home/tf2/train/model.ckpt")

print('Ακρίβεια εκπαίδευσης:', accuracy.eval({x: test_x, y: test_y,


keep_prob: 1}))

EKPAIDEYSH_NEYRONIKOY_DYKTIOY(x)

Διπλωματική Εργασία 85
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

3. Νευρωνικό δίκτυο εισαγωγής τυχαίων παραδειγμάτων


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
from taxinomishkeimenoy import create_feature_sets_and_labels
import tensorflow as tf
tf.reset_default_graph()
import pickle
import numpy as np
from tensorflow.python.ops.variables import*
from nltk.tokenize import sent_tokenize, word_tokenize
from greek_stemmer import GreekStemmer

lemmatizer =GreekStemmer()

train_x, train_y, test_x, test_y =


create_feature_sets_and_labels('pos.txt', 'neg.txt')

ΚΟΜΒΟΙ_ΕΠΙ_1 = 100
ΚΟΜΒΟΙ_ΕΠΙ_2 = 50
ΚΟΜΒΟΙ_ΕΠΙ_3 = 30

ΕΞΟΔΟΙ = 2
batch_size = 100
ΕΠΟΧΕΣ = 10

x = tf.placeholder('float')
y = tf.placeholder('float')

current_epoch= tf.Variable(1)

ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_1 = {'f_fum': ΚΟΜΒΟΙ_ΕΠΙ_1,'ΒΑΡΗ':


tf.Variable(tf.random_normal([4, ΚΟΜΒΟΙ_ΕΠΙ_1])),
'ΤΑΣΗ':
tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_1]))}
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_2 = {'f_fum': ΚΟΜΒΟΙ_ΕΠΙ_2,'ΒΑΡΗ':
tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_1, ΚΟΜΒΟΙ_ΕΠΙ_2])),
'ΤΑΣΗ':
tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_2]))}
ΚΡΥΦΟ_ΕΠΙΠΕΔΟ_3 = {'f_fum': ΚΟΜΒΟΙ_ΕΠΙ_3,'ΒΑΡΗ':
tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_2, ΚΟΜΒΟΙ_ΕΠΙ_3])),
'ΤΑΣΗ':
tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_3]))}
ΕΠΙΠΕΔΟ_ΕΞΟΔΟΥ = {'f_fum': None,'ΒΑΡΗ':
tf.Variable(tf.random_normal([ΚΟΜΒΟΙ_ΕΠΙ_3, ΕΞΟΔΟΙ])),
'ΤΑΣΗ':
tf.Variable(tf.random_normal([ΕΞΟΔΟΙ])), }

Διπλωματική Εργασία 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)

ΕΞΟΔΟΣ = tf.matmul(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)

with tf.Session() as sess:


sess.run(tf.global_variables_initializer())
saver.restore(sess,"/home/tf/tensor/train/model.ckpt")
current_words = word_tokenize(input_data.upper())
current_words = [lemmatizer.stem(i) for i in current_words]
features = np.zeros(len(lexicon))

for word in current_words:


if word.upper() in lexicon:
index_value = lexicon.index(word.upper())
# OR DO +=1, test both
features[index_value] += 1

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)

use_neural_network("ΠΑΡΑ ΠΟΛΥ ΚΑΛΟΣ")


use_neural_network("ΕΙΝΑΙ ΑΠΑΡΑΔΕΚΤΟΙ ΚΑΙ ΚΑΚΟΙ")

Διπλωματική Εργασία 87
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

ΒΙΒΛΙΟΓΡΑΦΙΑ

1.ΕΞΕΡΕΥΝΗΣΗ ΤΗΣ PYTHON ΚΑΦΕΣ ΜΑΝΟΣ Εκδόσεις Κλειδάριθμος, 2017.


2.Τεχνητά Νευρωνικά Δίκτυα. Κωνσταντίνος Διαμαντάρας. Εκδόσεις Κλειδάριθμος, 2007.
3.Τεχνητή Νοημοσύνη, μια σύγχρονη προσέγγιση. Stuart Russell & Peter Norvig. Εκδόσεις
Κλειδάριθμος, 2004.
4.ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΜΗΧΑΝΙΚΗ ΜΑΘΗΣΗ ΤΡΙΤΗ ΕΚΔΟΣΗ Simon Haykin
Εκδόσεις Παπασωτηρίου,2010.
5. Natural Language Processing with Python. Steven Bird, Ewan Klein, and Edward Loper.
OREILY 2009
6. Fundamentals of Deep Learning, Nikhil Buduma O’Reilly 2015
7. Spall, J. C. (2003). Introduction to Stochastic Search and Optimization. Wiley. ISBN 0-471-
33052-3.)
8. A logical calculus of the ideas immanent in nervous activity, McCulloch- Pitts, 1943
9. Rosenblatt, F. (1958). The perceptron: A probabilistic model for information storage and
organization in the brain. Psychological Review, 65(6), 386-408.
10. A Neural Algorithm of Artistic Style, Leon A. Gatys, Alexander S. Ecker, Matthias Bethge,
2015
11. Neural computation by concentrating information in time. Tank DW, Hopfield JJ.1987
12. Training with Noise is Equivalent to Tikhonov Regularization , Bishop, 1995
13. Adam: A Method for Stochastic Optimization Diederik P. Kingma, Jimmy Ba 2014
14. Dropout: A Simple Way to Prevent Neural Networks from Overfitting Nitish Srivastava
Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever ,Ruslan Salakhutdinov, 2014
15. Character-level Convolutional Networks for Text Classification, Xiang Zhang Junbo
Zhao Yann LeCun, 2015
16. Recurrent Neural Network for Text Classification with Multi-Task Learning, Pengfei Liu
Xipeng Qiu_ Xuanjing Huang, 2016
17. Recurrent Convolutional Neural Networks for Text Classification, Siwei Lai, Liheng Xu,
Kang Liu, Jun Zhao, 2015
18. Deep Learning using Rectified Linear Units (ReLU) , Abien Fred M. Agarap 2018

Διπλωματική Εργασία 88
Ανδρέας Κασσωτάκης ,
Βαθιά Νευρωνικά Δίκτυα και Μηχανική Μάθηση

e-book

1.Οδηγός Python Μέσω Παραδειγμάτων Δημήτρης Λεβεντεας


2. Think Python Allen Downey Μετάφραση-Επιμέλεια: Ποικιλίδης Ζαχαρίας Επιβλέπων:
Δρ. Βλάχος Βασίλειος ΤΕΙ of Larisa Σεπτέμβριος 2014
3.Εισαγωγή στον προγραμματισμό με την Python ΝΙΚΟΛΑΟΣ Α. ΑΓΓΕΛΙΔΑΚΗΣ
Ηράκλειο, Αύγουστος 2015

Διαδικτυακοί σύνδεσμοι

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

You might also like