Προσομοίωση Νευρωνικού Δικτύου στο MATLAB Κυριακίδης Ιωάννης 2013
Εισαγωγή Ένα νευρωνικό δίκτυο αποτελεί μια πολύπλοκη δομή, όπου τα βασικά σημεία που περιλαμβάνει είναι τα εξής: Πίνακες με τα βάρη των συνδέσεων Πίνακες με τα bias Συναρτήσεις μεταφοράς Διάνυσμα εισόδου Αρχιτεκτονική του δικτύου
Αρχιτεκτονική του Δικτύου Όταν αναφερόμαστε την Αρχιτεκτονική του δικτύου εννοούμε: Τον αριθμό των επιπέδων του δικτύου Τον αριθμό των νευρώνων ανά επίπεδο Τρόπο σύνδεσης των νευρώνων (πλήρη ή μη πλήρης σύνδεση)
Δομές δεδομένων Η προσομοίωση ενός νευρωνικού δικτύου στον υπολογιστή είναι μια πολύπλοκη διαδικασίας. Επειδή θα πρέπει να κρατάμε και να διαχειριζόμαστε πολλαπλά δεδομένα (όπως αυτά που είδαμε σε προηγούμενη διαφάνεια). Στο Matlab τα δεδομένα αυτά έχουν οργανωθεί με την βοήθεια των δομών δεδομένων. Έτσι υπάρχουν κάποιες ιδιότητες με τις οποίες μπορούμε να έχουμε εύκολη πρόσβαση στα δεδομένα του νευρωνικού δικτύου.
Το Neural Network Toolbox Το Matlab διαθέτει το Neural Network Toolbox, το οποίο είναι μια βιβλιοθήκη. Παρέχει συναρτήσεις και εφαρμογές για τη μοντελοποίηση πολύπλοκων μη-γραμμικών συστημάτων. Το Neural Network Toolbox υποστηρίζει: Μάθηση με επίβλεψη (Supervised Learning) Μάθηση χωρίς επίβλεψη (Unsupervised Learning)
Το Neural Network Toolbox υποστηρίζει Μάθηση με επίβλεψη (Supervised Learning) Feedforward networks Radial basis networks Dynamic networks Μάθηση χωρίς επίβλεψη (Unsupervised Learning) Self-Organizing Maps Competitive layers
Περισσότερες πληροφορίες Περισσότερες πληροφορίες σχετικά με το Neural Network Toolbox του Matlab μπορείτε να βρείτε: Στην ιστοσελίδα του Toolbox: http://www.mathworks.com/products/neuralnetwork/ Στον οδηγό χρήσης του Toolbox, τον οποίο μπορείτε να βρείτε στο eclass στον φάκελο Appendix, με όνομα User's Guide for Neural Network Toolbox.pdf
Ιδιότητες της δομής Με το Matlab μπορούμε να αρχικοποιήσουμε μια δομή δεδομένων ανάλογα το νευρωνικό δίκτυο που θέλουμε να υλοποιήσουμε. Τη δομή αυτή εξ ορισμού την ονομάζουμε net Στις σημειώσεις του εργαστηρίου μπορείτε να δείτε τις σημαντικότερες ιδιότητες της δομής αυτής. net.numinputs net.layers{i}.size net.biases{i}.learnfcn Ο αριθμός των διανυσμάτων εισόδου Ο αριθμός των νευρώνων στο i επίπεδο Η μέθοδος με την οποία γίνεται η εκπαίδευση των biases στο i επίπεδο του δικτύου.
Προσομοίωση δικτύου Χρησιμοποιώντας τις δομές θα αρχικοποιήσουμε ένα πολύ απλό δίκτυο (feedforward) που θα αποτελείται από ένα και μόνο νευρώνα. Ο νευρώνας θα χρησιμοποιεί την γραμμική συνάρτηση μεταφοράς. Υποθέτουμε ότι το δίκτυο θα έχει ως είσοδο ένα διάνυσμα με δύο χαρακτηριστικές τιμές.
Η είσοδος του δικτύου Για την προσομοίωση του νευρωνικού δικτύου θα χρησιμοποιήσουμε 4 πρότυπα εκπαίδευσης, όπου το κάθε ένα από αυτά έχει 2 χαρακτηριστικές τιμές. Τα πρότυπα αυτά τα ομαδοποιούμε σε ένα διάνυσμα με όνομα P, το οποίο είναι το παρακάτω: P = [2 4 6 8 ; 0.2 0.4 0.56 0.89]; Ποια είναι τα 4 πρότυπα εκπαίδευσης; 2 Πρότυπο1= Πρότυπο2= Πρότυπο3= Πρότυπο4= 0.2 4 0.4 6 0.56 8 0.89
Αρχικοποίηση δικτύου Για να αρχικοποιήσουμε ένα δίκτυο (feedforward) που θα χρησιμοποιεί την γραμμική συνάρτηση μεταφοράς θα γράψουμε την εντολή: Όπου: net = newlin(f, S); F = Είναι ένας πίνακας 2 στηλών. Σε κάθε γραμμή του πίνακα θα πρέπει να υπάρχει η ελάχιστη και η μέγιστη τιμή για κάθε χαρακτηριστική τιμή του διανύσματος εισόδου. S = Είναι ο αριθμός των νευρώνων στο επίπεδο εξόδου.
Αρχικοποίηση δικτύου Στη δική μας περίπτωση το S έχει τιμή: Για να υπολογίσουμε το F θα χρησιμοποιήσουμε την συνάρτηση minmax του Matlab, ως εξής: F = minmax(p); Τι τιμές περιμένουμε να έχει ο πίνακας F; F = 2.00 8.00 0.20 0.89 1
Ορισμός ιδιοτήτων Για να ορίσουμε τον πίνακα των βαρών θα χρησιμοποιήσουμε την παρακάτω εντολή: Όπου: net.iw{1,1} = [0.1 0.2]; IW θεωρούμε ότι είναι τα Input Weights, τα οποία συνδέουν το πρώτο επίπεδο με την είσοδο του διανύσματος. Επίσης ορίζουμε τη τιμή bias του νευρώνα: net.b{1} = 0.5;
Προσομοίωση Δικτύου Για την προσομοίωση του δικτύου που έχουμε αρχικοποιήσει, θα χρησιμοποιήσουμε την παρακάτω συνάρτηση: a = sim(net, P) Όπου θα μας δώσει το παρακάτω αποτέλεσμα: a = 0.7400 0.9800 1.2120 1.4780 Είναι τα αποτέλεσμα αναμενόμενα;
Κώδικας παραδείγματος P = [2 4 6 8; 0.2 0.4 0.56 0.89]; F = minmax(p); net = newlin(f, 1); net.iw{1,1} = [0.1 0.2]; net.b{1} = 0.5; a = sim(net,p) Αποτέλεσμα: a = 0.7400 0.9800 1.2120 1.4780
Απορίες - Ερωτήσεις ;
Ασκήσεις για το σπίτι Οι ασκήσεις είναι ατομικές!!! 1. Συμπιέστε όλα τα αρχεία m-file σε ένα αρχείο με όνομα: lab03_ομx_yyyy (όπου X ο αριθμός ομάδας εργαστηρίου και YYYY το ΑΜ σας) 2. Υποβάλετε το αρχείο στην αντίστοιχη άσκηση στο eclass
Δεν θα έχετε