Πραγματοποίηση Νευρωνικών Δικτύων με το Matlab. Νευρωνικά Δίκτυα

Σχετικά έγγραφα
Νευρωνικά Δίκτυα στο Matlab

Δίκτυα Συναρτήσεων Βάσης Ακτινικού Τύπου Radial Basis Functions (RBF)

Το μοντέλο Perceptron

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

Δίκτυα Perceptron. Κυριακίδης Ιωάννης 2013

Αναγνώριση Προτύπων. Μη παραμετρικές τεχνικές Αριθμητικά. (Non Parametric Techniques)

Numerical Analysis FMN011

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

Assignment 1 Solutions Complex Sinusoids

Matrices and Determinants

b. Use the parametrization from (a) to compute the area of S a as S a ds. Be sure to substitute for ds!

Second Order RLC Filters

Section 8.3 Trigonometric Equations

Μοντέλο Perceptron πολλών στρωμάτων Multi Layer Perceptron (MLP)

Solution Series 9. i=1 x i and i=1 x i.

2 Composition. Invertible Mappings

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

1η εργασία για το μάθημα «Αναγνώριση προτύπων»

Δίκτυα Επικοινωνιών ΙΙ: OSPF Configuration

Other Test Constructions: Likelihood Ratio & Bayes Tests

Το δίκτυο SOM. Νευρωνικά Δίκτυα

C.S. 430 Assignment 6, Sample Solutions

Συστήματα Αναμονής (Queuing Systems)

EE512: Error Control Coding

Section 9.2 Polar Equations and Graphs

Συστήματα Αυτομάτου Ελέγχου

Homework 3 Solutions

ΠΑΡΑΜΕΤΡΟΙ ΕΠΗΡΕΑΣΜΟΥ ΤΗΣ ΑΝΑΓΝΩΣΗΣ- ΑΠΟΚΩΔΙΚΟΠΟΙΗΣΗΣ ΤΗΣ BRAILLE ΑΠΟ ΑΤΟΜΑ ΜΕ ΤΥΦΛΩΣΗ

3. O ΑΛΓΟΡΙΘΜΟΣ ΤΟΥ PERCEPTRON

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Προσομοίωση BP με το Bizagi Modeler

(C) 2010 Pearson Education, Inc. All rights reserved.

6.3 Forecasting ARMA processes

Fractional Colorings and Zykov Products of graphs

TMA4115 Matematikk 3

ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ

ΚΕΦΑΛΑΙΟ 5. Matlab GUI για FWSVM και Global SVM

Προσομοίωση Νευρωνικού Δικτύου στο MATLAB. Κυριακίδης Ιωάννης 2013

ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. ΘΕΜΑ: «ιερεύνηση της σχέσης µεταξύ φωνηµικής επίγνωσης και ορθογραφικής δεξιότητας σε παιδιά προσχολικής ηλικίας»

Math 6 SL Probability Distributions Practice Test Mark Scheme

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

Μέθοδοι Μηχανών Μάθησης για Ευφυή Αναγνώριση και ιάγνωση Ιατρικών εδοµένων

derivation of the Laplacian from rectangular to spherical coordinates

Meta-Learning and Universality

Επεξερασία εικόνας. Μιχάλης ρακόπουλος. Υπολογιστική Επιστήµη & Τεχνολογία, #09

Bayesian Data Analysis, Midterm I

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

4.3. Γραµµικοί ταξινοµητές

CHAPTER 48 APPLICATIONS OF MATRICES AND DETERMINANTS

Νευρωνικά ίκτυα και Εξελικτικός

IIT JEE (2013) (Trigonomtery 1) Solutions

NMBTC.COM /

1. A fully continuous 20-payment years, 30-year term life insurance of 2000 is issued to (35). You are given n A 1

SCITECH Volume 13, Issue 2 RESEARCH ORGANISATION Published online: March 29, 2018

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

w o = R 1 p. (1) R = p =. = 1

2014 Παρίσης Κ., Καθηγητής

ΣΧΕΔΙΑΣΜΟΣ ΔΙΚΤΥΩΝ ΔΙΑΝΟΜΗΣ. Η εργασία υποβάλλεται για τη μερική κάλυψη των απαιτήσεων με στόχο. την απόκτηση του διπλώματος

Practice Exam 2. Conceptual Questions. 1. State a Basic identity and then verify it. (a) Identity: Solution: One identity is csc(θ) = 1

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Τέτοιες λειτουργίες γίνονται διαμέσου του

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

1. Αφετηρία από στάση χωρίς κριτή (self start όπου πινακίδα εκκίνησης) 5 λεπτά µετά την αφετηρία σας από το TC1B KALO LIVADI OUT

M files RCL Κυκλώματα

10 MERCHIA. 10. Starting from standing position (where the SIGN START ) without marshal (self start) 5 minutes after TC4 KALO LIVADI OUT

Advanced Subsidiary Unit 1: Understanding and Written Response

ΠΛΗ 22: Βασικά Ζητήματα Δίκτυα Η/Υ

Ordinal Arithmetic: Addition, Multiplication, Exponentiation and Limit

Α.Τ.Ε.Ι ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΠΟΛΥΜΕΣΩΝ ΕΡΓΑΣΤΗΡΙΟ ΝΕΥΡΩΝΙΚΩΝ ΔΙΚΤΥΩΝ 4

Αντικειμενοστρεφής Προγραμματισμός

ΑΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Data Mining) Πανδή Αθηνά

Stabilization of stock price prediction by cross entropy optimization

Υπολογιστική Νοημοσύνη. Μάθημα 9: Γενίκευση

ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΣΧΝ ΓΔΦΤΡΧΝ ΑΠΟ ΑΠΟΦΖ ΜΟΡΦΟΛΟΓΗΑ ΚΑΗ ΑΗΘΖΣΗΚΖ

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Οπτικοποίηση με Prefuse. Δομή / Βασικά Χαρακτηριστικά / Παράδειγμα

Nowhere-zero flows Let be a digraph, Abelian group. A Γ-circulation in is a mapping : such that, where, and : tail in X, head in

An Inventory of Continuous Distributions

ηµιουργία αρχείου στον matlab editor Πληκτρολόγηση ακολουθίας εντολών

Γραφικές παραστάσεις (2ο μέρος)

Lecture 2. Soundness and completeness of propositional logic

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες

Γραφικά περιβάλλοντα από τον χρήστη Graphical User Interfaces (GUI)

SCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions

ST5224: Advanced Statistical Theory II

Μάθηση και Γενίκευση. "Τεχνητά Νευρωνικά Δίκτυα" (Διαφάνειες), Α. Λύκας, Παν. Ιωαννίνων

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

Μπεϋζιανά & Νευρωνικά Δίκτυα

The challenges of non-stable predicates

EE101: Resonance in RLC circuits

MathCity.org Merging man and maths

Example Sheet 3 Solutions

Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1

Bizagi Modeler: Συνοπτικός Οδηγός

Srednicki Chapter 55

Τεχνητή Νοημοσύνη. TMHMA ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ. Εξάμηνο 5ο Οικονόμου Παναγιώτης & Ελπινίκη Παπαγεωργίου. Νευρωνικά Δίκτυα.

Transcript:

Πραγματοποίηση Νευρωνικών Δικτύων με το Matlab

Το MATLAB μας δίνει την δυνατότητα να εργαστούμε στα με 4 τρόπους: Στο 1 ο επίπεδο με τον GUI. Μπορούμε με σχετική ευκολία να χρησιμοποιήσουμε τις εργαλειοθήκες (toolbox) για την επίλυση προβλημάτων προσαρμογής καμπυλών, αναγνώρισης δεδομένων, ταξινόμησης και ανάλυσης χρονοσειρών. Στο 2 ο επίπεδο, μπορούν να χρησιμοποιηθούν οι εντολές του MATLAB και να γραφεί script που θα δημιουργεί το ΝΝ, θα το εκπαιδεύει, κ.λ.π. Σημείωση: Οι εντολές στο Matlab μπορεί να διαφέρουν ελαφρώς από έκδοση σε έκδοση. Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB Στο 3 ο επίπεδο μπορούμε να προσαρμόσουμε τα toolbox, δημιουργώντας έτσι τα δικά μας νευρωνικά δίκτυα διατηρώντας παράλληλα όλη την λειτουργικότητα των toolbox. Στο 4 ο επίπεδο μπορούμε να μετατρέψουμε τον κώδικα των αρχείων που υπάρχει στα αρχεία των toolbox, καθώς οι κώδικες είναι προσβάσιμοι. Το Matlab (ανάλογα και με την έκδοσή του) μας δίνει την δυνατότητα μελέτης παραδειγμάτων διαφόρων ειδών ΝΝ σε διάφορες εφαρμογές.

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB >> nprtool

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Οι δυνατότητες του MATLAB

Το Matlab έχει ορισμένα έτοιμα παραδείγματα που αναφέρονται στο βιβλίο Neural Network Design (Hagan, Demuth, Beale): >> nndtoc Οι δυνατότητες του MATLAB

To GUI του MATLAB Το GUI ξεκινάει με την εντολή στην επιφάνεια εργασίας: >> nntool

To GUI του MATLAB Μπορούμε να δημιουργήσουμε ένα νέο ΝΝ, να ορίσουμε τα χαρακτηριστικά στοιχεία του ΝΝ (Training function, Adaption learning function, κ.λ.π.,) όπως εμφανίζονται στην εικόνα.

To GUI του MATLAB Να εισάγουμε τα δεδομένα εισόδου, τους στόχους και άλλα στοιχεία (ανάλογα με το ΝΝ). H Εισαγωγή των δεδομένων (ανυσμάτων) μπορεί να γίνει και από τον Neural Network/Data Manager (nntool)

Θέλουμε να δημιουργήσουμε ένα ΝΝ Perceptron που θα κάνει γραμμικό διαχωρισμό δύο κλάσεων οι οποίες έχουν από 20 δεδομένα η κάθε μία και τα έχουμε δημιουργήσει από πριν με το Matlab: close all, clear all, clc, format compact N = 20; % number of samples of each class % define inputs and outputs offset = 5; % offset for second class x = [randn(2,n) randn(2,n)+offset]; % inputs y = [zeros(1,n) ones(1,n)]; % outputs % Plot input samples with PLOTPV (Plot perceptron input/target vectors) figure(1) plotpv(x,y); grid on; Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron Δημιουργεί ένα άνυσμα x με διαστάσεις (2x40), σε δύο περιοχές που απέχουν μεταξύ τους κατά το offset και έχουν την standard normal distribution και ένα άνυσμα y (1x40) με 20 (0) και 20 (1).

Δημιουργία δικτύου Perceptron Δημιουργούνται 2 νέφη με 20 δεδομένα το καθένα (ο, +) στην ευρύτερη περιοχή με τυχαιότητα

Δημιουργία δικτύου Perceptron net = perceptron; net = train(net,x,y); view(net); figure(1) plotpc(net.iw{1},net.b{1});

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron To Matlab συμβολίζει τα δεδομένα εισόδου με το γράμμα (P) (εκ του Patterns). Έτσι οι συντεταγμένες των δεδομένων εισόδου που δημιουργήσαμε (ανύσματα 2x1) θα είναι P 1 και P 2. Οι στόχοι (Targets) θα είναι οι επιθυμητές τιμές εξόδου του ΝΝ για κάθε δεδομένο εισόδου (0 για την μία κλάση και 1 για την άλλη). Μπορούμε να τα εισάγουμε (Import) στο ΝΝ και από τον Neural Network/Data Manager (nntool) δίνοντάς τους και το όνομα που θέλουμε. Στο παράδειγμά μας, ήδη από την δημιουργία τους, τα ονομάσαμε X και Y.

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron Τώρα μπορούμε να δημιουργήσουμε το ΝΝ, ορίζοντας τα στοιχεία του: Name Network Type Input Data Target Data Transfer function Learning function

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron To NN Perceptron έχει 2 εισόδους, 1 έξοδο και 1 νευρώνα με βηματική συνάρτηση ενεργοποίησης.

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Perceptron Μετά το πέρας της εκπαίδευσης, τo NN Perceptron έχει ξεχωρίσει τις δύο κλάσεις και είναι σε θέση να χαράξει την ευθεία που τις χωρίζει. Εάν δούμε στο Neural Network/Data Manager (nntool) τα Output Data και Error Data θα διαπιστώσουμε πως η ταξινόμηση γίνεται σωστά. Η εν λόγω ευθεία (εάν ξαναεκπαιδεύσουμε το ΝΝ) μπορεί να είναι ελαφρώς διαφορετική καθώς παίζει ρόλο η αρχική τυχαιότητα των βαρών του ΝΝ. Εάν δε ξαναδημιουργήσουμε τα δεδομένα εισόδου, τότε λόγω της τυχαιότητας των δεδομένων, θα είναι σίγουρα διαφορετική, αλλά βέβαια θα εξακολουθεί να ξεχωρίζει τις κλάσεις.

Δημιουργία δικτύου Perceptron

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Θα δημιουργήσουμε ένα MLP με το οποίο θα αποπειραθούμε να ταξινομήσουμε τα δεδομένα τεσσάρων (4) κλάσεων, τα οποία θα δημιουργήσουμε προηγουμένως στο Matlab: close all, clear all, clc, format compact % number of samples of each class K = 100; % define 4 clusters of input data q =.6; % offset of classes A = [rand(1,k)-q; rand(1,k)+q]; B = [rand(1,k)+q; rand(1,k)+q]; C = [rand(1,k)+q; rand(1,k)-q]; D = [rand(1,k)-q; rand(1,k)-q]; grid on

Δημιουργία δικτύου Multi Layer Perceptron (MLP) % plot clusters figure(1) plot(a(1,:),a(2,:),'+k') hold on plot(b(1,:),b(2,:),'b*') plot(c(1,:),c(2,:),'ro') plot(d(1,:),d(2,:),'m.','markersize',15) % text labels for clusters text(.3-q,.6+2*q,'class A','FontSize',14) text(.3+q,.6+2*q,'class B','FontSize',14) text(.3+q,.4-2*q,'class C','FontSize',14) text(.3-q,.4-2*q,'class D','FontSize',14) Το script θα δημιουργήσει 4 κλάσεις με 100 πρότυπα η κάθε μία:

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP) % coding (+1/-1) of 4 separate classes a = [-1-1 -1 +1]'; b = [-1-1 +1-1]'; d = [-1 +1-1 -1]'; c = [+1-1 -1-1]'; % define inputs (combine samples from all four classes) P = [A B C D]; % define targets T = [repmat(a,1,length(a)) repmat(b,1,length(b))... repmat(c,1,length(c)) repmat(d,1,length(d)) ]; Κωδικοποιούμε τις εξόδους των 4 κλάσεων με +1/-1 και δημιουργούμε τα δεδομένα εισόδου Ρ και τους στόχους Τ που θα δώσουμε στο ΝΝ.

Δημιουργία δικτύου Multi Layer Perceptron (MLP) % create a neural network net = feedforwardnet([4 3]); % train net net.divideparam.trainratio = 1; % training set [%] net.divideparam.valratio = 0; % validation set [%] net.divideparam.testratio = 0; % test set [%] % train a neural network [net,tr,y,e] = train(net,p,t); % show network view(net) Δημιουργούμε το ΝΝ, δίνουμε τα χαρακτηριστικά του, το εκπαιδεύουμε και το εμφανίζουμε.

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Υπολογίζουμε την επίδοση του ΝΝ, που δείχνει την % επιτυχία του ΝΝ στην ταξινόμηση των δεδομένων εισόδου. % evaluate performance: decoding network response [m,i] = max(t); % target class [m,j] = max(y); % predicted class N = length(y); % number of all samples k = 0; % number of missclassified samples if find(i-j), % if there exist missclassified samples end Δημιουργία δικτύου Multi Layer Perceptron (MLP) k = length(find(i-j)); % get a number of missclassified samples fprintf('correct classified samples: %.1f%% samples\n', 100*(N-k)/N) Correct classified samples: 100.0% samples

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Δίνουμε την γραφική αποτύπωση των στόχων και των εξόδων. % plot network output figure; subplot(211) plot(t') title('targets') ylim([-2 2]) grid on subplot(212) plot(y') title('network response') xlabel('# sample') ylim([-2 2]) grid on

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Δίνουμε την γραφική αποτύπωση του διαχωρισμού των 4 κλάσεων. % generate a grid span = -1:.01:2; [P1,P2] = meshgrid(span,span); pp = [P1(:) P2(:)]'; % simualte neural network on a grid aa = net(pp); % plot classification regions based on MAX activation figure(1) m = mesh(p1,p2,reshape(aa(1,:),length(span),length(span))-5); set(m,'facecolor',[1 1 1],'linestyle','none'); hold on m = mesh(p1,p2,reshape(aa(2,:),length(span),length(span))-5); set(m,'facecolor',[1 1.0 0.5],'linestyle','none'); m = mesh(p1,p2,reshape(aa(3,:),length(span),length(span))-5); set(m,'facecolor',[.4 1.0 0.9],'linestyle','none'); m = mesh(p1,p2,reshape(aa(4,:),length(span),length(span))-5); set(m,'facecolor',[.3.4.5],'linestyle','none'); view(2)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Δημιουργία του ΝΝ από το Neural Network/Data Manager (nntool)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Μπορούμε να κάνουμε το ίδιο τεστ τροφοδοτώντας το εκπαιδευμένο ΝΝ με όλα τα σημεία της επιφάνειας (-1 2, - 1 2), όπως κάναμε προηγουμένως. Για να γίνει αυτό θα τροφοδοτήσουμε το ΝΝ με το αρχείο data pp και θα κάνουμε simulation:

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Θα αποτυπώσουμε τις εξόδους mlp_outputs που παίρνουμε από την εξομοίωση: % generate a grid span = -1:.01:2; [P1,P2] = meshgrid(span,span); pp = [P1(:) P2(:)]'; figure(1) m = mesh(p1,p2,reshape(mlp_outputs(1,:),length(span),length(span))-5); set(m,'facecolor',[1 1 1],'linestyle','none'); hold on m = mesh(p1,p2,reshape(mlp_outputs(2,:),length(span),length(span))-5); set(m,'facecolor',[1 1.0 0.5],'linestyle','none'); m = mesh(p1,p2,reshape(mlp_outputs(3,:),length(span),length(span))-5); set(m,'facecolor',[.4 1.0 0.9],'linestyle','none'); m = mesh(p1,p2,reshape(mlp_outputs(4,:),length(span),length(span))-5); set(m,'facecolor',[.3.4.5],'linestyle','none'); view(2)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP)

Δημιουργία δικτύου Multi Layer Perceptron (MLP) Το ΝΝ διαχωρίζει όλα τα σημεία του επιπέδου σε 4 κλάσεις (ανάλογα με τα χρώματα), αντιστοιχίζοντας σε κάθε κλάση μια περιοχή, με όλα της τα σημεία. Στα όρια των κλάσεων υπάρχουν κάποια σημεία του επιπέδου που αντιστοιχίζονται σε λάθος κλάσεις (τίποτα δεν είναι τέλειο). Αυτό συμβαίνει είτε πραγματοποιήσουμε το ΝΝ με τον έναν είτε με τον άλλο τρόπο. Για να το δούμε πρέπει να κάνουμε zoom στα όρια των κλάσεων.

Δημιουργία δικτύου ADALINE Τα δίκτυα Adaline, όπως και το Perceptron, μπορούν να διαχωρίσουν μόνον κλάσεις γραμμικά διαχωρίσιμες, πράγμα που όπως είναι φυσικό- περιορίζει την χρήση τους. Παρ όλα αυτά τα Adaline χρησιμοποιούνται ευρέως -και κυρίως- στα προσαρμοστικά φίλτρα (adaptive filters). Για την χρήση τους στα προσαρμοστικά φίλτρα γίνεται μια προσαρμογή στις εισόδους Adaline που επιτρέπει χρονοκαθυστερήσεις TDL (Tapped Delay Line): Σημείωση: Χρησιμοποιούμε τους συμβολισμούς του Matlab.

Δημιουργία δικτύου ADALINE y k TDL με R εξόδους: p 1 k = y k D D D p 2 k = y k 1 p R k = y k R + 1 Το σήμα εξόδου του TDL είναι ένα άνυσμα με διαστάσεις Rx1, όπου έχουμε την τιμή του σήματος στο τρέχον χρονικό διάστημα και τις προηγούμενες R-1 τιμές του. Εάν συνδυάσουμε την γραμμή TDL με το Adaline μπορούμε να δημιουργήσουμε ένα προσαρμοστικό φίλτρο:

Δημιουργία δικτύου ADALINE Είσοδοι ADALINE y k D w 1,1 D w 1,2 Σ n k a k b D w 1,R 1 a k = purelin Wp k + b = R i=1 w 1,i y k i + 1 + b

Δημιουργία δικτύου ADALINE Δημιουργία ΝΝ για προσαρμοστική πρόβλεψη χρονοσειρών (σημάτων δηλαδή), με βάση τις προηγούμενες τιμές τους: close all, clear all, clc, format compact % define segments of time vector dt = 0.01; % time step [seconds] t1 = 0 : dt : 3; % first time vector [seconds] t2 = 3+dt : dt : 6; % second time vector [seconds] t = [t1 t2]; % complete time vector [seconds] % define signal y = [sin(4.1*pi*t1).8*sin(8.3*pi*t2)]; % plot signal plot(t,y,'.-') xlabel('time [sec]'); ylabel('target Signal'); grid on ylim([-1.2 1.2]) Δημιουργούμε 2 συνεχόμενα ημιτονικά σήματα, τα οποία θέλουμε στην συνέχεια να αναπαραγάγουμε με το ΝΝ Adaline.

Δημιουργία δικτύου ADALINE % There are two basic types of input vectors: those that occur concurrently at the same time, or in no particular time sequence), and those that occur sequentially in time. For concurrent vectors, the order is not important, and if there were a number of networks running in parallel, you could present one input vector to each of the networks. For sequential vectors, the order in which the vectors appear is important. p = con2seq(y); % The resulting network will predict the next value of the target signal using delayed values of the target. inputdelays = 1:5; % delayed inputs to be used learning_rate = 0.2; % learning rate

Δημιουργία δικτύου ADALINE % Υπάρχουν δύο βασικοί τύποι ανυσμάτων εισόδου: Αυτά που προκύπτουν ταυτόχρονα (ή που δεν έχουν συγκεκριμένη χρονική ακολουθία) κι εκείνα που προκύπτουν διαδοχικά στον χρόνο (δηλαδή το ένα μετά το άλλο). Για τα ταυτόχρονα, η σειρά εμφάνισης δεν έχει σημασία και αν υπάρχει ένας αριθμός δικτύων που τρέχουν παράλληλα, μπορούμε να εφαρμόσουμε ένα άνυσμα εισόδου στο κάθε δίκτυο. Για τα διαδοχικά ανύσματα, η σειρά της εμφάνισής τους είναι σημαντική. p = con2seq(y); % Το δίκτυο που προκύπτει θα προβλέψει την επόμενη τιμή του επιθυμητού σήματος (στόχος) χρησιμοποιώντας τις καθυστερημένες χρονικά τιμές του στόχου. inputdelays = 1:5; % καθυστερημένες είσοδοι learning_rate = 0.2; % συντελεστής εκμάθησης

% define ADALINE Δημιουργία δικτύου ADALINE net = linearlayer(inputdelays,learning_rate); % Given an input sequence with N steps the network is updated as follows. Each step in the sequence of inputs is presented to the network one at a time. The network's weight and bias values are updated after each step, before the next step in the sequence is presented. Thus the network is updated N times. The output signal and the error signal are returned, along with new network. [net,y,e] = adapt(net,p,p); % view network structure view(net)

% ορισμός του ADALINE Δημιουργία δικτύου ADALINE net = linearlayer(inputdelays,learning_rate); % Με δεδομένη μια ακολουθία εισόδων με Ν βήματα, το δίκτυο επικαιροποιείται ως ακολούθως. Κάθε βήμα στην ακολουθία εισόδων εμφανίζεται στο δίκτυο ένα κάθε φορά. Τα βάρη και τα bias επικαιροποιούνται μετά από κάθε βήμα και πριν εμφανιστεί το επόμενο βήμα της ακολουθίας. Έτσι το δίκτυο επικαιροποιείται Ν φορές. Το σήμα της εξόδου και το σήμα του σφάλματος ξαναυπολογίζονται στο νέο δίκτυο. [net,y,e] = adapt(net,p,p); % Εμφάνιση της δομής του δικτύου view(net)

Δημιουργία δικτύου ADALINE % check final network parameters disp('weights and bias of the ADALINE after adaptation') net.iw{1} net.b{1} % transform result vectors Y = seq2con(y); Y = Y{1}; E = seq2con(e); E = E{1}; % start a new figure figure; % first graph subplot(211) plot(t,y,'b', t,y,'r--'); legend('original','prediction')

Δημιουργία δικτύου ADALINE grid on xlabel('time [sec]'); ylabel('target Signal'); ylim([-1.2 1.2]) % second graph subplot(212) plot(t,e,'g'); grid on legend('prediction error') xlabel('time [sec]'); ylabel('error'); ylim([-1.2 1.2])

Δημιουργία δικτύου ADALINE

Δημιουργία δικτύου ADALINE 1 0.8 0.6 0.4 Target Signal 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 Time [sec]

Δημιουργία δικτύου ADALINE Target Signal 1 0.5 0-0.5 Original Prediction -1 0 1 2 3 4 5 6 Time [sec] 1 0.5 Prediction error Error 0-0.5-1 0 1 2 3 4 5 6 Time [sec]