AGENDA DEL CORSOPARTE I Introduzione all‟Intelligenza Artificiale e al Machine Learning. Introduzione alle Reti Neurali....
REALIZZATO DA: VALERIO CAPOZIO   3
REALIZZATO DA: VALERIO CAPOZIO   4
INTRODUZIONE ALL‟ IALespressione "Intelligenza Artificiale“ (IA) fu coniata nel 1956 dal matematico    americano John Mc C...
INTRODUZIONE AL MACHINE LEARNINGIl Machine Learning (ML) è una branca dell‟IA.Concerne la progettazione e lo sviluppo di a...
PRINCIPALI APPROCCIAlberi di decisione: modello predittivo che associa le osservazioni di un elemento con   le conclusioni...
PRINCIPALI APPROCCI                      REALIZZATO DA: VALERIO CAPOZIO   8
ALGORITMI D‟APPRENDIMENTOLe tecniche di apprendimento sono raggruppabili principalmente in tre macro   tipologie: Supervi...
ADDESTRAMENTO SUPERVISIONATOIl sistema apprende una funzione dell‟input partendo da esempi di coppie input-      outputEse...
ADDESTRAMENTO SUPERVISIONATO RINFORZATOIl sistema apprende esplorando l’ambiente e ricevendo ricompense in caso di azioni ...
ADDESTRAMENTO NON SUPERVISIONATOIl sistema impara a riconoscere pattern o schemi nell‟input senza alcuna indicazione      ...
TIPOLOGIA DI PROBLEMIClassificazione:        Regressione:  output discreto         output continuoCodominio y={0…9}       ...
PROCEDURA DI APPRENDIMENTO                      Training Set                                 Testing SetLa procedura di ap...
ESEMPI DI REGRESSIONE A) Under-fitting B) Ok C)Over-fitting                        REALIZZATO DA: VALERIO CAPOZIO   15
OVER-FITTINGAdattare troppo il modello ai dati di input può portare al problema dell‟over-fitting.In caso di over-fitting ...
N-FOLD CROSS VALIDATIONPer assicurarsi di non aver introdotto bias con suddivisioni particolari del result set si    posso...
3-FOLD CROSS VALIDATIONAddestro tutti i punti non rossi e testo la qualità del modello sui rossi.Addestro tutti i punti no...
QUICK TRICKSAzioni che possono essere prese in considerazione per uscire da situazioni di   underfitting sono: Inserire f...
SKEWED DATACon questo termine sono indicati dataset contenenti classi asimmetriche.Situazione che si verifica spesso nei c...
REALIZZATO DA: VALERIO CAPOZIO   21
NEURAL NETWORKIl cervello umano è composto di    circa 1011 neuroni (100 bilioni).Ogni neurone è connesso ad altri    e   ...
ARTIFICIAL NEURAL NETWORKIl termine Artificial Neural Network (ANN) è utilizzato in IA, per identificare modelli     matem...
STRUTTURA DI UN NEURONE ARTIFICIALE                   Pesi    BIAS         X1                                       Output...
COMPARAZIONE TRA MODELLI                                         Input       Sinapsi                                      ...
CONNESSIONI TRA NEURONIL‟utilizzo di più neuroni può dar vita a diverse topologie di rete:           Single Layer         ...
APPRENDIMENTO IN UNA RETE NEURALEUna rete neurale, nella fase d‟apprendimento, stabilisce delle relazioni tra gli input e ...
REALIZZATO DA: VALERIO CAPOZIO   28
ENCOG 3.0Encog è un Framework sviluppato sia in Java che .NetNato come framework per progettare e realizzare diverse tipol...
STRUTTURA DI UNA RETE NEURALE CON ENCOG(1/2)Input Layer: L‟input di una rete neurale è SEMPRE rappresentato come un array...
STRUTTURA DI UNA RETE NEURALE CON ENCOG(2/2)Per     rappresentare una generica rete             in   Encog    si   utilizz...
ADDESTRAMENTO DI UNA RETE NEURALE CONENCOG (1/2)L‟interfaccia org.encog.ml.data.MLDataSet è utilizzata in Encog per memori...
ADDESTRAMENTO DI UNA RETE NEURALE CONENCOG (2/2)Attraverso un oggetto di          tipo   org.encog.ml.train.MLTrain   è   ...
ESECUZIONE DI UNA RETE NEURALE CONENCOGPer eseguire la rete ottenuta è necessario invocare il metodo compute(MLData d).Que...
REALIZZATO DA: VALERIO CAPOZIO   35
LA NOSTRA PRIMA RETEFeed-Forward Single-Layer: Segnali viaggiano in una sola direzione. La rete calcola una funzione deg...
PRIMI ESEMPI: FUNZIONE NOT                   X1         Y                   0          1                   1          0   ...
PRIMI ESEMPI: FUNZIONE AND             X1            X2            Y             0              0            0            ...
PRIMI ESEMPI: FUNZIONE OR             X1           X2           Y             0             0           0             0   ...
PRIMI ESEMPI: FUNZIONE XOR             X1    X2        Y             0      0        0             0      1        1      ...
COSA PUÒ RAPPRESENTARE UN PERCETTRONE                         1,1                                                         ...
COME RAPPRESENTARE UNO XOR Modificando l‟espressione logica e riscrivendola in forme note.  X1 XOR X2 = (X1 AND NOT X2) O...
PRIMI ESEMPI: FUNZIONE XOR              X1          X2              Y               0           0              0          ...
HIDDEN LAYERServono per modellare problemi più complessi, come la funzione logica XOR.Sono detti nascosti perché a cavallo...
REALIZZATO DA: VALERIO CAPOZIO   45
REALIZZATO DA: VALERIO CAPOZIO   46
ADDESTRAMENTO SUPERVISIONATONella fase di addestramento i valori di pesi e soglie della rete neurale sono impostati in mod...
DISCESA DEL GRADIENTELa discesa del gradiente è una tecnica di ottimizzazione locale.Data una funzione differenziabile, la...
ADDESTRAMENTO A PROPAGAZIONE (1/2)Gli algoritmi a propagazione passano attraverso una serie di iterazioni.Ad ogni iterazio...
ADDESTRAMENTO A PROPAGAZIONE (2/2)Nel corso di un‟epoca vengono elaborati tutti gli elementi presenti nel insieme di   tra...
BACKPROPAGATIONL‟algoritmo di backpropagation è uno dei primi metodi d‟addestramento introdotti per    le reti neurali.L‟a...
MANHATTAN UPDATE RULEL‟utilizzo del gradiente può portare a cambiamenti troppo grandi nella matrice dei    pesi.Algoritmi ...
RESILIENT PROPAGATIONIl miglior pregio di questo algoritmo è l‟assenza di parametri aggiuntivi da impostare.L‟algoritmo la...
SVANTAGGI DELL‟ADDESTRAMENTO APROPAGAZIONESono algoritmi basati sull‟epoca, ovvero propagano tutti i dati in avanti e poi ...
ADDESTRAMENTO A PROPAGAZIONE EMULTITHREADING (1/2)Ormai anche i computer di fascia più bassa sono dei multicore e quindi p...
ADDESTRAMENTO A PROPAGAZIONE EMULTITHREADING (2/2)Le tecniche di programmazione multithread fanno sentire maggiormente il ...
REALIZZATO DA: VALERIO CAPOZIO   57
INTRODUZIONE ALLA NORMALIZZAZIONESpesso i dati ottenuti non sono utilizzabili direttamente da una rete.Le reti neurali son...
NORMALIZZAZIONE DI VALORI NUMERICI (1/2)I valori numerici sono comunemente utilizzati sia come input che come output.I lor...
NORMALIZZAZIONE DI VALORI NUMERICI (1/1)La normalizzazione di valori numerici in Encog può essere eseguita attraverso la c...
NORMALIZZAZIONE DI VALORI NOMINALI (1/3)I valori nominali sono utilizzati tipicamente per assegnare delle label alle cose....
NORMALIZZAZIONE DI VALORI NOMINALI (2/3)One-of-n è una forma di normalizzazione molto semplice.Supponendo di avere una ret...
NORMALIZZAZIONE DI VALORI NOMINALI (3/3)Consente di „„spalmare‟‟ l‟errore su tutti i neuroni coinvolti.Questo approccio ga...
REALIZZATO DA: VALERIO CAPOZIO   64
MEAN SQUARED ERRORL‟errore quadratico medio o mean squared error (MSE) è una misura utilizzata per    quantificare la qual...
CONFUSION MATRIX                                                         Rappresentazione tabellare del                   ...
ACCURACYL‟accuracy è una misura  statistica, utilizzata per  quantificare        quanto  bene       funzioni     un  class...
PRECISIONLa     Precision è una misura     statistica   utilizzata    per                                       Valori Rea...
RECALLLa      Recall è una misura     statistica      utilizzata per                                      Valori Reali    ...
REALIZZATO DA: VALERIO CAPOZIO   70
LEGGERE DATI DA FONTI ESTERNEEncog dispone di alcune classi di utilità per leggere dati in maniera agevole da fonti     es...
METODI UTILI DI MLTRAINL‟addestramento di insiemi di dati molto corposi può portare via diverse ore (anche giorni).Encog c...
INTERFACCIA D‟UTILITÀ ENCOGPERSISTOREncog consente di salvare i modelli ottenuti a valle dell‟addestramento mediante   l‟u...
REALIZZATO DA: VALERIO CAPOZIO   74
REALIZZATO DA: VALERIO CAPOZIO   75
INTRODUZIONE ALLE FUNZIONI D‟ATTIVAZIONELa funzione d‟attivazione è una delle componenti base dell‟architettura di una ret...
INTERFACCIA ACTIVATIONFUCTIONIn Encog tutte le funzioni d‟attivazione implementano l‟interfaccia    org.encog.engine.netwo...
SCELTA DELLA FUNZIONI D‟ATTIVAZIONELa scelta di quale funzione d‟attivazione utilizzare può essere guidata da alcuni    pa...
ACTIVATIONBIPOLARUtilizzata quando si ha la necessità di ottenere un output bipolare.Per qualunque valore passatole l‟outp...
ACTIVATIONCOMPETITIVEUtilizzata per forzare solo un gruppo di neuroni a vincere.Vince il gruppo di neuroni che ha l‟output...
ACTIVATIONGAUSSIANBasata sulla funzione Gaussiana, produce la classica forma a campana.                                   ...
ACTIVATIONLINEARNon è una vera e propria funzione d‟attivazione.Implementa semplicemente una funzione lineare del tipo :  ...
ACTIVATIONLOGUtilizza un algoritmo basato sulla funzione logaritmo.                                            𝑥 ≥ 0 log(1...
ACTIVATIONSIGMOIDBasata sulla funzione del sigmoide.                                                 1                    ...
ACTIVATIONSINBasata sulla funzione seno.                                          𝑓 𝑥 = sin 𝑥Utilizzata di rado.È una funz...
ACTIVATIONSOFTMAXAppiattisce tutti i valori di input in modo che la loro somma sia uguale a uno.Inizia sommando l‟esponent...
ACTIVATIONTANHBasata sulla funzione della tangente iperbolica.                                             𝑒 2𝑥 − 1       ...
REALIZZATO DA: VALERIO CAPOZIO   88
REALIZZATO DA: VALERIO CAPOZIO   89
LIMITI DELLE RETI FEED-FORWARDLe reti di tipo feed-forward sono reti in cui la computazione si svolge sempre „„in   avanti...
INTRODUZIONE ALLE RETI SOMLe reti neurali Self Organizing Map sono una particolare tipologia di rete neurale   utilizzata ...
ADDESTRAMENTO DELLE RETI SOM (1/2)L‟addestramento procede per un numero di iterazioni prefissato.Tra il pattern di trainin...
ADDESTRAMENTO DELLE RETI SOM (2/2)Individuato il BMU si itera su tutti i pesi aggiornandone il valore sulla base della fun...
INTRODUZIONE ALLE RETI NEURALI RICORRENTILe reti neurali ricorrenti presentano le stesse caratteristiche delle reti feed-f...
RETI NEURALI RICORRENTI IN ENCOGEncog mette a disposizioni 4 topologie di reti neurali ricorrenti:   Hopfield.   Boltzma...
RETE DI HOPFIELDLa rete di Hopfield è,   architetturalmente,   estremamente semplice.È composta di un solo livello   che h...
RETE DI BOLTZMANNLa macchina di Boltzmann è la     controparte stocastica della rete di     Hopfield ed è basata su un    ...
RETE DI ELMANLa rete di Elman ha un   funzionamento molto simile alle   reti di tipo feed-forward e può   utilizzare gli s...
RETE DI JORDANLa rete di Jordan è molto  simile alle rete di Helman  per topologia.È composta di 4 livelli:    Input.   ...
RIFERIMENTIReti Neurali http://www.cs.unibo.it/babaoglu/courses/cas/resources/tutorials/Neural_Nets.pdfEncog: http://www...
Questo opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 2.5 Italia    ...
Corso Introduttivo alle Reti Neurali
Upcoming SlideShare
Loading in...5
×

Corso Introduttivo alle Reti Neurali

2,011

Published on

Materiale del corso introduttivo alle reti neurali tenuto presso Almawave nel 2012. Il corso è basato sull'utilizzo del framework encog.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,011
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Corso Introduttivo alle Reti Neurali"

  1. 1. AGENDA DEL CORSOPARTE I Introduzione all‟Intelligenza Artificiale e al Machine Learning. Introduzione alle Reti Neurali. E Encog 3.0. Primi Esempi di Reti Neurali. SPARTE II E Addestramento supervisionato. Normalizzazione dei dati. R Valutazione del modello addestrato. Classi e metodi d‟utilità per l‟addestramento. CPARTE III I Funzioni d‟attivazione.PARTE IV Z Altre tipologie di Reti Neurali. I REALIZZATO DA: VALERIO CAPOZIO 2
  2. 2. REALIZZATO DA: VALERIO CAPOZIO 3
  3. 3. REALIZZATO DA: VALERIO CAPOZIO 4
  4. 4. INTRODUZIONE ALL‟ IALespressione "Intelligenza Artificiale“ (IA) fu coniata nel 1956 dal matematico americano John Mc Carthy.Scopo di questa disciplina è rendere le macchine capaci di compiere azioni per le quali è richiesta lapplicazione di una qualche forma di "intelligenza".Il desiderio di creare “automi intelligenti” cui affidare lavori, è sempre stato insito nell‟uomo:  Nell‟antica Grecia si narrava che Efesto avesse creato degli automi per aiutarlo nei lavori pesanti (Omero, Iliade XVIII 417-421).  Leonardo da Vinci nel 1495 progetto un automa cavaliere.  Johann Wolfgang von Kempelen (ingegnere ungherese) ideò e presentò il Turco Meccanico, giocatore di scacchi del 1769.L‟IA è stata soggetta ad un enorme interesse, seguito da una grande delusione causata da promesse idealistiche e irraggiungibili:  I robot di Asimov REALIZZATO DA: VALERIO CAPOZIO 5
  5. 5. INTRODUZIONE AL MACHINE LEARNINGIl Machine Learning (ML) è una branca dell‟IA.Concerne la progettazione e lo sviluppo di algoritmi che consentano ai computer di apprendere sulla base di dati empirici e, in alcuni casi, evolvere i propri comportamenti.Possiamo affermare che:  un algoritmo è in grado di apprendere da un‟esperienza E, rispetto ad un task T e ad una misura delle prestazioni P, se le sue prestazioni P, nel task T, migliorano con l‟esperienza E (Mitchell 1997).Ad esempio:  T: “giocare a tennis”  E: “disputare un match”  P: “score” REALIZZATO DA: VALERIO CAPOZIO 6
  6. 6. PRINCIPALI APPROCCIAlberi di decisione: modello predittivo che associa le osservazioni di un elemento con le conclusioni relative ai suoi possibili valori.SVM: modello di classificazione basato sulla ricerca di un iperpiano di separazione dei dati.Clustering: modello basato sulla suddivisione dei dati in “insiemi simili”.Reti Bayesiane: modello statistico inferenziale. I dati sono variabili generate da distribuzioni di probabilità e legate da relazioni di dipendenza statistica.Reti neurali: modello ispirato alla struttura delle reti neurali biologiche.Algoritmi genetici: modello di algoritmo evolutivo ispirato all‟evoluzione biologica. REALIZZATO DA: VALERIO CAPOZIO 7
  7. 7. PRINCIPALI APPROCCI REALIZZATO DA: VALERIO CAPOZIO 8
  8. 8. ALGORITMI D‟APPRENDIMENTOLe tecniche di apprendimento sono raggruppabili principalmente in tre macro tipologie: Supervisionato: utilizza un insieme di dati di training per ottenere una funzione che guidi gli input verso gli output desiderati (classificazione).  Rinforzato: utilizza stimoli ambientali esterni (agenti intelligenti). Non supervisionato: utilizza i dati osservati per modellarli ed ottenere l‟output (clustering). Semi-supervisionato: utilizza i due approcci precedenti combinandoli. REALIZZATO DA: VALERIO CAPOZIO 9
  9. 9. ADDESTRAMENTO SUPERVISIONATOIl sistema apprende una funzione dell‟input partendo da esempi di coppie input- outputEsempio: Previsioni del tempoInput: coppie temperatura – pressioneOutput: bello /brutto tempo T(°C) P(hPa) Output 12.2 1022.8 Bello 20.4 1015.9 Bello 25.2 1028.9 Brutto 𝒚 = 𝒔𝒊𝒈𝒏(𝜶 ∗ 𝑻 + 𝜷 ∗ 𝑷) 17.7 1020.0 Brutto 18.4 1021.5 Brutto 22.0 1021.7 Bello 28.1 1016.3 Brutto REALIZZATO DA: VALERIO CAPOZIO 10
  10. 10. ADDESTRAMENTO SUPERVISIONATO RINFORZATOIl sistema apprende esplorando l’ambiente e ricevendo ricompense in caso di azioni positive.Questa metodologia è utilizzata soprattutto per gli agenti software. REALIZZATO DA: VALERIO CAPOZIO 11
  11. 11. ADDESTRAMENTO NON SUPERVISIONATOIl sistema impara a riconoscere pattern o schemi nell‟input senza alcuna indicazione dei valori di output.Esempio: Clustering, Market Basket Analysis REALIZZATO DA: VALERIO CAPOZIO 12
  12. 12. TIPOLOGIA DI PROBLEMIClassificazione: Regressione: output discreto output continuoCodominio y={0…9} Codominio 𝑦 ∈ 𝑅 REALIZZATO DA: VALERIO CAPOZIO 13
  13. 13. PROCEDURA DI APPRENDIMENTO Training Set Testing SetLa procedura di apprendimento è divisa in 2 fasi: Training:  Al sistema viene fornito un insieme di coppie input-output  Il sistema adatta il proprio stato interno per classificare correttamente le coppie fornite. Testing:  Al sistema viene fornito un diverso insieme di input(di cui è comunque noto l‟output)  Si valuta l‟accuratezza del sistema analizzando la percentuale di risposte corrette REALIZZATO DA: VALERIO CAPOZIO 14
  14. 14. ESEMPI DI REGRESSIONE A) Under-fitting B) Ok C)Over-fitting REALIZZATO DA: VALERIO CAPOZIO 15
  15. 15. OVER-FITTINGAdattare troppo il modello ai dati di input può portare al problema dell‟over-fitting.In caso di over-fitting il sistema perde la sua capacità di generalizzazione.Per prevenire il problema si può suddividere ulteriormente il training set, tenendo da parte un validation set.Durante l‟allenamento, si testeràperiodicamente l‟accuratezza del modello sulvalidation set.In presenza di un errore maggiore sulvalidation set si è in over-fitting. REALIZZATO DA: VALERIO CAPOZIO 16
  16. 16. N-FOLD CROSS VALIDATIONPer assicurarsi di non aver introdotto bias con suddivisioni particolari del result set si possono applicare delle tecniche come: Random sampling N-fold cross validation: Si suddivide il dataset in N sottoinsiemi, si allena il sistema su N- 1 sottoinsiemi e lo si testa sul restante sottoinsieme. Si itera per N volte e si prende la media dei risultati. REALIZZATO DA: VALERIO CAPOZIO 17
  17. 17. 3-FOLD CROSS VALIDATIONAddestro tutti i punti non rossi e testo la qualità del modello sui rossi.Addestro tutti i punti non verdi e testo la qualità del modello sui verdi.Addestro tutti i punti non blu e testo la qualità del modello sui blu.MSE lineare 2.05MSE quadratico 1.11MSE unisci punti 2.93 REALIZZATO DA: VALERIO CAPOZIO 18
  18. 18. QUICK TRICKSAzioni che possono essere prese in considerazione per uscire da situazioni di underfitting sono: Inserire feature aggiuntive Adottare un modello più complessoAzioni che possono essere prese in considerazione per uscire da situazioni di overfitting sono: Inserire esempi di training aggiuntivi Rimuovere alcune feature REALIZZATO DA: VALERIO CAPOZIO 19
  19. 19. SKEWED DATACon questo termine sono indicati dataset contenenti classi asimmetriche.Situazione che si verifica spesso nei casi reali  Fraud detection  Carte di credito  Acquisti on line  Furti di identità  EccEsistono tecniche per tentare di superare questo problema:  Applicare un costo di errata classificazione  Under sampling  Over samplingUtilizzare misure specifiche per valutare il modello ottenuto. REALIZZATO DA: VALERIO CAPOZIO 20
  20. 20. REALIZZATO DA: VALERIO CAPOZIO 21
  21. 21. NEURAL NETWORKIl cervello umano è composto di circa 1011 neuroni (100 bilioni).Ogni neurone è connesso ad altri e riceve segnali elettrici attraverso i dendriti.Ogni neurone invia messaggi attraverso una lunga Dendriti appendice chiamata assone.Al termine di ogni assone si diramano una serie di Assone ramificazioni dette sinapsi. SinapsiLe sinapsi hanno lo scopo di stimolare gli altri neuroni, tramite segnali elettrici, al fine di attivarli.L‟apprendimento influenza la capacità delle sinapsi di attivare o meno altri neuroni. REALIZZATO DA: VALERIO CAPOZIO 22
  22. 22. ARTIFICIAL NEURAL NETWORKIl termine Artificial Neural Network (ANN) è utilizzato in IA, per identificare modelli matematici volti a simulare la struttura e il funzionamento della rete neurale umana.Le ANNs sono utilizzate per approcciare problemi di:  Pattern recognition  Classificazione/Predizione  Regressione  Image Analysis …Esistono diverse tipologie di reti:  FeedForward  Single-Layer  Multi-Layer  Recurrent  Self-Organizing Map (SOM)Tipicamente le ANNs sono sistemi adattivi che mutano dinamicamente la propria struttura topologica sulla base di informazioni che giungono durante la fase di learning. REALIZZATO DA: VALERIO CAPOZIO 23
  23. 23. STRUTTURA DI UN NEURONE ARTIFICIALE Pesi BIAS X1 Output W1 𝑛 X2 W2 𝑥𝑖 𝑤𝑖 O1 Input W3 𝑖=1 X3 Wn Funzione d’attivazione Xn REALIZZATO DA: VALERIO CAPOZIO 24
  24. 24. COMPARAZIONE TRA MODELLI Input Sinapsi F.Attivazio Dendriti ne Assone Output REALIZZATO DA: VALERIO CAPOZIO 25
  25. 25. CONNESSIONI TRA NEURONIL‟utilizzo di più neuroni può dar vita a diverse topologie di rete: Single Layer Multi Layer REALIZZATO DA: VALERIO CAPOZIO 26
  26. 26. APPRENDIMENTO IN UNA RETE NEURALEUna rete neurale, nella fase d‟apprendimento, stabilisce delle relazioni tra gli input e gli output.Calcolando l’importanza relativa esistente tra gli input e gli output il sistema è capace di determinare alcune relazioni.Il sistema compara i risultati attesi, presenti nel training-set, con quelli ottenuti attraverso i diversi tentativi.Lo studio dell‟errore compiuto ad ogni tentativo guida la modifica dei pesi assegnati agli input.L‟apprendimento può terminare al verificarsi di diverse condizioni, ad esempio quando la rete raggiunge una data soglia di accuratezza. REALIZZATO DA: VALERIO CAPOZIO 27
  27. 27. REALIZZATO DA: VALERIO CAPOZIO 28
  28. 28. ENCOG 3.0Encog è un Framework sviluppato sia in Java che .NetNato come framework per progettare e realizzare diverse tipologie di reti neurali sta evolvendo includendo anche altre tecniche di machine learning.Consente programmazione multithreading.Può utilizzare la GPU per velocizzare i calcoli.Per utilizzare la versione JAVA è necessario aver installato: JVM 1.6 o superiori Maven IDE (Eclipse)È richiesta familiarità con: metodologie di programmazione OO; utilizzo delle Collection; utilizzo dei Generics; capacità di consultare la javadoc. REALIZZATO DA: VALERIO CAPOZIO 29
  29. 29. STRUTTURA DI UNA RETE NEURALE CON ENCOG(1/2)Input Layer: L‟input di una rete neurale è SEMPRE rappresentato come un array di double. Ogni elemento dell‟ array memorizza il valore di un neurone di input.  double[].size() = #neuroni in input. In Encog questo array di double è gestito mediante l‟interfaccia org.encog.ml.data.MLData.Output Layer: Rappresentato anche questo come un array di double. Sempre gestito mediante l‟interfaccia MLData. REALIZZATO DA: VALERIO CAPOZIO 30
  30. 30. STRUTTURA DI UNA RETE NEURALE CON ENCOG(2/2)Per rappresentare una generica rete in Encog si utilizza la classe org.encog.neural.networks.BasicNetworks.BasicNetworks fornisce i metodi e le strutture adatti per modellare una rete generica.I metodi principali per la creazione della struttura sono: addLayer(Layer l): consente di aggiungere livelli alla rete; reset(): permette di inizializzare i pesi in maniera casuale.Terminata l‟aggiunta dei livelli, prima di invocare il metodo reset() deve SEMPRE essere invocato il metodo getStructure().finalizeStructure() per dichiarare completa la struttura. REALIZZATO DA: VALERIO CAPOZIO 31
  31. 31. ADDESTRAMENTO DI UNA RETE NEURALE CONENCOG (1/2)L‟interfaccia org.encog.ml.data.MLDataSet è utilizzata in Encog per memorizzare i dati dell‟insieme di training.L‟insieme di training è composto di due sottoinsiemi: I dati di input, su cui addestrare la rete. I dati di output attesi per l‟input passato.Gli oggetti di tipo MLDataSet consentono di gestire i valori dell‟insieme di training mediante un unico oggetto.Oggetti di tipo MLDataSet sono tipicamente memory-based. Quindi, per insiemi particolarmente corposi di dati possono dar luogo a problemi di memoria REALIZZATO DA: VALERIO CAPOZIO 32
  32. 32. ADDESTRAMENTO DI UNA RETE NEURALE CONENCOG (2/2)Attraverso un oggetto di tipo org.encog.ml.train.MLTrain è possibile eseguire l‟addestramento della rete.Da un oggetto di tipo MLTrain è possibile eseguire un ciclo d‟addestramento invocando il metodo iteration().Al termine dell‟addestramento è MOLTO importante invocare il metodo finishTraining(). La chiamata di questo metodo è particolarmente importante nella programmazione multithread.È possibile calcolare l‟errore compiuto dal modello durante l‟addestramento utilizzando il metodo getError() sull‟oggetto di tipo MLTrain.Ad un algoritmo d‟addestramento può essere assegnata una strategia attraverso il metodo addStrategy(Strategy s)L‟interfaccia org.encog.ml.train.strategy.Strategy è implementata da tutte le classi che consentono di aggiungere logica addizionale al processo di addestramento REALIZZATO DA: VALERIO CAPOZIO 33
  33. 33. ESECUZIONE DI UNA RETE NEURALE CONENCOGPer eseguire la rete ottenuta è necessario invocare il metodo compute(MLData d).Questo metodo, preso in input l‟oggetto MLData, esegue la rete e restituisce in output un oggetto dello stesso tipo contenente il valore elaborato dalla rete.È possibile utilizzare le reti anche come classificatori attraverso il metodo classify(MLData d). L‟output in questo caso sarà un intero rappresentante la classe d‟appartenenza dell‟input.Esiste infine un metodo winner(MLData d) che restituisce un intero rappresentante l‟indice del neurone di output attivato. REALIZZATO DA: VALERIO CAPOZIO 34
  34. 34. REALIZZATO DA: VALERIO CAPOZIO 35
  35. 35. LA NOSTRA PRIMA RETEFeed-Forward Single-Layer: Segnali viaggiano in una sola direzione. La rete calcola una funzione degli input. Percettrone.I neuroni sono connessi tramite archi orientati e pesatiUn percorso può essere: stimolante (peso positivo) inibitorio (peso negativo).L‟attivazione di un neurone è di tipo binario, il neurone può essere: attivo (fired) inattivo (not fired).La funzione d‟attivazione sarà quindi del tipo: F(yin) = 1, se yin>=T 0 altrimenti Dove yin è il totale dei segnali ricevuti in input e T è la threshold per Y REALIZZATO DA: VALERIO CAPOZIO 36
  36. 36. PRIMI ESEMPI: FUNZIONE NOT X1 Y 0 1 1 0 -1 X1 Y Threshold(Y)=0 REALIZZATO DA: VALERIO CAPOZIO 37
  37. 37. PRIMI ESEMPI: FUNZIONE AND X1 X2 Y 0 0 0 0 1 0 1 0 0 1 1 1 X1 1 Y X2 1 Threshold(Y)=1,5 REALIZZATO DA: VALERIO CAPOZIO 38
  38. 38. PRIMI ESEMPI: FUNZIONE OR X1 X2 Y 0 0 0 0 1 1 1 0 1 1 1 1 X1 2 Y X2 2 Threshold(Y)=2 REALIZZATO DA: VALERIO CAPOZIO 39
  39. 39. PRIMI ESEMPI: FUNZIONE XOR X1 X2 Y 0 0 0 0 1 1 1 0 1 1 1 0 ? REALIZZATO DA: VALERIO CAPOZIO 40
  40. 40. COSA PUÒ RAPPRESENTARE UN PERCETTRONE 1,1 1,1 0,1 0,1 0,0 1,0 1,0 0,0 AND XOR Funzioni che possono essere separate come nel caso della funzione AND sono dette linearmente separabili. Un percettrone, e più in generale una rete feed-forward single-layer, può rappresentare SOLO funzioni linearmente separabili. XOR non può essere rappresentato attraverso un percettrone. REALIZZATO DA: VALERIO CAPOZIO 41
  41. 41. COME RAPPRESENTARE UNO XOR Modificando l‟espressione logica e riscrivendola in forme note.  X1 XOR X2 = (X1 AND NOT X2) OR (NOT X1 AND X2) X1 X2 Y 0 0 0 0 1 1 1 0 1 1 1 0 X NOT X NOT X1 AND NOT NOT X1 AND Y 1 X1 2 X2 X2 X2 0 1 0 1 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 REALIZZATO DA: VALERIO CAPOZIO 42
  42. 42. PRIMI ESEMPI: FUNZIONE XOR X1 X2 Y 0 0 0 0 1 1 Threshold(H)=2 1 0 1 Threshold(Y)=2 1 1 0 Hidden- (X1 AND NOT X2) Layer 2 X1 H 1 2 -1 OR Y -1 H 2 X2 2 2 (X2 AND NOT X1) X1 XOR X2 = (X1 AND NOT X2) OR (NOT X1 AND X2) REALIZZATO DA: VALERIO CAPOZIO 43
  43. 43. HIDDEN LAYERServono per modellare problemi più complessi, come la funzione logica XOR.Sono detti nascosti perché a cavallo tra il livello di input e di output della rete neurale quindi all‟interno della blackbox rappresentata dalla rete stessa.Nella stessa rete possono coesistere diversi livelli nascosti.In molti casi si utilizza un numero di hidden layer compreso tra 1 e 2. REALIZZATO DA: VALERIO CAPOZIO 44
  44. 44. REALIZZATO DA: VALERIO CAPOZIO 45
  45. 45. REALIZZATO DA: VALERIO CAPOZIO 46
  46. 46. ADDESTRAMENTO SUPERVISIONATONella fase di addestramento i valori di pesi e soglie della rete neurale sono impostati in modo da ottenere gli output desiderati.Nell‟addestramento supervisionato, oltre ai dati di input, vengo passati all‟algoritmo anche i dati attesi in output.Le tecniche di addestramento a propagazione sono diverse e possono dare risultati estremamente performanti a patto di avere un congruo numero di dati valutati e non eccessivamente rumorosi.Encog supporta tre principali forme di addestramento per propagazione: Backpropagation. Manhattan Update Rule. Resilient Propagation.Le classi di Encog basate sulla propagazione implementano l‟interfaccia org.encog.neural.networks.training.propagation.Propagation. REALIZZATO DA: VALERIO CAPOZIO 47
  47. 47. DISCESA DEL GRADIENTELa discesa del gradiente è una tecnica di ottimizzazione locale.Data una funzione differenziabile, la discesa del gradiente consente di trovare un minimo (locale) in questa funzione.La tecnica consiste nel valutare la funzione stessa e il suo gradiente in un punto scelto a caso. Scelto poi un secondo punto sulle indicazioni del gradiente, si confrontano i valori dei due punti.Si possono verificare 2 casi: La funzione ha un valore minore: si continua la discesa seguendo le indicazioni ottenute dal calcolo del gradiente sul secondo punto. La funzione ha un valore maggiore:  Si è arrivati ad un minimo locale.  Ci si è allontanati troppo dal primo punto. REALIZZATO DA: VALERIO CAPOZIO 48
  48. 48. ADDESTRAMENTO A PROPAGAZIONE (1/2)Gli algoritmi a propagazione passano attraverso una serie di iterazioni.Ad ogni iterazione si tenta di migliorare l‟error-rate della rete neurale.Ogni iterazione esegue un ciclo completo sull‟intero insieme dei dati di training calcolando variazioni sui pesi e sulle soglie.Un ciclo completo è comunemente identificato col nome di epoca .I cambiamenti così calcolati sono applicati al termine di ogni iterazione, in questo modo è possibile valutare, al termine di ogni epoca, lo stato dell‟addestramento. REALIZZATO DA: VALERIO CAPOZIO 49
  49. 49. ADDESTRAMENTO A PROPAGAZIONE (2/2)Nel corso di un‟epoca vengono elaborati tutti gli elementi presenti nel insieme di training.L‟elaborazione di ognuno di questi elementi dell‟insieme di training consiste di due fasi: Forward. Backward.Nel fase di forward i dati vengono passati alla rete come se questa non fosse in fase di addestramento. In questa fase vengono mantenuti anche gli output dei livelli intermedi.Nella fase di backward si procede a ritroso, partendo dal livello di output, si calcola la differenza tra ognuno degli output reali con il corrispettivo ideale per ognuno dei neuroni. Il gradiente di questa differenza viene poi calcolato effettuando la derivata della funzione d‟attivazione del livello e moltiplicando il risultato ottenuto per l‟errore. REALIZZATO DA: VALERIO CAPOZIO 50
  50. 50. BACKPROPAGATIONL‟algoritmo di backpropagation è uno dei primi metodi d‟addestramento introdotti per le reti neurali.L‟algoritmo, oltre all‟errore, utilizza due parametri: Learning rate. Momentum.Il learning rate è una percentuale che determina come il gradiente dovrebbe essere applicato ai pesi e alle soglie. Il gradiente è moltiplicato per il learning rate e poi aggiunto ai pesi e alle soglie.Il Momentum è anch‟esso una percentuale e specifica con quale proporzione i cambiamenti apportati nell‟epoca precedente debbano essere riapplicati. REALIZZATO DA: VALERIO CAPOZIO 51
  51. 51. MANHATTAN UPDATE RULEL‟utilizzo del gradiente può portare a cambiamenti troppo grandi nella matrice dei pesi.Algoritmi come questo utilizzano quindi solo il segno del gradiente. Ovvero l‟unica cosa importante per l‟algoritmo non è il valore numerico del gradiente, ma che questi sia positivo, negativo o vicino a zero.Il segno del gradiente è utilizzato per determinare come aggiornare i valori di pesi e soglie. Se il valore è vicino allo zero nessun cambiamento viene apportato. Se il valore è positivo il peso o la soglia sono incrementati. Se il valore è negativo il peso o la soglia sono decrementati.Il valore di incremento o decremento è una costante fornita in input all‟algoritmo. REALIZZATO DA: VALERIO CAPOZIO 52
  52. 52. RESILIENT PROPAGATIONIl miglior pregio di questo algoritmo è l‟assenza di parametri aggiuntivi da impostare.L‟algoritmo lavora in maniera similare al Manhattan update rule sfruttando il segno del gradiente, ma utilizza un approccio più raffinato per calcolare il valore del cambiamento da apportare.Differentemente dagli altri due algoritmi appena proposti non utilizza parametri fissi, ma ricalcola il valore da applicare sulla base dei progressi fatti dall‟addestramento.Il valore d‟aggiornamento è estremamente piccolo all‟inizio per poi variare, nel corso delle epoche, sulla base del segno (incremento/decremento) e del valore del gradiente. REALIZZATO DA: VALERIO CAPOZIO 53
  53. 53. SVANTAGGI DELL‟ADDESTRAMENTO APROPAGAZIONESono algoritmi basati sull‟epoca, ovvero propagano tutti i dati in avanti e poi tutti gli errori all‟indietro.Avere l‟epoca come scope d‟addestramento può essere molto oneroso dal punto di vista computazionale se si hanno molti dati.Utilizzano il metodo di discesa del gradiente e quindi soffrono di: Convergenza su minimi locali. Convergenza lenta. Se la derivata è piccola l‟algoritmo si muove a piccoli passi. REALIZZATO DA: VALERIO CAPOZIO 54
  54. 54. ADDESTRAMENTO A PROPAGAZIONE EMULTITHREADING (1/2)Ormai anche i computer di fascia più bassa sono dei multicore e quindi possono istanziare più di un thread fisico alla volta.Per sfruttare il vantaggio di avere core multipli su cui eseguire operazioni macchina è necessario avere del software che sia multithread.L‟idea generale si basa sul principio del DIVIDE ET IMPERA.Encog consente la programmazione multithread in quei task tipicamente time consuming. Ad esempio nella fase di training.Tutti gli algoritmi d‟addestramento basati sulla tecnica della propagazione supportano nativamente il multithreading.Per specificare alla rete quanti thread utilizzare si fa uso del metodo setThreadCount(int n) dell‟oggetto di tipo Propagation. REALIZZATO DA: VALERIO CAPOZIO 55
  55. 55. ADDESTRAMENTO A PROPAGAZIONE EMULTITHREADING (2/2)Le tecniche di programmazione multithread fanno sentire maggiormente il loro contributo in presenza di grandi moli di dati e, ovviamente, in presenza di macchine che le supportino.La possibilità di utilizzare più thread viene sfruttata nell‟elaborazione dei passi di Forward e Backward.All‟inizio di ogni epoca i dati vengono suddivisi in pacchetti e ogni pacchetto assegnato ad un thread distinto per essere elaborato. Al termine un solo thread si occupa di aggregare i risultati di tutte le elaborazioni e di riportare i risultati globali sulla rete.Avere un‟elaborazione multithread NON influisce sul numero di epoche necessarie all‟addestramento della rete, ma sulla velocità dell‟addestramento. REALIZZATO DA: VALERIO CAPOZIO 56
  56. 56. REALIZZATO DA: VALERIO CAPOZIO 57
  57. 57. INTRODUZIONE ALLA NORMALIZZAZIONESpesso i dati ottenuti non sono utilizzabili direttamente da una rete.Le reti neurali sono progettate per accettare in input numeri in virgola mobile.In particolare lavorano al massimo delle prestazioni con input appartenenti al range [- 1,1] o [0,1].La scelta del range può essere influenzata dall‟utilizzo di una determinata funzione d‟attivazione. Ad esempio la funzione Sigmoide gestisce solo numeri appartenenti ad un range positivo.Normalizzare, a seconda del tipo di dato trattato, può implicare diverse operazioni. REALIZZATO DA: VALERIO CAPOZIO 58
  58. 58. NORMALIZZAZIONE DI VALORI NUMERICI (1/2)I valori numerici sono comunemente utilizzati sia come input che come output.I loro valori numerici hanno un significato in quanto numeri. Affermare che il monte X sia alto 1000m e il monte Y sia alto 1200m ha un significato perché 1200 > 1000.Valori come l‟altezza dei monti non rientrano però nel range che consente alle reti neurali di lavorare in maniera ottimale e devono quindi essere normalizzati.In questo caso l‟operazione di normalizzazione consiste nel riportare i dati numerici entro un range prestabilito [-1,1] oppure [0,1]. REALIZZATO DA: VALERIO CAPOZIO 59
  59. 59. NORMALIZZAZIONE DI VALORI NUMERICI (1/1)La normalizzazione di valori numerici in Encog può essere eseguita attraverso la classe org.encog.util.arrayutil.NormalizeArray.Il metodo di normalizzazione è basato sulla seguente equazione: 𝑥 − 𝑚𝑖𝑛 𝑓 𝑥 = ∗ 𝑕𝑖𝑔𝑕 − 𝑙𝑜𝑤 + 𝑙𝑜𝑤 𝑚𝑎𝑥 − 𝑚𝑖𝑛Dove:  x = il valore da normalizzare.  min = il valore minimo ricoperto da x.  max = il valore massimo ricoperto da x.  low = il valore minimo del range.  high = il valore più alto del range. REALIZZATO DA: VALERIO CAPOZIO 60
  60. 60. NORMALIZZAZIONE DI VALORI NOMINALI (1/3)I valori nominali sono utilizzati tipicamente per assegnare delle label alle cose. Ad esempio il genere di una persona: uomo o donna.I valori nominali possono essere utilizzati anche per descrivere attributi di un oggetto.Valori nominali possono essere utilizzati sia in fase di input che di output.Per essere normalizzati i valori nominali devono essere ricondotti a valori numerici capaci di rappresentarli.In Encog esistono due modalità di normalizzazione dei valori nominali: One-of-n. Equilateral. REALIZZATO DA: VALERIO CAPOZIO 61
  61. 61. NORMALIZZAZIONE DI VALORI NOMINALI (2/3)One-of-n è una forma di normalizzazione molto semplice.Supponendo di avere una rete che in output restituisce 3 valori nominali A, B, C.La rete dovrà avere tre neuroni di output (uno per ogni valore nominale).Il valore nominale predetto dalla rete dovrà corrispondere al neurone col più alto valore d‟attivazione.Nell‟insieme di training i valori ideali di output saranno codificati inserendo un 1 nella posizione relativa al neurone da attivare e -1 nelle altre. Si avrà ad esempio:  A=1,-1,-1  B=-1,1,-1  C=-1,-1,1 REALIZZATO DA: VALERIO CAPOZIO 62
  62. 62. NORMALIZZAZIONE DI VALORI NOMINALI (3/3)Consente di „„spalmare‟‟ l‟errore su tutti i neuroni coinvolti.Questo approccio garantisce che lo stesso errore abbia lo stesso peso anche in caso di neuroni differenti.Per ottenere questo risultato è necessario che ogni insieme di valori abbia la stessa distanza.Per quantificare la distanza viene utilizzata la distanza euclidea tra due punti. 𝑖1 − 𝑎1 2 + 𝑖2 − 𝑎2 2 +⋯ 𝑖𝑛− 𝑎𝑛 2 𝑑𝑖𝑠𝑡𝑎𝑛𝑧𝑎 = 𝑛Dove: i: rappresenta il valore di output ideale; a: rappresenta il valore di output realmente ottenuto. REALIZZATO DA: VALERIO CAPOZIO 63
  63. 63. REALIZZATO DA: VALERIO CAPOZIO 64
  64. 64. MEAN SQUARED ERRORL‟errore quadratico medio o mean squared error (MSE) è una misura utilizzata per quantificare la qualità della stima effettuata.L‟errore quadratico medio misura quanto i valori predetti si discostino da quelli reali. 𝑁 2 𝑖=1 𝑟𝑒𝑎𝑙 𝑖 − 𝑝𝑟𝑒𝑑 𝑖 𝑀𝑆𝐸 = 𝑁 In particolare valuta per ogni dato la distanza esistente tra il punto predetto e il corrispondente reale. Il quadrato è inserito per evitare che valori negativi cancellino i positivi. REALIZZATO DA: VALERIO CAPOZIO 65
  65. 65. CONFUSION MATRIX Rappresentazione tabellare del risultato di una classificazione. Valori FALSE classificati  Ogni riga rappresenta un‟istanza di come Positivi una classe predetta. Errore di Tipo I  Ogni colonna rappresenta un‟istanza di una classe reale. Valori Reali Consente di capire le reali True False prestazioni di un classificatore Valori Predetti anche nel caso di dataset Positive True Positive False sbilanciati. Positive Negativ False True Un vantaggio di questa e Negative Negative rappresentazione è la possibilità di individuare subito se ilValori TRUE classificati sistema confonde due classi.come NegativiErrore di Tipo II REALIZZATO DA: VALERIO CAPOZIO 66
  66. 66. ACCURACYL‟accuracy è una misura statistica, utilizzata per quantificare quanto bene funzioni un classificatore nell‟ Valori Reali identificare le classi. True False Valori PredettiÈ definita come il Positive True Positive False rapporto tra tutti i Positive risultati true rispetto Negativ False True all‟intera popolazione. e Negative Negative 𝑇𝑃+𝑇𝑁 𝐴𝑐𝑐 = 𝑇𝑃+𝑇𝑁+𝐹𝑃+𝐹𝑁 REALIZZATO DA: VALERIO CAPOZIO 67
  67. 67. PRECISIONLa Precision è una misura statistica utilizzata per Valori Reali quantificare quanto bene un classificatore identifichi i True False membri di una classe. Valori Predetti Positive True Positive FalseQuesta misura è definita come Positive il rapporto tra i true positive e tutti i valori predetti come Negativ False True positive. e Negative Negative 𝑇𝑃 𝑃𝑟𝑒𝑐 = 𝑇𝑃+𝐹𝑃Un sistema con elevata Precision tipicamente pochi errori di Tipo I. REALIZZATO DA: VALERIO CAPOZIO 68
  68. 68. RECALLLa Recall è una misura statistica utilizzata per Valori Reali quantificare quanto bene un classificatore identifichi True False risultati positivi. Valori Predetti Positive True Positive FalseQuesta misura è definita come Positive il rapporto tra i true positive e tutti i valori reali di quella Negativ False True classe. e Negative Negative 𝑇𝑃 𝑅𝑐𝑎𝑙𝑙 = 𝑇𝑃+𝐹𝑁Un sistema con elevata Recall ha tipicamente pochi errori di Tipo II. REALIZZATO DA: VALERIO CAPOZIO 69
  69. 69. REALIZZATO DA: VALERIO CAPOZIO 70
  70. 70. LEGGERE DATI DA FONTI ESTERNEEncog dispone di alcune classi di utilità per leggere dati in maniera agevole da fonti esterne quali: File CSV. Database Relazionali.In entrambe i casi si fa uso di particolari specializzazioni della classe BasicMLDataSet. org.encog.ml.data.specific.CSVNeuralDataSet. Sarà sufficiente istanziare l‟oggetto passando come parametri il path del file, e le dimensioni del dataset di input e del dataset di output atteso per ottenere un oggetto di tipo MLDataSet da utilizzare. org.encog.ml.data.specific.SQLNeuralDataSet. Sarà sufficiente istanziare l‟oggetto passando una connessione al database, la query SQL da effettuare e le dimensioni del dataset di input e del dataset di output atteso per ottenere un oggetto di tipo MLDataSet da utilizzare. REALIZZATO DA: VALERIO CAPOZIO 71
  71. 71. METODI UTILI DI MLTRAINL‟addestramento di insiemi di dati molto corposi può portare via diverse ore (anche giorni).Encog consente, con alcuni algoritmi d‟addestramento, di bloccare il processo e riprenderlo in seguito.Per sapere se un algoritmo d‟addestramento consente di essere „„messo in pausa‟‟ si può richiamare il metodo canContinue().Per bloccare un algoritmo e riprenderne in seguito l‟elaborazione si utilizza invece il metodo pause() che restituirà un oggetto di tipo org.encog.neural.networks.training.propagation.TrainingContinuation.Per riprendere un addestramento precedentemente interrotto sarà necessario invocare il metodo resume(TrainingContinuation tc).Questi tre metodi sono presenti in tutti gli algoritmi d‟addestramento poiché specificati nell‟interfaccia MLTrain. REALIZZATO DA: VALERIO CAPOZIO 72
  72. 72. INTERFACCIA D‟UTILITÀ ENCOGPERSISTOREncog consente di salvare i modelli ottenuti a valle dell‟addestramento mediante l‟utilizzo degli oggetti di tipo org.encog.persist.EncogPersistor.EncogPersistor è un‟interfaccia di cui esistono diverse implementazioni che specializzano i metodi sulla base del modello che si intende salvare.Un oggetto di tipo EncogPersistor salva un oggetto di Encog in un file EG.I metodi principali della classe sono 3: getPersistClassString(). Restituisce una stringa contenente il nome della classe che si vuole salvare/caricare. read(InputStream i). Restituisce un Object contenente quanto caricato dallo stream. save(OutputStream o, Object o). Salva l‟Object tramite lo stream. REALIZZATO DA: VALERIO CAPOZIO 73
  73. 73. REALIZZATO DA: VALERIO CAPOZIO 74
  74. 74. REALIZZATO DA: VALERIO CAPOZIO 75
  75. 75. INTRODUZIONE ALLE FUNZIONI D‟ATTIVAZIONELa funzione d‟attivazione è una delle componenti base dell‟architettura di una rete neurale.La funzione d‟attivazione agisce come una „„funzione di schiacciamento‟‟ comprimendo l‟output di un neurone in un determinato range (tipicamente [0,1] oppure [-1,1])In generale si possono raggruppare le funzioni d‟attivazione in tre macro-categorie: 1 𝑣≥0 Basate su soglia: 𝜑 𝑣 = 0 𝑣<0 1 1 𝑣≥ 2 1 1 Lineari: 𝜑 𝑣 = 𝑣 − > 𝑣> 2 2 1 0 𝑣≤− 2 𝑣 1−exp(−𝑣) Sigmoidali: 𝜑 𝑣 = tanh = 2 1+exp(−𝑣) REALIZZATO DA: VALERIO CAPOZIO 76
  76. 76. INTERFACCIA ACTIVATIONFUCTIONIn Encog tutte le funzioni d‟attivazione implementano l‟interfaccia org.encog.engine.network.activation.ActivationFunction.L‟interfaccia dichiara tre metodi void activationFunction(double[] d) void derivativeFunction(double[] d) boolean hasDerivative()La logica applicativa della funzione d‟attivazione si trova all‟interno del metodo activationFunction.Il secondo metodo è implementato da tutte quelle funzioni che si intende utilizzare anche per l‟addestramento basato su propagazione.Il terzo metodo è utilizzato per capire, in maniera veloce, se una funzione è differenziabile oppure no. REALIZZATO DA: VALERIO CAPOZIO 77
  77. 77. SCELTA DELLA FUNZIONI D‟ATTIVAZIONELa scelta di quale funzione d‟attivazione utilizzare può essere guidata da alcuni parametri quali: Il tipo di rete neurale che si intende utilizzare. Il tipo d‟addestramento che si intende utilizzare. Il range in cui l‟output deve ricadere.Oltre a questi criteri, utili per orientarsi nella scelta iniziale, sono poi sempre i dati a guidare e validare le scelte compiute. REALIZZATO DA: VALERIO CAPOZIO 78
  78. 78. ACTIVATIONBIPOLARUtilizzata quando si ha la necessità di ottenere un output bipolare.Per qualunque valore passatole l‟output ottenuto può essere solo 1 o -1 𝑥>0 1 𝑓 𝑥 = 𝑥 ≤0 −1Non è una funzione differenziabile. REALIZZATO DA: VALERIO CAPOZIO 79
  79. 79. ACTIVATIONCOMPETITIVEUtilizzata per forzare solo un gruppo di neuroni a vincere.Vince il gruppo di neuroni che ha l‟output maggiore.La grandezza dei gruppi è definibile mediante parametro.Tutti i neuroni facenti parte del gruppo vincente avranno lo stesso valore, gli altri saranno invece impostati a 0.Non è una funzione differenziabile.Spesso utilizzata nelle reti di tipo SOM. REALIZZATO DA: VALERIO CAPOZIO 80
  80. 80. ACTIVATIONGAUSSIANBasata sulla funzione Gaussiana, produce la classica forma a campana. 𝑥−𝑏 2 − 𝑓 𝑥 = 𝑎𝑒 2𝑐 2Dove a rappresenta l‟altezza del picco della curva, b rappresenta la posizione della curva, c rappresenta la larghezza della curva.È una funzione differenziabile. a b c REALIZZATO DA: VALERIO CAPOZIO 81
  81. 81. ACTIVATIONLINEARNon è una vera e propria funzione d‟attivazione.Implementa semplicemente una funzione lineare del tipo : 𝑓 𝑥 = 𝑥Questa funzione è utilizzata principalmente per specificare funzioni d‟attivazioni fittizie per reti che non ne fanno uso come alcuni tipi di SOM.È una funzione differenziabile. REALIZZATO DA: VALERIO CAPOZIO 82
  82. 82. ACTIVATIONLOGUtilizza un algoritmo basato sulla funzione logaritmo. 𝑥 ≥ 0 log(1 + 𝑥) 𝑓 𝑥 = 𝑥 < 0 − log(1 − 𝑥)Produce una curva simile a quella della TANH.Può essere utilizzata per prevenire la saturazione.È una funzione differenziabile. REALIZZATO DA: VALERIO CAPOZIO 83
  83. 83. ACTIVATIONSIGMOIDBasata sulla funzione del sigmoide. 1 𝑓 𝑥 = 1 + 𝑒 −𝑥Ha un output sempre positivo.È una funzione differenziabile. Nessun output negativo REALIZZATO DA: VALERIO CAPOZIO 84
  84. 84. ACTIVATIONSINBasata sulla funzione seno. 𝑓 𝑥 = sin 𝑥Utilizzata di rado.È una funzione differenziabile.Restituisce sia valori di output positivi che negativi. REALIZZATO DA: VALERIO CAPOZIO 85
  85. 85. ACTIVATIONSOFTMAXAppiattisce tutti i valori di input in modo che la loro somma sia uguale a uno.Inizia sommando l‟esponente naturale di tutti i valori in input, quindi ricalcola ogni valore di input come il rapporto tra lo stesso e la somma calcolata in precedenza.È una funzione differenziabile. double sum = 0; for (int i = 0; i < d.length; i++) { d[i] = BoundMath.exp(d[i]); sum += d[i]; } for (int i = 0; i < d.length; i++) { d[i] = d[i] / sum; } REALIZZATO DA: VALERIO CAPOZIO 86
  86. 86. ACTIVATIONTANHBasata sulla funzione della tangente iperbolica. 𝑒 2𝑥 − 1 𝑓 𝑥 = 2𝑥 𝑒 +1È probabilmente la funzione d‟attivazione più comune.È una funzione differenziabile. REALIZZATO DA: VALERIO CAPOZIO 87
  87. 87. REALIZZATO DA: VALERIO CAPOZIO 88
  88. 88. REALIZZATO DA: VALERIO CAPOZIO 89
  89. 89. LIMITI DELLE RETI FEED-FORWARDLe reti di tipo feed-forward sono reti in cui la computazione si svolge sempre „„in avanti‟‟.Le reti di tipo feed-forward necessitano di un addestramento di tipo supervisionato.In questo tipo di reti non sono quindi consentiti cicli.Le reti feed-forward sono stateless.In caso di dati provenienti da sequenze temporali può essere oneroso realizzare un architettura feed-forward che ottenga buoni risultati. REALIZZATO DA: VALERIO CAPOZIO 90
  90. 90. INTRODUZIONE ALLE RETI SOMLe reti neurali Self Organizing Map sono una particolare tipologia di rete neurale utilizzata per task di clusterizzazione.Possono essere molto utili per identificare similarità tra i dati.Le reti SOM sono addestrate mediante algoritmi d‟apprendimento non supervisionati.Encog consente di utilizzare le reti SOM e riserva loro un set di classi specifiche organizzate all‟interno del package org.encog.neural.som.In Encog una rete SOM è implementata come una rete di due layer (input-output). REALIZZATO DA: VALERIO CAPOZIO 91
  91. 91. ADDESTRAMENTO DELLE RETI SOM (1/2)L‟addestramento procede per un numero di iterazioni prefissato.Tra il pattern di training e i pesi viene calcolata la distanza euclidea: 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒 = 𝑝1 − 𝑤1 2 + ⋯ + 𝑝 𝑛 − 𝑤 𝑛 2In questo modo è possibile quantificare la differenza tra ogni vettore dei pesi e il pattern di input.La distanza è calcolata per ogni neurone di output. Il neurone con la distanza minima è detto Best Matching Unit (BMU).Il BMU è il neurone che apprende maggiormente dal pattern, mentre i suoi vicini imparano meno. REALIZZATO DA: VALERIO CAPOZIO 92
  92. 92. ADDESTRAMENTO DELLE RETI SOM (2/2)Individuato il BMU si itera su tutti i pesi aggiornandone il valore sulla base della funzione di apprendimento 𝑊𝑣 𝑡 + 1 = 𝑊𝑣 𝑡 + 𝜃 𝑣, 𝑡 𝛼 𝑡 𝐷 𝑡 − 𝑊𝑣 𝑡Dove  t rappresenta il numero dell‟iterazione.  D(t)-Wv(t) rappresenta la differenza tra il peso corrente e il vettore di input.  𝛉 𝐯, 𝐭 rappresenta la funzione di vicinanza.  𝛂 𝐭 rappresenta un learning rate decrescente.La funzione di vicinanza considera quanto uno neurone sia vicino al BMU.Il learning rate influenza l‟apprendimento di un neurone, così come avviene anche nella backpropagation. REALIZZATO DA: VALERIO CAPOZIO 93
  93. 93. INTRODUZIONE ALLE RETI NEURALI RICORRENTILe reti neurali ricorrenti presentano le stesse caratteristiche delle reti feed-forward, ma in più consentono di gestire dei cicli.In particolare sono consentite conessioni:  Verso lo stesso livello.  Verso livelli precedenti.La presenza di questi cicli consente alle reti di avere uno stato.Alcune topologie hanno inoltre un livello particolare, detto livello di contesto. REALIZZATO DA: VALERIO CAPOZIO 94
  94. 94. RETI NEURALI RICORRENTI IN ENCOGEncog mette a disposizioni 4 topologie di reti neurali ricorrenti:  Hopfield.  Boltzmann.  Elman.  Jordan.Queste sono le 4 topologie ricorrenti tipicamente più utilizzate.Le prime due sono architetturalmente più semplici:  Sono auto-connesse.Le ultime due sono più complesse:  Hanno un livello di contesto. REALIZZATO DA: VALERIO CAPOZIO 95
  95. 95. RETE DI HOPFIELDLa rete di Hopfield è, architetturalmente, estremamente semplice.È composta di un solo livello che ha funzione sia di input che di output e non gestisce livelli nascosti.Tutti i neuroni della rete sono totalmente connessi gli uni agli altri.  Non sono consentite connessioni tra un neurone e se stesso.La rete di Hopfield accetta solo una funzione d‟attivazione di tipo Bipolare.  Per ogni neurone di output il valore sarà solo 1 o -1. REALIZZATO DA: VALERIO CAPOZIO 96
  96. 96. RETE DI BOLTZMANNLa macchina di Boltzmann è la controparte stocastica della rete di Hopfield ed è basata su un approccio di tipo generativo.Composta da un singolo livello.Il grado di casualità della rete dipende dalla „„temperatura corrente‟‟ della rete stessa.  Più „„raffredda‟‟ e minore è la casualità.Accetta come funzione d‟attivazione solo la funzione Bipolare.Utili per approcciare problemi di tipo combinatorio (richiedono molto tempo).Spesso viene scartata per problemi di performance non banali. REALIZZATO DA: VALERIO CAPOZIO 97
  97. 97. RETE DI ELMANLa rete di Elman ha un funzionamento molto simile alle reti di tipo feed-forward e può utilizzare gli stessi metodi d‟addestramento.La rete di Elman è composta di tre livelli classici:  Input  Output  HiddenÈ composta inoltre di un livello di contesto che consente il feedback.  Il livello di contesto è connesso al livello hidden tramite un‟associazione 1:1Il livello di contesto è privo di pesi e quindi non può apprendere, serve solo per fornire la rete di memoria. REALIZZATO DA: VALERIO CAPOZIO 98
  98. 98. RETE DI JORDANLa rete di Jordan è molto simile alle rete di Helman per topologia.È composta di 4 livelli:  Input.  Output.  Hidden.  Contesto.Nella rete di Jordan il livello di contesto è collegato al livello hidden attraverso connessioni pesate, ma anche al livello di output da cui riceve il feedback. REALIZZATO DA: VALERIO CAPOZIO 99
  99. 99. RIFERIMENTIReti Neurali http://www.cs.unibo.it/babaoglu/courses/cas/resources/tutorials/Neural_Nets.pdfEncog: http://www.heatonresearch.com/encog https://github.com/downloads/encog/encog-java-core/encog-core-3.0.0- release.zip REALIZZATO DA: VALERIO CAPOZIO 100
  100. 100. Questo opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 2.5 Italia REALIZZATO DA: VALERIO CAPOZIO 101

×