Α.Σ.Ε.Ι ΚΡΗΣΗ ΣΜΗΜΑ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ & ΠΟΛΤΜΕΩΝ ΕΡΓΑΣΗΡΙΟ ΝΕΤΡΩΝΙΚΩΝ ΔΙΚΣΤΩΝ 3 ΝΕΤΡΩΝΙΚΑ ΔΙΚΣΤΑ - ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ Α. ΕΙΑΓΩΓΗ Ένα νευρωνικό δίκτυο αποτελεί μια πολφπλοκθ δομι θ οποία περιλαμβάνει πίνακεσ, με τα βάρθ των ςυνδζςεων μεταξφ των επιπζδων, πίνακεσ με τα b i a s, ςυναρτιςεισ μεταφοράσ διανφςματα ειςόδου, και τζλοσ τθν αρχιτεκτονικι του δικτφου. Όταν αναφερόμαςτε ςτθν αρχιτεκτονικι εννοοφμε τον αρικμό των επιπζδων του δικτφου, τον αρικμό των νευρώνων ανά επίπεδο κακώσ και τον τρόπο ςφνδεςθσ των νευρώνων (πλιρθσ ι μθ ςφνδεςθ κ. λ. π.). Από τθν κεωρία γνωρίηουμε ότι θ αρχιτεκτονικι του δικτφου επθρεάηει άμεςα και το μζγεκοσ τω ν παραμζτρων τισ οποίεσ αναφζραμε νωρίτερα (πίνακεσ βαρών, bias κ. λ. π.). Η προςομοίωςθ ενόσ νευρωνικοφ δικτφου ςτον υπολογιςτι λοιπόν αποτελεί μια πολφπλοκθ μακθματικι διεργαςία ενώ θ αρχικοποίθςθ - ςτιςιμο ενόσ νευρωνικοφ γίνεται με τθν βοικεια τθσ κεωρίασ των δομών δεδομζνων. Το Matlab μασ προςφζρει ζνα πλικοσ από ςυναρτιςεισ οι οποίεσ αρχικοποιοφν μια δομι δεδομζνων τθν οποία εξ' οριςμοφ τθν ονομάηουμε net. Η δομι αυτι ανάλογα με τθν αρχικοποίθςθ που κα κάνουμε μπορεί να προςομοιώςει οποιοδιποτε νευρωνικό δίκτυο. Στισ παρακάτω παραγράφουσ κα αναφερκοφμε ςτισ ςθμαντικότερεσ ιδιότθτεσ τθσ δομισ αυτισ, οι οποίεσ μασ επιτρζπουν να κακορίςουμε τθν αρχιτεκτονικι του δικτφου, τα δεδομζνα ειςόδου, τον πίνακα των βαρών και του bias κακώσ και τον τρόπο που αρχικοποιοφνται κ.λ.π. 1
ΙΔΙΟΤΗΤΕΣ ΔΟΜΗΣ net.numlnputs net.inputs{i}.size net.numlayers net.biasconnect net.inputconnect net.layerconnect net.outputconnect net.targetconnect net.numoutputs net.numtargets net.layers{i}.size net.outputs{i}.size net.targets{i}.size Ο αοιθμόπ ςωμ διαμσρμάςωμ ειρόδξσ. Καθξοίζεςαι ςξ μέγεθξπ ςξσ διαμύρμαςξπ ειρόδξσ, ξ αοιθμόπ ςωμ χαοακςηοιρςικώμ ςιμώμ πξσ απξςελείςαι ςξ διάμσρμα ειρόδξσ. Καθξοίζει ςξμ αοιθμό ςωμ επιπέδωμ πξσ θα έχει ςξ δίκςσξ. Καθξοίζει πξιξ από ςα επίπεδα έχξσμ b i a s. Είμαι έμαπ Ν * 1 πίμακαπ με Boolean ςιμέπ (1 ή 0), ό π ξσ Ν είμαι ξ αοιθμόπ ςωμ επιπέδωμ. Η παοξσρία ή η απξσρία b i a s ρε κάπξιξ επίπεδξ i καθξοίζεςαι απ ό ςξ n e t. b i a s C o n n e c t ( i ) = 1 ή 0 αμςίρςξιχα. Μπξοείςε μα ςξμ αοχικξπξιήρεςε ρε έμαμ Νι*Νί πίμακα με Boolean ςιμέπ (0 ή 1). Νι είμαι ξ αοιθμόπ ςωμ επιπέδωμ ςξσ δικςύξσ και Ni είμαι ξ αοιθμόπ ςωμ διαμσρμάςωμ ειρόδξσ. (net.numlnputs). Η παοξσρία ή η απ ξσρία ρύμδερηπ - βάοξσπ η ξπξία μα καςαλήγει ρςξ i επίπεδξ από ςημ j είρξδξ ποξκύπςει από ςξ net. inputconnect( i, j) =1 ή 0 αμςίρςξιχα. Αοχικξπξιείςαι ρε έμαμ N l *N l πίμακα με Boolean ςιμέπ, όπξσ NI είμαι ξ αοιθμόπ ςωμ επιπέδωμ. Η παοξσρία ή η απξσρία ρύμδερηπ - βάοξσπ η ξπξία καςαλήγει ρςξ ι επίπεδξ και νεκιμά από ςξ j επίπεδξ ποξκύπςει από ςξ net.layerconnect(i,j)=1 ή 0 αμςίρςξιχα. Αοχικξπξιείςαι ρε έμαμ 1*Ni πίμακα με Boolean ςιμέπ όπξσ Ni ξ αοιθμόπ ςωμ επιπέδωμ. Τξ 1 ή ςξ 0 σπξδεικμύει ςημ δσμαςόςηςα μα μαπ δώρει ένξδξ δικςύξσ κάπξιξ επίπεδξ ςξσ. Μπξοξύμε μα δξύμε αμ κάπξιξ επίπεδξ δίμει ένξδξ με ςημ εμςξλή net.outputconnect(i) Αοχικξπξιείςαι ρε έμαμ πίμακα 1*N l με Boolean ςιμέπ. Καθξοίζει πξια επίπεδα έχξσμ ςιμέπ t a r g e t, (επιθσμηςέπ ςιμέπ ενόδξσ). Καθξοίζει πόρα ρσμξλικά επίπεδξ δίμξσμ ένξδξ δικςύξσ. Καθξοίζει πόρα ρσμξλικά επίπεδα έχξσμ ρςόχξ (target ςιμέπ). Ο αοιθμόπ ςωμ μεσοώμωμ ρςξ i επίπεδξ Πάμςα ςξ βάζξσμε ίρξ με ςξ μέγεθξπ ςωμ μεσοώμωμ ςξσ κάθε επιπέδξσ net.layers{i}.size 2
net.biases{i}.initfcn net.biases{i}.learn net.biases{i}.learnfcn net.biases{i}.size Bias Ασςή η ιδιόςηςα καθξοίζει ςημ ρσμάοςηρη με ςημ ξπξία αοχικξπξιξύμςαι ςα biases ρε κάθε επίπεδξ. Οι επιλξγέπ είμαι ξι ακόλξσθεπ : ' i n i t c o n ',' i n i t z e r o ' : αοχικξπξίηρη όλωμ ςωμ biases ρςξ 0, 'ra nds' : ςσχαίεπ επιλξγέπ αοιθμώμ Βάζξσμε 1 αμ θέλξσμε ςα biases ςξσ i επιπέδξσ μα ρσμμεςέχξσμ ρςημ εκπαίδεσρη ςξσ δικςύξσ, 0 ρε άλλη πεοίπςωρη. Η μέθξδξπ με ςημ ξπξία γίμεςαι η εκπαίδεσρη ςωμ biases ρε εκείμξ ςξ επίπεδξ ςξσ δικςύξσ. =net.layers{i}.size: Καθξοίζει ςξ μέγεθξπ ςξσ bias διαμύρμαςξπ ρε κάθε επίπεδξ net.inputweights {i,j}.initfcn net.inputweights {i,j}.learn Weights Καθξοίζει ςξμ ςοόπξ με ςξμ ξπξίξ αοχικξπξιξύμςαι ςα βάοη ςα ξπξία καςαλήγξσμ ρςξ i επίπεδξ από ςημ j είρξδξ. Έχει ςιμή 0 ή 1 και καθξοίζει αμ ςα ρσγκεκοιμέμα βάοη μεςέχξσμ ή όχι ρςημ εκπαίδεσρη ςξσ δικςύξσ. Οι παραπάνω ιδιότθτεσ αποτελοφν μζροσ και μόνο του ςυνόλου των ιδιοτιτων που ζχει κακορίςει το Matlab προκειμζνου να αρχικοποιιςει τθν δομι ενόσ δικτφου, κακώσ και να κακορίςει τον τρόπο με τον οποίο κα εκπαιδευτεί. Κάποιεσ ιδιότθτεσ τισ οποίεσ δεν αναφζρουμε παραπάνω κα τισ χρθςιμοποιιςουμε ςτθν καταςκευι ςυγκεκριμζνου τφπου νευρωνικοφ δικτφου και κα αναφερκοφμε αναλυτικότερα ςε αυτζσ. Γ. Προσομοίωση δικτφου Χρθςιμοποιώντασ τισ δομζσ δεδομζνων για ζνα δίκτυο κα αρχικοποιιςουμε ζνα πολφ απλό δίκτυο που αποτελείται από ζνα και μόνο νευρώνα. Υποκζτουμε ότι το δίκτυο ζχει ωσ είςοδο ζνα και μόνο διάνυςμα με δφο χαρακτθριςτικζσ τιμζσ. 3
P2 P1 a bias Γραμμική ζσνάρηηζη a=purelin(w p+bias) Σχήμα 1: Νεσρωνικό δίκησο με έναν νεσρώνα και γραμμική ζσνάρηηζη μεηαθοράς Για να αρχικοποιιςουμε το παραπάνω δίκτυο γράφουμε τθν εντολι: net = newlin(f,1); Η ςυνάρτθςθ newlin(f, r) δθμιουργεί ζνα επίπεδο νευρώνων πο υ εφαρμόηουν τθν γραμμικι ςυνάρτθςθ μεταφοράσ. Αν υποκζςουμε ότι τα διανφςματα που ειςζρχονται ςτον νευρώνα ζχουν κ χαρακτθριςτικζσ τιμζσ τότε το F είναι πίνακασ κ*2. Στθν κάκε γραμμι του πίνακα υπάρχει θ ελάχιςτθ και θ μζγιςτθ τιμι τθσ κάκε χαρακτθριςτικισ τιμισ όλων των διανυςμάτων ειςόδου. Όπου r, ο αρικμόσ των νευρώνων που ζχουμε ςτο επίπεδο αυτό. Για να ορίςουμε τον πίνακα των βαρών θ εντολι που κα χρθςιμοποιιςουμε είναι θ: net.iw{1,1} = [0.1 0.2]; όπου IW κεωροφμε ότι είναι τα Input Weights τα οποία ςυνδζουν το πρώτο επίπεδο με τθν είςοδο των διανυςμάτων. Επίςθσ κζτουμε net.b{1} = 0.5; ώςτε να αρχικοποιιςουμε το bias ςτο νευρώνα ςτθν τιμι αυτι. 4
Υποκζτουμε επίςθσ ότι ςτον νευρώνα δίνουμε ωσ είςοδο τα διανφςματα p1, p 2, p3, p4 το κακζνα από αυτά ζχει 2 χαρακτθριςτικζσ τιμζσ. Τα διανφςματα αυτά ομαδοποιοφνται ςε ζνα διάνυςμα P το οποίο παρουςιάηεται παρακάτω: P = [2 4 6 8; 0. 2 0.4 0.56 0. 8 9]; Ο πίνακασ F προκφπτει πολφ απλά από τθν ςυνάρτθςθ: F=minmax(P); Επίςθσ μποροφμε να προςομοιώςουμε τθν λειτουργία του δικτφου με τθν ςυνάρτθςθ: a = sim(net,p) Τα αποτελζςματα τα οποία κα δοφμε ωσ ζξοδο του δικτφου ςε αυτι τθν περίπτωςθ κα είναι: A = 5.3000 10.1000 14.7400 20.0600 5