Δίκτυα Συναρτήσεων Βάσης Ακτινικού Τύπου Radial Basis Functions (RBF) Τα δίκτυα RBF μοιάζουν στη λειτουργία τους με τα ανταγωνιστικά δίκτυα. Έχουν πολλές εφαρμογές και μεγάλο ενδιαφέρον, εξ ίσου με τα MLP. Έχουν συναρτήσεις ενεργοποίησης ακτινικού τύπου. Η συνάρτηση f x είναι ακτινικού τύπου, αν υπάρχει κάποιο διάνυσμα c (κέντρο) και η τιμή της f x εξαρτάται από την απόσταση του x από το κέντρο: f x = f x c Η γενική μορφή αυτών των συναρτήσεων είναι: c d = x c x f x = φ x c T R 1 x c
f x = φ x c T R 1 x c Όπου φ είναι η συνάρτηση που χρησιμοποιείται (Gauss, Πολυτετραγωνική, κλπ), c είναι το κέντρο και R το μέτρο. Ο όρος x c T R 1 x c είναι η απόσταση μεταξύ της εισόδου x και του κέντρου c με μέτρο το R. Υπάρχουν διάφορες συναρτήσεις που χρησιμοποιούνται: Η του Gauss: φ z = e z Το δίκτυο RBF Η πολυτετραγωνική: φ z = 1 + z 1 2 Η αντίστροφη πολυτετραγωνική: φ z = 1 + z 1 2 Η του Gauchy: φ z = 1 + z 1
Το δίκτυο RBF Πολύ συχνά το μέτρο είναι η Ευκλείδεια απόσταση (δηλαδή R = r 2 I) και η σχέση απλοποιείται στην: f x = φ x c T x c r 2 Και με περεταίρω απλοποίηση (όταν έχουμε μονοδιάστατη είσοδο) θα γίνει: f x = φ x c 2 Η ανωτέρω σχέση, για c = 0 για r = 1 θα δώσει τις μορφές: r 2
Το δίκτυο RBF Πολυτετραγωνική Αντίστροφη Πολυτετραγωνική Gauchy Gaussian
Το δίκτυο RBF Γενικεύοντας: Συνάρτηση Gauss f x = e x c 2 σ 2
Το δίκτυο RBF Γενικεύοντας: Πολυτετραγωνική Συνάρτηση f x = x c 2 + σ 2
Το δίκτυο RBF Γενικεύοντας: Συνάρτηση Cauchy f x = x c 2 + σ 2 1 σ
Η πιο συνήθης μορφή f x είναι αυτή της κατανομής Gauss: x c 2 f x = e σ 2 Ο συντελεστής σ καθορίζει το πλάτος της καμπύλης και το c το κέντρο της. Το δίκτυο RBF c=0 σ=2 c=-1 σ=0,5 c=1 σ=1
Το δίκτυο RBF Τα δίκτυα RBF έχουν ένα στρώμα με νευρώνες που έχουν συνάρτηση ενεργοποίησης ακτινικού τύπου. Έχουν συνήθως μόνο δύο στρώματα, κι αυτό γιατί δεν υπάρχει ικανοποιητικός αλγόριθμος για την εκπαίδευση περισσότερων στρωμάτων. y 1 y 2 y m + +.... +.... + + +........ x 1 x 2 x 3 x n +
Ανάκληση στο δίκτυο RBF Είσοδοι: Διάνυσμα εισόδου x = x 1, x 2,. x T n Πλήθος νευρώνων: Στρώμα εισόδου= n Κρυφό στρώμα = K Στρώμα εξόδου= m Κάθε νευρώνας i έχει δικό του κέντρο c i και εύρος συνάρτησης σ i Έξοδοι: y 1, y 2,. x m Για κάθε κρυφό νευρώνα i = 1,, Κ { a i = f x c i, σ i } Για κάθε νευρώνα εξόδου i = 1,, m { } K y i = j=1 w ij a j + w i0 Όπως γίνεται και στο MLP και είναι ακόμα πιο απλή
Καθώς τα δίκτυα RBF είναι ανομοιογενή, έχοντας στο κρυφό στρώμα νευρώνες με συνάρτηση ενεργοποίησης ακτινικού τύπου ενώ στο στρώμα εξόδου γραμμικού τύπου, η εκπαίδευσή τους γίνεται διαφορετικά ανά στρώμα. Εκπαιδεύονται πρώτα οι παράμετροι των νευρώνων ακτινικού τύπου, δηλαδή τα κέντρα c i και τα πλάτη σ i (i = 1,, Κ) και κατόπιν εκπαιδεύονται τα συναπτικά βάρη w ij των γραμμικών νευρώνων εξόδου, κατά τα γνωστά. Η εκπαίδευση των νευρώνων του κρυφού στρώματος RBF μπορεί να γίνει με διαφορετικούς τρόπους, ανάλογα με την ιδιομορφία και τις απαιτήσεις σε ακρίβεια και χρόνο. Εκπαίδευση Δικτύων RBF
Εκπαίδευση Δικτύων RBF A. Κάθε πρότυπο κι ένα κέντρο Κάθε διάνυσμα εισόδου x i, i = 1,., P, αποτελεί κι ένα κέντρο: c i = x i K = P i = 1,., K P κέντρα συνολικά: Μέθοδος «ακριβή», με πάρα πολλούς κρυφούς νευρώνες (P), αλλά και πολύ γρήγορη εκμάθηση. Ενδείκνυται, η τιμή τους εύρους σ i (για την συνάρτηση Gauss) να είναι: σ 1 = = σ Κ = σ = D 2P D: Απόσταση μεταξύ των πιο απομακρυσμένων κέντρων Έτσι ώστε οι Γκαουσιανές καμπάνες να είναι «νορμάλ» (ούτε πολύ «μυτερές», ούτε πολύ «επίπεδες»).
Εκπαίδευση Δικτύων RBF B. Τυχαία επιλογή προτύπων για κέντρα Κάνουμε τυχαία επιλογή από τα πρότυπα εισόδου για να γίνουν κέντρα, ή περιορίζουμε τον αρχικό τους αριθμό σε ένα ποσοστό, π.χ. (K=10% του P). Η Μέθοδος έχει απώλεια πληροφορίας: Σε περιοχές πυκνών προτύπων επιλέγουμε πολλά πρότυπα και η απώλεια περιορίζεται, ενώ σε αραιές περιοχές επιλέγουμε λίγα ή καθόλου γιατί η απώλεια είναι άνευ σημασίας.
Εκπαίδευση Δικτύων RBF C. Ομαδοποίηση (clustering) Ομαδοποίηση K-μέσων Εάν διαθέτουμε P πρότυπα: x 1, x 2,, x P που ανήκουν σε K κλάσεις: X 1, X 2,, X K, η μέθοδος Κ-μέσων αναζητά ένα διάνυσμα αντιπρόσωπο c i για κάθε κλάση, ξεκινώντας από τυχαία διανύσματα και προσπαθώντας να καλύψει τις απαιτήσεις: 1. Για κάθε i = 1,., K, η κλάση X i αποτελείται από τα πρότυπα x p τα οποία βρίσκονται πιο κοντά στο διάνυσμα c i σε σχέση με όλα τα άλλα διανύσματα c i, j i: x p c i = min x p c j j 2. Για κάθε i = 1,., K, το διάνυσμα c i είναι ο μέσος όρος των προτύπων που ανήκουν στην κλάση X i : c i = 1 X i p X i x p Με X i, το πλήθος των προτύπων της κλάσης και c i το κέντρο της.
Ομαδοποίηση K-μέσων Εκπαίδευση Δικτύων RBF
Εκπαίδευση Δικτύων RBF Αλγόριθμος Ομαδοποίησης K-μέσων Είσοδος: P πρότυπα: x 1, x 2,, x P. Πλήθος κέντρων K. Έξοδος: K κέντρα c 1, c 2,, c K Αρχικοποίησε τα c 1, c 2,, c K σε τυχαίες τιμές. Επανέλαβε { Για κάθε πρότυπο p = 1,, P { Βρες το κοντινότερο κέντρο c i στο x P label(p) i } Για κάθε κέντρο k = 1,, K { c k μέσος όρος των x P τα οποία ανήκουν στην κλάση k, δηλαδή label(p) = k } } Μέχρι να μην υπάρξει καμία αλλαγή στα κέντρα c 1, c 2,, c K
Εκπαίδευση Δικτύων RBF Αλγόριθμος Ομαδοποίησης K-μέσων Ο αλγόριθμος εναλλάσσεται, μέχρι να υπάρξει σύγκλιση, μεταξύ του υπολογισμού των μελών των κλάσεων και του Μ.Ο. κάθε κλάσης, κατά την διάρκεια των οποίων μπορεί να έχουμε αλλαγές και στα μέλη των κλάσεων και στους Μ.Ο. τους. Οι αλλαγές αυτές σταδιακά μειώνονται, όσο προχωράμε προς την σύγκλιση, και έχουμε παγίωση της κατάστασης.
Εκπαίδευση Δικτύων RBF D. Εκπαίδευση με επίβλεψη Οι Poggio & Girosi χρησιμοποιώντας την κατάβαση δυναμικού, πρότειναν μια παραλλαγή της μεθόδου Backpropagation για την βελτίωση της εκμάθησης των RBF που την ονόμασαν Generalized RBF (GRBF). Η μέθοδος αυτή δοκιμάστηκε στο πρόβλημα της μετατροπής κειμένου σε ομιλία (NETtalk), όπου το δίκτυο πρέπει να μάθει την προφορά αγγλικών λέξεων, μελετώντας ένα λεξικό με σωστές προφορές. Η χρήση του GRBF βελτίωσε κατά 17% την επίδοση του δικτύου σε σχέση με τον αλγόριθμο K-μέσων.
Εκπαίδευση Δικτύων RBF Εκπαίδευση του εξωτερικού στρώματος Χρήση του κανόνα δέλτα (delta-rule) όπως στο ADALINE. y 1 y 2 y m + +.... + a 1 a p.... Αφού έχουμε εκπαιδεύσει το κρυφό στρώμα, γνωρίζουμε τα a 1, a 2,, a K (για κάθε πρότυπο εισόδου x = x 1, x 2,. x n T ) τα οποία αποτελούν τις εισόδους του στρώματος εξόδου:
Εκπαίδευση του εξωτερικού στρώματος Οι έξοδοι θα είναι: Εκπαίδευση Δικτύων RBF y i = K j=1 w ij a j + w i0 Δηλαδή έχουμε πολλά δίκτυα ADALINE (ένα για κάθε έξοδο). Στην τιμή y p i για το πρότυπο εισόδου: a p = a p p 1,., a T K αντιστοιχεί η τιμή στόχου d i p. Ο κανόνας εκπαίδευσης θα είναι: w ij p+1 = w ij p + β d i p y i p a i p, j = 1,, K, i = 1,, m w i0 p+1 = w i0 p + β d i p y i p a i p, i = 1,, m
Δυνατότητες Δικτύων RBF Όπως τα MLP, έτσι και τα RBF μπορούν να αποτελέσουν καθολικό προσεγγιστή (Θεώρημα Park & Sandberg 1991). Οι συναρτήσεις ακτινικού τύπου είναι βάση του χώρου των συνεχών συναρτήσεων και προσεγγίζουν οποιαδήποτε συνεχή συνάρτηση αρκεί να έχουν ικανό πλήθος κρυφών νευρώνων.
RBF: μόνο 2 στρώματα. δεν υπάρχει ικανοποιητικός κανόνας εκπαίδευσης για 3, 4, κλπ στρώματα. RBF: αυτο-οργανούμενο κρυφό στρώμα. MLP: μοιάζει περισσότερο με τους νευρώνες. Ομοιότητες/Διαφορές με MLP RBF, MLP: εκπαίδευση με επίβλεψη πραγματικούς Και τα δύο είναι μη γραμμικά δίκτυα με προσωτροφοδότηση (feed-forward). Χρησιμοποιούνται σε παρόμοιες εφαρμογές. Υπάρχει πάντα ένα RBF ικανό να μιμηθεί με ακρίβεια ένα MLP και αντίστροφα.
Ομοιότητες/Διαφορές με MLP Ένα κρυφό στρώμα. RBFN Οι κρυφοί νευρώνες (βασικές συναρτήσεις) λειτουργούν πολύ διαφορετικά ο ένας από τον άλλο και έχουν διαφορετικούς σκοπούς σε σχέση με τους νευρώνες εξόδου. Μέτρο στην συνάρτηση ενεργοποίησης για κάθε κρυφή μονάδα είναι η απόσταση μεταξύ εισόδου και βαρών (κέντρα RBF). Συνήθως εκπαιδεύεται ένα στρώμα κάθε φορά, και το πρώτο στρώμα χωρίς επίβλεψη. Χρησιμοποιεί στοχευμένες μη γραμμικότητες (Gaussians) στο κρυφό στρώμα για να χτίσει τοπικές προσεγγίσεις. MLP Περισσότερα κρυφά στρώματα. Οι υπολογιστικοί νευρώνες στα διάφορα στρώματα, έχουν κοινό μοντέλο νευρώνα, αλλά όχι απαραίτητα και την ίδια συνάρτηση ενεργοποίησης. Μέτρο στην συνάρτηση ενεργοποίησης για κάθε κρυφή μονάδα είναι το εσωτερικό γινόμενο μεταξύ εισόδου και βαρών. Συνήθως εκπαιδεύεται με επίβλεψη και με τον ίδιο γενικευμένο αλγόριθμο. Χτίζει γενικευμένες προσεγγίσεις για μη γραμμικές αντιστοιχίσεις εισόδων-εξόδων με κατανεμημένες κρυφές αναπαραστάσεις. Χρειάζεται μικρότερο αριθμό παραμέτρων
Ομοιότητες/Διαφορές με MLP Και τα δύο παγκόσμιοι προσεγγιστές RBF προσέγγιση MLP Ισοδυναμία μεταξύ δικτύων RBF και μηχανών ασαφούς λογικής (fuzzy logic). RBF ή MLP? Κριτήριο = ποιότητα προσέγγισης πεπερασμένο πλήθος νευρώνων συγκεκριμένα δεδομένα
Ομοιότητες/Διαφορές με MLP MLP RBF
Ομοιότητες/Διαφορές με MLP MLP RBF
Μοντελοποίηση χρονοσειρών Χρονοσειρά είναι ακολουθία τιμών που παράγονται: Συνεχής χρόνος: y t = F x t Εφαρμογές t R Διακριτός χρόνος: y k = F x k k = 0,1,2,.. Διαφορική Εξίσωση: dy = F y dt Ζητούμενο: Εύρεση του μοντέλου F από τα δεδομένα της χρονοσειράς, ώστε να μπορεί να προβλεφθεί η εξέλιξή της. Οι τιμές από την δειγματοληψία της χρονοσειράς: y 0, y 1, y 2, τροφοδοτούν το νευρωνικό δίκτυο.
Εφαρμογές Μοντέλο παραγωγής λευκών αιμοσφαιρίων Mackey- Glass: dy t y t d = by t + a dt 1 + y t d 10 Ζητούμενο: Εκτίμηση παραμέτρων a, b, d Moody & Darken εκτίμηση παραμέτρων χαοτικής χρονοσειράς Mackey-Glass RBF: 27 φορές περισσότερα δεδομένα από το MLP για ίδιο επίπεδο απόδοσης RBF: 16 φορές πιο γρήγορο από το BP
Ταξινόμηση φωνημάτων (ταξινόμηση δέκα ήχων φωνηέντων) 338 φωνήματα για εκπαίδευση 333 φωνήματα για έλεγχο Μέθοδος k-μέσων 100 κρυφοί Γκαουσσιανοί νευρώνες Σφάλμα = 18% στα πρότυπα ελέγχου Εφαρμογές Τιμολόγηση Χρηματιστηριακών παραγώγων (option pricing) Εξισορρόπηση τηλεπικοινωνιακού καναλιού (channel equalization)
Πραγματοποίηση των δικτύων RBF στο Matlab a = radbas w p b = radbas n = e n2 Η είσοδος n στο RBF, είναι η απόσταση μεταξύ του ανύσματος των βαρών w και του ανύσματος της εισόδου p, επί την πόλωση (bias) b, με την οποία ρυθμίζουμε την ευαισθησία του.
Πραγματοποίηση των δικτύων RBF στο Matlab Μορφή Gaussian Η a παίρνει τιμές από 1 μέχρι 0, εάν η διαφορά n οδεύει από το 0 στο max. Ο νευρώνας RBF λειτουργεί ως ανιχνευτής, δίνοντας 1 όταν η είσοδος p είναι ίδια με το άνυσμα βαρών w. a = radbas w p b = radbas n = e n2
Πραγματοποίηση των δικτύων RBF στο Matlab To dist παίρνει το άνυσμα εισόδου p και την μήτρα βαρών ΙW 1,1 και δίνει ένα άνυσμα με S 1 στοιχεία, τα οποία είναι οι αποστάσεις μεταξύ του ανύσματος εισόδου και των ανυσμάτων iιw 1,1 που ορίζονται από τις γραμμές της μήτρας των βαρών εισόδου.
Πραγματοποίηση των δικτύων RBF στο Matlab Το άνυσμα της πόλωσης b 1 (με το οποίο ρυθμίζεται η ευαισθησία) και το dist πολλαπλασιάζονται, στοιχείο προς στοιχείο, με την πράξη (.*) του MATLAB.
Πραγματοποίηση των δικτύων RBF στο Matlab Όταν ένα άνυσμα εισόδου p παρουσιάζεται στην είσοδο, κάθε νευρώνας RBF θα δώσει έξοδο, ανάλογη με το πόσο κοντά είναι η τιμή του ανύσματος εισόδου με την τιμή του ανύσματος βαρών του νευρώνα.
Πραγματοποίηση των δικτύων RBF στο Matlab Έτσι οι νευρώνες RBF, με άνυσμα βαρών που διαφέρει από το άνυσμα εισόδου p, θα έχουν εξόδους περίπου ίσες με το μηδέν και η επίδρασή τους στους γραμμικούς νευρώνες εξόδου θα είναι μηδαμινή.
Πραγματοποίηση των δικτύων RBF στο Matlab Αντιθέτως, αν το άνυσμα βαρών δεν διαφέρει από το άνυσμα εισόδου p, τότε θα έχουν εξόδους σχεδόν στο 1 και οι έξοδοι αυτές θα περνούν αυτούσιες τις τιμές τους στους γραμμικούς νευρώνες εξόδου.
Πραγματοποίηση των δικτύων RBF στο Matlab Δηλαδή αν μόνο ένας νευρώνας RBF έχει έξοδο 1 και όλοι οι άλλοι 0 (ή σχεδόν 0), η έξοδος του γραμμικού στρώματος θα είναι το βάρος εξόδου του ενεργού νευρώνα RBF. Αυτό είναι μια ακραία περίπτωση. Στην πράξη, ενεργοποιούνται περισσότεροι του ενός νευρώνες, σε διαφορετικό βαθμό ο καθένας.
Πραγματοποίηση των δικτύων RBF στο Matlab Εάν το άνυσμα βαρών διαφέρει από το άνυσμα εισόδου p, σε απόσταση = spread, η σταθμισμένη είσοδός του θα είναι = spread, η είσοδος n = sqrt( log(.5)) (ή 0.8326), και η έξοδος a= 0.5.
Πραγματοποίηση των δικτύων RBF στο Matlab Η πραγματοποίηση των δικτύων ΝΝ RBF στο Matlab γίνεται με τις εντολές newrbe και newrb. net = newrbe(p,t,spread) Η εντολή newrbe δέχεται την μήτρα των ανυσμάτων εισόδου P και τα ανύσματα στόχους Τ, καθώς και την παράμετρο SPREAD (για την συνάρτηση RBF) και δημιουργεί το ΝΝ RBF με τα βάρη και τις πολώσεις έτσι ώστε όταν οι είσοδοι είναι Ρ οι έξοδοι να είναι Τ. Δημιουργεί τόσους νευρώνες RBF, όσα ανύσματα έχει η μήτρα εισόδου Ρ. Δηλαδή, κάθε νευρώνας στην γραμμή RBF λειτουργεί σαν ανιχνευτής ενός διαφορετικού ανύσματος εισόδου. Αν έχουμε π.χ. Q ανύσματα εισόδου, θα έχουμε και Q νευρώνες RBF.
Πραγματοποίηση των δικτύων RBF στο Matlab Έτσι με την εντολή newrbe δημιουργείται ένα ΝΝ που δίνει μηδενικό σφάλμα για τα ανύσματα εκμάθησης. Μόνη προϋπόθεση: spread αρκετά μεγάλο, ώστε οι νευρώνες RBF να επικαλύπτονται αρκετά και πολλοί νευρώνες RBF να έχουν υψηλές εξόδους, ανά πάσα στιγμή. Αυτό καθιστά τη λειτουργία του δικτύου ομαλότερη και έχει ως αποτέλεσμα την καλύτερη γενίκευση για νέα ανύσματα εισόδου που βρίσκονται μεταξύ των διανυσμάτων εισόδου που χρησιμοποιούνται στο σχεδιασμό. (Ωστόσο, το spread δεν πρέπει να είναι τόσο μεγάλο, γιατί τότε κάθε νευρώνας θα ανταποκρίνεται σχεδόν στην ίδια και μεγάλη περιοχή του χώρου εισόδου).
Πραγματοποίηση των δικτύων RBF στο Matlab Το μειονέκτημα της εντολής newrbe είναι ότι δημιουργεί ένα ΝΝ με τόσους κρυφούς νευρώνες, όσα και τα ανύσματα εισόδου. Αυτό δημιουργεί πρόβλημα μεγέθους, όταν χρειάζονται πολλά δεδομένα εισόδου για την σωστή επίλυση του προβλήματος, πράγμα που είναι σύνηθες. Τα ΝΝ RBF που πραγματοποιούνται με την εντολή newrbe λέγονται και Exact Radial Basis Function Networks (Exact RBFN).
Πραγματοποίηση των δικτύων RBF στο Matlab Η εντολή newrb δημιουργεί σταδιακά τους νευρώνες RBF, έναν κάθε φορά, ανάλογα με το αν έχουμε φτάσει (ή όχι) στην επιθυμητή τιμή του σφάλματος SSE, ή στον μέγιστο αριθμό νευρώνων. net = newrb(p,t,goal,spread) Η παράμετρος GOAL ορίζει τον στόχο για το σφάλμα SSE. Σε κάθε επανάληψη, το άνυσμα εισόδου που οδηγεί στην μεγαλύτερη μείωση του σφάλματος χρησιμοποιείται για να δημιουργηθεί ένας νευρώνας RBF. Εάν η τιμή σφάλματος έχει επιτευχθεί σταματάμε. Εάν όχι, η διαδικασία επαναλαμβάνεται προσθέτοντας νέο νευρώνα, κ.λ.π., μέχρι να επιτευχθεί η τιμή του σφάλματος ή ο μέγιστος αριθμός νευρώνων.
Παράδειγμα: Προσέγγιση συνάρτησης (Radial Basis Approximation) Να προσεγγισθεί μία συνάρτηση η οποία ορίζεται από τα εξής δεδομένα (σημεία): close all, clear all, clc, format compact X = -1:.1:1; T = [-.9602 -.5770 -.0729.3771.6405.6600.4609....1336 -.2013 -.4344 -.5000 -.3930 -.1647.0988....3072.3960.3449.1816 -.0312 -.2189 -.3201]; figure; plot(x,t,'+'); title('training Vectors'); xlabel('input Vector P'); ylabel('target Vector T');
Παράδειγμα: Προσέγγιση συνάρτησης
Παράδειγμα: Προσέγγιση συνάρτησης To NN RBF με το οποίο θα γίνει η προσέγγιση της συνάρτησης θα έχει την εξής συνάρτηση (Gaussian): x = -3:.1:3; a = radbas(x); figure; plot(x,a) title('radial Basis Transfer Function'); xlabel('input p'); ylabel('output a');
Παράδειγμα: Προσέγγιση συνάρτησης
Παράδειγμα: Προσέγγιση συνάρτησης Τα βάρη (weights) και οι πολώσεις (bias) κάθε νευρώνα στο κρυφό στρώμα του NN RBF, ορίζουν την θέση και το εύρος της συνάρτησης RBF. Κάθε νευρώνας στο στρώμα εξόδου, έχει γραμμική συνάρτηση απόκρισης η οποία δημιουργείται από το σταθμισμένο άθροισμα (weighted sum) των αποκρίσεων των νευρώνων RBF. Με τις σωστές τιμές για τα βάρη και τις πολώσεις, για κάθε στρώμα, και αρκετούς νευρώνες RBF στο κρυφό στρώμα, το ΝΝ RBF μπορεί να προσεγγίσει την συνάρτηση με όση ακρίβεια επιθυμούμε. Δίδονται π.χ., τρεις διαφορετικές συναρτήσεις RBF οι οποίες (σε συνδυασμό) δημιουργούν μια 4 η.
Παράδειγμα: Προσέγγιση συνάρτησης Με τις RBF αποκρίσεις των επί μέρους νευρώνων, γίνεται η προσέγγιση (fitting) της συνάρτησης.
Παράδειγμα: Προσέγγιση συνάρτησης a2 = radbas(x-1.5); a3 = radbas(x+2); a4 = a + a2*1 + a3*0.5; figure; plot(x,a,'b-',x,a2,'b--',x,a3,'b--',x,a4,'m-') title('weighted Sum of Radial Basis Transfer Functions'); xlabel('input p'); ylabel('output a');
Παράδειγμα: Προσέγγιση συνάρτησης
P T Παράδειγμα: Προσέγγιση συνάρτησης Με την εντολή newrb δημιουργούμε το ΝΝ RBF το οποίο θα προσεγγίσει την συνάρτηση που ορίζεται από τα σημεία Ρ και Τ. Η εντολή, εκτός από τα Ρ και Τ δέχεται ακόμα μέχρι 4 παραμέτρους: net = newrb(p,t,goal,spread,mn,df) R-by-Q matrix of Q input vectors S-by-Q matrix of Q target class vectors goal Mean squared error goal (default = 0.0) spread Spread of radial basis functions (default = 1.0) MN Maximum number of neurons (default is Q) DF Number of neurons to add between displays (default = 25)
Παράδειγμα: Προσέγγιση συνάρτησης eg = 0.02; % sum-squared error goal sc = 1; % spread constant K = 6; % choose max number of neurons Ki = 1; % number of neurons to add between displays net = newrb(x,t,eg,sc,k,ki); view(net)
Παράδειγμα: Προσέγγιση συνάρτησης
Παράδειγμα: Προσέγγιση συνάρτησης NEWRB, neurons = 0, MSE = 0.176192 NEWRB, neurons = 2, MSE = 0.160368 NEWRB, neurons = 3, MSE = 0.128338 NEWRB, neurons = 4, MSE = 0.0275185 NEWRB, neurons = 5, MSE = 0.0264878 NEWRB, neurons = 6, MSE = 0.00046188
Παράδειγμα: Προσέγγιση συνάρτησης Για να δούμε την επίδοση του ΝΝ πρέπει να τυπώσουμε μαζί τα αρχικά δεδομένα (σημεία), με την απόκριση του ΝΝ στην ίδια περιοχή. figure; plot(x,t,'+'); xlabel('input'); X = -1:.01:1.1; Y = net(x); hold on; plot(x,y); hold off; legend({'target','output'})
Παράδειγμα: Προσέγγιση συνάρτησης
Παράδειγμα: Προσέγγιση συνάρτησης Για να δούμε την επίδραση του spread στην ικανότητα του ΝΝ, θα δοκιμάσουμε με μια χαμηλή τιμή του. Χαράζουμε ξανά τα σημεία: P = -1:.1:1; T = [-.9602 -.5770 -.0729.3771.6405.6600.4609....1336 -.2013 -.4344 -.5000 -.3930 -.1647.0988....3072.3960.3449.1816 -.0312 -.2189 -.3201]; plot(x,t,'+'); title('training Vectors'); xlabel('input Vector P'); ylabel('target Vector T');
Παράδειγμα: Προσέγγιση συνάρτησης
Παράδειγμα: Προσέγγιση συνάρτησης eg = 0.02; % sum-squared error goal sc =.01; % spread constant net = newrb(p,t,eg,sc); NEWRB, neurons = 0, MSE = 0.176192 Για να δούμε πόσο ομαλά το ΝΝ ακολουθεί την συνάρτηση θα ορίσουμε ένα άλλο σύνολο σημείων στην είσοδο και θα δούμε την απόκρισή του ΝΝ σ αυτά τα νέα σημεία. Από την απόκριση φαίνεται η κακή του επίδοση, λόγω της μικρής τιμής του spead: X = -1:.01:1; Y = net(x); hold on; plot(x,y); hold off;
Παράδειγμα: Προσέγγιση συνάρτησης spead = 0.01
Παράδειγμα: Προσέγγιση συνάρτησης Εάν επαναλάβουμε την όλη διαδικασία για spead = 0.1
Παράδειγμα: Προσέγγιση συνάρτησης 10 100 500 Για διαφορετικές τιμές του spead
Παράδειγμα: Προσέγγιση συνάρτησης Εάν χρησιμοποιήσουμε την εντολή newrbe το script θα είναι ελαφρώς διαφοροποιημένο στο σημείο εκείνο: sc = 1; % spread constant net = newrbe(x,t,sc); Θα πάρουμε τα εξής αποτελέσματα:
Παράδειγμα: Προσέγγιση συνάρτησης Παρατηρούμε πως με την εντολή newrbe η απόκριση του ΝΝ είναι καλύτερη. Βέβαια το δίκτυο τώρα έχει 21 νευρώνες RBF ενώ πρώτα είχε 6.
Παράδειγμα: Το πρόβλημα XOR close all, clear all, clc, format compact % number of samples of each cluster K = 100; % offset of clusters q =.6; % define 2 groups of input data A = [rand(1,k)-q rand(1,k)+q; rand(1,k)+q rand(1,k)-q]; B = [rand(1,k)+q rand(1,k)-q; rand(1,k)+q rand(1,k)-q]; % plot data plot(a(1,:),a(2,:),'k+',b(1,:),b(2,:),'b*') grid on hold on Δημιουργούμε 2 κλάσεις με 200 σημεία η κάθε μία (η μία με + και η άλλη με *)
Παράδειγμα: Το πρόβλημα XOR
Παράδειγμα: Το πρόβλημα XOR Αντιστοιχούμε το -1 και το 1 ως επιθυμητές εξόδους για την κάθε κλάση και ορίζουμε το ΝΝ. % coding (+1/-1) for 2-class XOR problem a = -1; b = 1; % define inputs (combine samples from all four classes) P = [A B]; % define targets T = [repmat(a,1,length(a)) repmat(b,1,length(b))]; % choose a spread constant spread = 1; % create a neural network net = newrbe(p,t,spread); % view network view(net)
Παράδειγμα: Το πρόβλημα XOR Warning: Rank deficient, rank = 124, tol = 8.881784e-14. Όσα και τα δεδομένα εισόδου
% simulate a network on training data Y = net(p); % calculate [%] of correct classifications correct = 100 * length(find(t.*y > 0)) / length(t); fprintf('\nspread = %.2f\n',spread) fprintf('num of neurons = %d\n',net.layers{1}.size) fprintf('correct class = %.2f %%\n',correct) % plot targets and network response figure; plot(t') hold on grid on plot(y','r') ylim([-2 2]) set(gca,'ytick',[-2 0 2]) legend('targets','network response') xlabel('sample No.') Παράδειγμα: Το πρόβλημα XOR Το T.*Y>0 θα είναι θετικό [(1).(1) ή (-1).(-1)] μόνον όταν δεν έχω σφάλμα ταξινόμησης, δηλαδή μετράει τις σωστές ταξινομήσεις.
Παράδειγμα: Το πρόβλημα XOR Spread = 1.00 Num of neurons = 400 Correct class = 100.00 %
% generate a grid span = -1:.025:2; [P1,P2] = meshgrid(span,span); pp = [P1(:) P2(:)]'; % simualte neural network on a grid aa = sim(net,pp); % plot classification regions based on MAX activation figure(1) ma = mesh(p1,p2,reshape(- aa,length(span),length(span))-5); mb = mesh(p1,p2,reshape( aa,length(span),length(span))-5); set(ma,'facecolor',[1 0.2.7],'linestyle','none'); set(mb,'facecolor',[1 1.0.5],'linestyle','none'); view(2) Παράδειγμα: Το πρόβλημα XOR Προσοχή!! Τα script πρέπει να τρέξουν το ένα μετά το άλλο. Κάθε φορά, δεν έχουμε το ίδιο ακριβώς αποτέλεσμα, λόγω τυχαιότητας.
Παράδειγμα: Το πρόβλημα XOR
Παράδειγμα: Το πρόβλημα XOR plot(net.iw{1}(:,1),net.iw{1}(:,2),'gs')
Δίκτυα Γενικευμένης Παλινδρόμησης Generalized Regression NN (GRNN) στο Matlab Τα GRNN μοιάζουν με τα RBF και χρησιμοποιούνται συχνά για την προσέγγιση συναρτήσεων. Η διαφορά τους συνίσταται στην διεργασία nprod, η οποία δίνει ένα άνυσμα n 2 με S 2 στοιχεία.
Δίκτυα Γενικευμένης Παλινδρόμησης (GRNN) στο Matlab Το κάθε στοιχείο του ανύσματος n 2 είναι το γινόμενο dot μιας γραμμής της LW 2,1 και του ανύσματος εισόδου a 1, κανονικοποιημένου με το άθροισμα των στοιχείων του a 1. Εάν π.χ. έχουμε: LW 2,1 = 1 2 3 4 5 6 nprod LW 2,1, a 1 = και a 1 = 0.7 a 0.3 1 = 0.7 + 0.3 = 1 1x0.7 2x0.3 1 3x0.7 + 4x0.3 1 5x0.7 + 6x0.3 1 = 0.1 3.3 5.3
Παράδειγμα GRNN στο Matlab %% GRNN Function Approximation % This example uses functions NEWGRNN and SIM. % Here are eight data points of a function we would % like to fit. The functions inputs X should result % in target outputs T. X = [1 2 3 4 5 6 7 8]; T = [0 1 2 3 2 1 2 1]; plot(x,t,'.','markersize',30) axis([0 9-1 4]) title('function to approximate.') xlabel('x') ylabel('t')
Παράδειγμα GRNN στο Matlab 4 Function to approximate. 3.5 3 2.5 2 T 1.5 0.5-0.5 1 0-1 0 1 2 3 4 5 6 7 8 9 X
Παράδειγμα GRNN στο Matlab % We use NEWGRNN to create a generalized regression network. We use a SPREAD slightly lower than 1, the distance between input values, in order to get a function that fits individual data points fairly closely. A smaller spread would fit data better but be less smooth. spread = 0.7; net = newgrnn(x,t,spread); view(net) A = net(x); hold on outputline = plot(x,a,'.','markersize',30,'color',[1 0 0]); title('create and test y network.') xlabel('x') ylabel('t and A')
Παράδειγμα GRNN στο Matlab
Παράδειγμα GRNN στο Matlab 4 Create and test y network. 3.5 3 2.5 2 T and A 1.5 1 0.5 0-0.5-1 0 1 2 3 4 5 6 7 8 9 X
Παράδειγμα GRNN στο Matlab % We can use the network to approximate the function at a new input value. x = 3.5; y = net(x); plot(x,y,'.','markersize',30,'color',[1 0 0]); title('new input value.') xlabel('x and x') ylabel('t and y')
Παράδειγμα GRNN στο Matlab 4 New input value. 3.5 3 2.5 2 T and y 1.5 1 0.5 0-0.5-1 0 1 2 3 4 5 6 7 8 9 X and x
Παράδειγμα GRNN στο Matlab % Here the network's response is simulated for many values, allowing us to see the function it represents. X2 = 0:.1:9; Y2 = net(x2); plot(x2,y2,'linewidth',4,'color',[1 0 0]) title('function to approximate.') xlabel('x and X2') ylabel('t and Y2')
Παράδειγμα GRNN στο Matlab 4 Function to approximate. 3.5 3 2.5 T and Y2 2 1.5 1 0.5-0.5 0-1 0 1 2 3 4 5 6 7 8 9 X and X2
Πιθανοτικά Δίκτυα Probabilistic Neural Networks (PNN) στο Matlab Τα PNN χρησιμοποιούνται συνήθως σε προβλήματα ταξινόμησης.
PNN στο Matlab Όταν εμφανίζεται μια είσοδος, το 1 ο στρώμα RBF υπολογίζει ένα άνυσμα, τα στοιχεία του οποίου δείχνουν πόσο κοντά είναι η είσοδος στα ανύσματα εκπαίδευσης.
PNN στο Matlab Το 2 ο στρώμα αθροίζει αυτές τις συμμετοχές, για κάθε κλάση των δεδομένων εισόδου, για να δώσει στην έξοδό του ένα άνυσμα πιθανοτήτων.
PNN στο Matlab Τελικά, μια ανταγωνιστική συνάρτηση στην έξοδο του 2 ου στρώματος, ανιχνεύει την μέγιστη των πιθανοτήτων και δίνει 1 γι αυτή την κλάση και 0 για τις άλλες.
PNN στο Matlab Έχουμε Q ζεύγη ανυσμάτων εισόδων/στόχων. Κάθε άνυσμα στόχου έχει Κ στοιχεία (το ένα είναι 1 και τα υπόλοιπα 0). Δηλαδή, κάθε άνυσμα εισόδου αντιστοιχείται σε μία από τις Κ κλάσεις.
% PNN Classification % This example uses functions NEWPNN and SIM. % Here are three two-element input vectors X and their % associated classes Tc. We would like to create a % probabilistic neural network that classifies these % vectors properly. X = [1 2; 2 2; 1 1]'; Tc = [1 2 3]; plot(x(1,:),x(2,:),'.','markersize',30) for i=1:3, text(x(1,i)+0.1,x(2,i),sprintf('class %g',tc(i))), end axis([0 3 0 3]) title('three vectors and their classes.') xlabel('x(1,:)') ylabel('x(2,:)') Παράδειγμα PNN στο Matlab
Παράδειγμα PNN στο Matlab
% First we convert the target class indices Tc to vectors T. Then we design a probabilistic neural network with NEWPNN. We use a SPREAD value of 1 because that is a typical distance between the input vectors. T = ind2vec(tc); spread = 1; net = newpnn(x,t,spread); view(net) Παράδειγμα PNN στο Matlab
Παράδειγμα PNN στο Matlab % Now we test the network on the design input vectors. We do this by simulating the network and converting its vector outputs to indices. Y = net(x); Yc = vec2ind(y); plot(x(1,:),x(2,:),'.','markersize',30) axis([0 3 0 3]) for i=1:3,text(x(1,i)+0.1,x(2,i),sprintf('class %g',yc(i))),end title('testing the network.') xlabel('x(1,:)') ylabel('x(2,:)')
Παράδειγμα PNN στο Matlab 3 Testing the network. 2.5 2 class 1 class 2 X(2,:) 1.5 1 class 3 0.5 0 0 0.5 1 1.5 2 2.5 3 X(1,:)
Παράδειγμα PNN στο Matlab % Let's classify a new vector with our network. x = [2; 1.5]; y = net(x); ac = vec2ind(y); hold on plot(x(1),x(2),'.','markersize',30,'color',[1 0 0]) text(x(1)+0.1,x(2),sprintf('class %g',ac)) hold off title('classifying y new vector.') xlabel('x(1,:) and x(1)') ylabel('x(2,:) and x(2)')
Παράδειγμα PNN στο Matlab 3 Classifying y new vector. 2.5 X(2,:) and x(2) 2 1.5 1 class 1 class 2 class 3 class 2 0.5 0 0 0.5 1 1.5 2 2.5 3 X(1,:) and x(1)
% This diagram shows how the probabilistic neural network divides the input space into the three classes. x1 = 0:.05:3; x2 = x1; [X1,X2] = meshgrid(x1,x2); xx = [X1(:) X2(:)]'; yy = net(xx); yy = full(yy); m = mesh(x1,x2,reshape(yy(1,:),length(x1),length(x2))); set(m,'facecolor',[0 0.5 1],'linestyle','none'); hold on Παράδειγμα PNN στο Matlab m = mesh(x1,x2,reshape(yy(2,:),length(x1),length(x2))); set(m,'facecolor',[0 1.0 0.5],'linestyle','none');
m = mesh(x1,x2,reshape(yy(3,:),length(x1),length(x2))); set(m,'facecolor',[0.5 0 1],'linestyle','none'); plot3(x(1,:),x(2,:),[1 1 1]+0.1,'.','markersize',30) plot3(x(1),x(2),1.1,'.','markersize',30,'color',[1 0 0]) hold off view(2) title('the three classes.') xlabel('x(1,:) and x(1)') ylabel('x(2,:) and x(2)') Παράδειγμα PNN στο Matlab
Παράδειγμα PNN στο Matlab 3 The three classes. 2.5 2 X(2,:) and x(2) 1.5 1 0.5 0 0 0.5 1 1.5 2 2.5 3 X(1,:) and x(1)