SlideShare uma empresa Scribd logo
1 de 101
AGENDA DEL CORSO
PARTE I
 Introduzione all‟Intelligenza Artificiale e al Machine Learning.
 Introduzione alle Reti Neurali.                                                    E
 Encog 3.0.
 Primi Esempi di Reti Neurali.                                                      S
PARTE II                                                                             E
 Addestramento supervisionato.
 Normalizzazione dei dati.                                                          R
 Valutazione del modello addestrato.
 Classi e metodi d‟utilità per l‟addestramento.                                     C
PARTE III                                                                            I
 Funzioni d‟attivazione.
PARTE IV                                                                             Z
 Altre tipologie di Reti Neurali.
                                                                                     I


                                                    REALIZZATO DA: VALERIO CAPOZIO       2
REALIZZATO DA: VALERIO CAPOZIO   3
REALIZZATO DA: VALERIO CAPOZIO   4
INTRODUZIONE ALL‟ IA
L'espressione "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 l'applicazione 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
INTRODUZIONE AL MACHINE LEARNING
Il 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
PRINCIPALI APPROCCI
Alberi 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
PRINCIPALI APPROCCI




                      REALIZZATO DA: VALERIO CAPOZIO   8
ALGORITMI D‟APPRENDIMENTO
Le 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
ADDESTRAMENTO SUPERVISIONATO
Il sistema apprende una funzione dell‟input partendo da esempi di coppie input-
      output
Esempio: Previsioni del tempo
Input: coppie temperatura – pressione
Output: 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
ADDESTRAMENTO SUPERVISIONATO RINFORZATO
Il 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
ADDESTRAMENTO NON SUPERVISIONATO
Il 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
TIPOLOGIA DI PROBLEMI
Classificazione:        Regressione:
  output discreto         output continuo




Codominio y={0…9}       Codominio 𝑦 ∈ 𝑅


                           REALIZZATO DA: VALERIO CAPOZIO   13
PROCEDURA DI APPRENDIMENTO
                      Training Set                                 Testing Set


La 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
ESEMPI DI REGRESSIONE




 A) Under-fitting

 B) Ok

 C)Over-fitting




                        REALIZZATO DA: VALERIO CAPOZIO   15
OVER-FITTING
Adattare 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 sul
validation set.


In presenza di un errore maggiore sul
validation set si è in over-fitting.




                                                   REALIZZATO DA: VALERIO CAPOZIO        16
N-FOLD CROSS VALIDATION
Per 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
3-FOLD CROSS VALIDATION




Addestro 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.05
MSE quadratico 1.11
MSE unisci punti 2.93



                                                         REALIZZATO DA: VALERIO CAPOZIO   18
QUICK TRICKS
Azioni che possono essere prese in considerazione per uscire da situazioni di
   underfitting sono:


 Inserire feature aggiuntive

 Adottare un modello più complesso


Azioni 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
SKEWED DATA
Con 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à
       Ecc

Esistono tecniche per tentare di superare questo problema:
    Applicare un costo di errata classificazione
    Under sampling
    Over sampling

Utilizzare misure specifiche per valutare il modello ottenuto.




                                                    REALIZZATO DA: VALERIO CAPOZIO   20
REALIZZATO DA: VALERIO CAPOZIO   21
NEURAL NETWORK
Il 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.                                     Sinapsi
Le 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
ARTIFICIAL NEURAL NETWORK
Il 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
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
COMPARAZIONE TRA MODELLI
                                         Input


       Sinapsi




                                          F.Attivazio
 Dendriti                                     ne
                  Assone
                                         Output



                      REALIZZATO DA: VALERIO CAPOZIO    25
CONNESSIONI TRA NEURONI
L‟utilizzo di più neuroni può dar vita a diverse topologie di rete:




           Single Layer                                    Multi Layer



                                                     REALIZZATO DA: VALERIO CAPOZIO   26
APPRENDIMENTO IN UNA RETE NEURALE
Una 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
REALIZZATO DA: VALERIO CAPOZIO   28
ENCOG 3.0
Encog è un Framework sviluppato sia in Java che .Net


Nato 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
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
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
ADDESTRAMENTO DI UNA RETE NEURALE CON
ENCOG (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
ADDESTRAMENTO DI UNA RETE NEURALE CON
ENCOG (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
ESECUZIONE DI UNA RETE NEURALE CON
ENCOG
Per 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
REALIZZATO DA: VALERIO CAPOZIO   35
LA NOSTRA PRIMA RETE
Feed-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 pesati


Un 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
PRIMI ESEMPI: FUNZIONE NOT
                   X1         Y
                   0          1
                   1          0




                        -1
              X1                    Y


                   Threshold(Y)=0



                                  REALIZZATO DA: VALERIO CAPOZIO   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
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
PRIMI ESEMPI: FUNZIONE XOR
             X1    X2        Y
             0      0        0
             0      1        1
             1      0        1
             1      1        0




                  ?
                        REALIZZATO DA: VALERIO CAPOZIO   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
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
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
HIDDEN LAYER
Servono 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
REALIZZATO DA: VALERIO CAPOZIO   45
REALIZZATO DA: VALERIO CAPOZIO   46
ADDESTRAMENTO SUPERVISIONATO
Nella 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
DISCESA DEL GRADIENTE
La 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
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
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
BACKPROPAGATION
L‟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
MANHATTAN UPDATE RULE
L‟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
RESILIENT PROPAGATION
Il 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
SVANTAGGI DELL‟ADDESTRAMENTO A
PROPAGAZIONE
Sono 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
ADDESTRAMENTO A PROPAGAZIONE E
MULTITHREADING (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
ADDESTRAMENTO A PROPAGAZIONE E
MULTITHREADING (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
REALIZZATO DA: VALERIO CAPOZIO   57
INTRODUZIONE ALLA NORMALIZZAZIONE
Spesso 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
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
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
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
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
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
REALIZZATO DA: VALERIO CAPOZIO   64
MEAN SQUARED ERROR
L‟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
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                il
Valori TRUE classificati                                   sistema confonde due classi.
come Negativi
Errore di Tipo II


                                                             REALIZZATO DA: VALERIO CAPOZIO   66
ACCURACY
L‟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
PRECISION
La     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     False
Questa 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
RECALL
La      Recall è una misura
     statistica      utilizzata per                                      Valori Reali
     quantificare quanto bene
     un classificatore identifichi                                   True          False
     risultati positivi.




                                      Valori Predetti
                                                        Positive True Positive     False
Questa 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
REALIZZATO DA: VALERIO CAPOZIO   70
LEGGERE DATI DA FONTI ESTERNE
Encog 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
METODI UTILI DI MLTRAIN
L‟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
INTERFACCIA D‟UTILITÀ ENCOGPERSISTOR
Encog 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
REALIZZATO DA: VALERIO CAPOZIO   74
REALIZZATO DA: VALERIO CAPOZIO   75
INTRODUZIONE ALLE FUNZIONI D‟ATTIVAZIONE
La 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
INTERFACCIA ACTIVATIONFUCTION
In 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
SCELTA DELLA FUNZIONI D‟ATTIVAZIONE
La 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
ACTIVATIONBIPOLAR
Utilizzata 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 −1

Non è una funzione differenziabile.




                                                   REALIZZATO DA: VALERIO CAPOZIO   79
ACTIVATIONCOMPETITIVE
Utilizzata 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
ACTIVATIONGAUSSIAN
Basata sulla funzione Gaussiana, produce la classica forma a campana.
                                                   𝑥−𝑏 2
                                               −
                                    𝑓 𝑥 = 𝑎𝑒       2𝑐 2

Dove 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
ACTIVATIONLINEAR
Non è 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
ACTIVATIONLOG
Utilizza 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
ACTIVATIONSIGMOID
Basata sulla funzione del sigmoide.
                                                 1
                                      𝑓 𝑥 =
                                              1 + 𝑒 −𝑥
Ha un output sempre positivo.
È una funzione differenziabile.




                                                         Nessun output
                                                           negativo

                                                     REALIZZATO DA: VALERIO CAPOZIO   84
ACTIVATIONSIN
Basata sulla funzione seno.
                                          𝑓 𝑥 = sin 𝑥
Utilizzata di rado.
È una funzione differenziabile.
Restituisce sia valori di output positivi che negativi.




                                                        REALIZZATO DA: VALERIO CAPOZIO   85
ACTIVATIONSOFTMAX
Appiattisce 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
ACTIVATIONTANH
Basata sulla funzione della tangente iperbolica.
                                             𝑒 2𝑥 − 1
                                      𝑓 𝑥 = 2𝑥
                                             𝑒 +1
È probabilmente la funzione d‟attivazione più comune.
È una funzione differenziabile.




                                                    REALIZZATO DA: VALERIO CAPOZIO   87
REALIZZATO DA: VALERIO CAPOZIO   88
REALIZZATO DA: VALERIO CAPOZIO   89
LIMITI DELLE RETI FEED-FORWARD
Le 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
INTRODUZIONE ALLE RETI SOM
Le 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
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 + ⋯ + 𝑝 𝑛 − 𝑤 𝑛 2


In 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
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
INTRODUZIONE ALLE RETI NEURALI RICORRENTI
Le 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
RETI NEURALI RICORRENTI IN ENCOG
Encog 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
RETE DI HOPFIELD
La 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
RETE DI BOLTZMANN
La 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
RETE DI ELMAN
La 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:1
Il livello di contesto è privo di pesi
      e quindi non può apprendere,
      serve solo per fornire la rete di
      memoria.



                                                   REALIZZATO DA: VALERIO CAPOZIO   98
RETE DI JORDAN
La 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
RIFERIMENTI
Reti Neurali
 http://www.cs.unibo.it/babaoglu/courses/cas/resources/tutorials/Neural_Nets.pdf


Encog:
 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
Questo opera è distribuita con
 licenza Creative Commons
 Attribuzione - Non commerciale
 - Non opere derivate 2.5 Italia

           REALIZZATO DA: VALERIO CAPOZIO   101

Mais conteúdo relacionado

Mais procurados

Introduction to Genetic Algorithms 2014
Introduction to Genetic Algorithms 2014Introduction to Genetic Algorithms 2014
Introduction to Genetic Algorithms 2014Aleksander Stensby
 
Artificial Neural Networks for NIU session 2016 17
Artificial Neural Networks for NIU session 2016 17 Artificial Neural Networks for NIU session 2016 17
Artificial Neural Networks for NIU session 2016 17 Prof. Neeta Awasthy
 
Ml2 train test-splits_validation_linear_regression
Ml2 train test-splits_validation_linear_regressionMl2 train test-splits_validation_linear_regression
Ml2 train test-splits_validation_linear_regressionankit_ppt
 
Introduction to Generative Adversarial Networks
Introduction to Generative Adversarial NetworksIntroduction to Generative Adversarial Networks
Introduction to Generative Adversarial NetworksBennoG1
 
Digit recognition
Digit recognitionDigit recognition
Digit recognitionbtandale
 
Neural Networks: Multilayer Perceptron
Neural Networks: Multilayer PerceptronNeural Networks: Multilayer Perceptron
Neural Networks: Multilayer PerceptronMostafa G. M. Mostafa
 
Lecture 5 backpropagation
Lecture 5 backpropagationLecture 5 backpropagation
Lecture 5 backpropagationParveenMalik18
 
Destek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector MachineDestek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector MachineOğuzhan TAŞ Akademi
 
SinGAN - Learning a Generative Model from a Single Natural Image
SinGAN - Learning a Generative Model from a Single Natural ImageSinGAN - Learning a Generative Model from a Single Natural Image
SinGAN - Learning a Generative Model from a Single Natural ImageJishnu P
 
Cuckoo Search Algorithm - Beyazıt Kölemen
Cuckoo Search Algorithm - Beyazıt KölemenCuckoo Search Algorithm - Beyazıt Kölemen
Cuckoo Search Algorithm - Beyazıt KölemenBeyazıt Kölemen
 
Deep convolutional neural fields for depth estimation from a single image
Deep convolutional neural fields for depth estimation from a single imageDeep convolutional neural fields for depth estimation from a single image
Deep convolutional neural fields for depth estimation from a single imageWei Yang
 
Color based image processing , tracking and automation using matlab
Color based image processing , tracking and automation using matlabColor based image processing , tracking and automation using matlab
Color based image processing , tracking and automation using matlabKamal Pradhan
 
Generative Adversarial Network (GAN) for Image Synthesis
Generative Adversarial Network (GAN) for Image SynthesisGenerative Adversarial Network (GAN) for Image Synthesis
Generative Adversarial Network (GAN) for Image SynthesisRiwaz Mahat
 
Particle swarm optimization
Particle swarm optimizationParticle swarm optimization
Particle swarm optimizationHanya Mohammed
 

Mais procurados (20)

Introduction to Genetic Algorithms 2014
Introduction to Genetic Algorithms 2014Introduction to Genetic Algorithms 2014
Introduction to Genetic Algorithms 2014
 
Artificial Neural Networks for NIU session 2016 17
Artificial Neural Networks for NIU session 2016 17 Artificial Neural Networks for NIU session 2016 17
Artificial Neural Networks for NIU session 2016 17
 
Ml2 train test-splits_validation_linear_regression
Ml2 train test-splits_validation_linear_regressionMl2 train test-splits_validation_linear_regression
Ml2 train test-splits_validation_linear_regression
 
Introduction to Generative Adversarial Networks
Introduction to Generative Adversarial NetworksIntroduction to Generative Adversarial Networks
Introduction to Generative Adversarial Networks
 
Machine learning
Machine learningMachine learning
Machine learning
 
Swarm intelligence algorithms
Swarm intelligence algorithmsSwarm intelligence algorithms
Swarm intelligence algorithms
 
Digit recognition
Digit recognitionDigit recognition
Digit recognition
 
Neural Networks: Multilayer Perceptron
Neural Networks: Multilayer PerceptronNeural Networks: Multilayer Perceptron
Neural Networks: Multilayer Perceptron
 
Autoencoder
AutoencoderAutoencoder
Autoencoder
 
Lecture 5 backpropagation
Lecture 5 backpropagationLecture 5 backpropagation
Lecture 5 backpropagation
 
Destek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector MachineDestek Vektör Makineleri - Support Vector Machine
Destek Vektör Makineleri - Support Vector Machine
 
SinGAN - Learning a Generative Model from a Single Natural Image
SinGAN - Learning a Generative Model from a Single Natural ImageSinGAN - Learning a Generative Model from a Single Natural Image
SinGAN - Learning a Generative Model from a Single Natural Image
 
Neural network
Neural networkNeural network
Neural network
 
PSO
PSOPSO
PSO
 
Cuckoo Search Algorithm - Beyazıt Kölemen
Cuckoo Search Algorithm - Beyazıt KölemenCuckoo Search Algorithm - Beyazıt Kölemen
Cuckoo Search Algorithm - Beyazıt Kölemen
 
Deep convolutional neural fields for depth estimation from a single image
Deep convolutional neural fields for depth estimation from a single imageDeep convolutional neural fields for depth estimation from a single image
Deep convolutional neural fields for depth estimation from a single image
 
Color based image processing , tracking and automation using matlab
Color based image processing , tracking and automation using matlabColor based image processing , tracking and automation using matlab
Color based image processing , tracking and automation using matlab
 
Meta learning tutorial
Meta learning tutorialMeta learning tutorial
Meta learning tutorial
 
Generative Adversarial Network (GAN) for Image Synthesis
Generative Adversarial Network (GAN) for Image SynthesisGenerative Adversarial Network (GAN) for Image Synthesis
Generative Adversarial Network (GAN) for Image Synthesis
 
Particle swarm optimization
Particle swarm optimizationParticle swarm optimization
Particle swarm optimization
 

Destaque

RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE
RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANERETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE
RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANEFausto Intilla
 
Reti Neurali
Reti NeuraliReti Neurali
Reti NeuraliAgabiti25
 
Reti Neurali Su Personal Computer + Fuzzy Logic
Reti Neurali Su Personal Computer + Fuzzy LogicReti Neurali Su Personal Computer + Fuzzy Logic
Reti Neurali Su Personal Computer + Fuzzy LogicFausto Intilla
 
(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...
(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...
(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...emapesce
 
MASTER "re-design Medicine" THE BOOKLET
MASTER "re-design Medicine" THE BOOKLETMASTER "re-design Medicine" THE BOOKLET
MASTER "re-design Medicine" THE BOOKLETGiorgia Zunino
 
Smau Firenze 2015 - Startupitalia!
Smau Firenze 2015 - Startupitalia!Smau Firenze 2015 - Startupitalia!
Smau Firenze 2015 - Startupitalia!SMAU
 
"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME
"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME
"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOMEConcordia Srl
 
Game of Thrones Infographic
Game of Thrones InfographicGame of Thrones Infographic
Game of Thrones InfographicValerio Capozio
 
Sissa presentazione crisci
Sissa presentazione crisciSissa presentazione crisci
Sissa presentazione crisciAlfonso Crisci
 
Tecniche basate su machine learning per la determinazione del profilo di un a...
Tecniche basate su machine learning per la determinazione del profilo di un a...Tecniche basate su machine learning per la determinazione del profilo di un a...
Tecniche basate su machine learning per la determinazione del profilo di un a...kylanee
 
Introduzione Alle Reti Neurali (Marco Botta)
Introduzione Alle Reti Neurali (Marco Botta)Introduzione Alle Reti Neurali (Marco Botta)
Introduzione Alle Reti Neurali (Marco Botta)Fausto Intilla
 
[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...
[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...
[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...kylanee
 
Introduzione ai Big Data e alla scienza dei dati - I formati dati
Introduzione ai Big Data e alla scienza dei dati - I formati datiIntroduzione ai Big Data e alla scienza dei dati - I formati dati
Introduzione ai Big Data e alla scienza dei dati - I formati datiVincenzo Manzoni
 
Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010
Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010
Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010makirs
 
Le tecnologie dei Big Data
Le tecnologie dei Big DataLe tecnologie dei Big Data
Le tecnologie dei Big DataVincenzo Manzoni
 
Big data e analisi predittiva
Big data e analisi predittivaBig data e analisi predittiva
Big data e analisi predittivaAntonio Bucciol
 
Azure Machine Learning (Italian)
Azure Machine Learning (Italian)Azure Machine Learning (Italian)
Azure Machine Learning (Italian)Davide Mauri
 

Destaque (20)

RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE
RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANERETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE
RETI NEURALI ARTIFICIALI E RETI NEURALI BAYESIANE
 
Reti Neurali
Reti NeuraliReti Neurali
Reti Neurali
 
Reti Neurali Su Personal Computer + Fuzzy Logic
Reti Neurali Su Personal Computer + Fuzzy LogicReti Neurali Su Personal Computer + Fuzzy Logic
Reti Neurali Su Personal Computer + Fuzzy Logic
 
(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...
(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...
(Italian) Applicazione dei metodi quasi-Newton per la convergenza delle reti ...
 
Previsione della radiazione solare mediante modelli basati su reti neurali ar...
Previsione della radiazione solare mediante modelli basati su reti neurali ar...Previsione della radiazione solare mediante modelli basati su reti neurali ar...
Previsione della radiazione solare mediante modelli basati su reti neurali ar...
 
MASTER "re-design Medicine" THE BOOKLET
MASTER "re-design Medicine" THE BOOKLETMASTER "re-design Medicine" THE BOOKLET
MASTER "re-design Medicine" THE BOOKLET
 
Smau Firenze 2015 - Startupitalia!
Smau Firenze 2015 - Startupitalia!Smau Firenze 2015 - Startupitalia!
Smau Firenze 2015 - Startupitalia!
 
"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME
"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME
"APPLICAZIONI DI MACHINE LEARNING NEL DIGITAL OUT OF HOME
 
Game of Thrones Infographic
Game of Thrones InfographicGame of Thrones Infographic
Game of Thrones Infographic
 
Sissa presentazione crisci
Sissa presentazione crisciSissa presentazione crisci
Sissa presentazione crisci
 
Progetto RACES
Progetto RACES Progetto RACES
Progetto RACES
 
Tecniche basate su machine learning per la determinazione del profilo di un a...
Tecniche basate su machine learning per la determinazione del profilo di un a...Tecniche basate su machine learning per la determinazione del profilo di un a...
Tecniche basate su machine learning per la determinazione del profilo di un a...
 
AV_slides
AV_slidesAV_slides
AV_slides
 
Introduzione Alle Reti Neurali (Marco Botta)
Introduzione Alle Reti Neurali (Marco Botta)Introduzione Alle Reti Neurali (Marco Botta)
Introduzione Alle Reti Neurali (Marco Botta)
 
[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...
[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...
[SLIDE] Tecniche basate su machine learning per la determinazione del profilo...
 
Introduzione ai Big Data e alla scienza dei dati - I formati dati
Introduzione ai Big Data e alla scienza dei dati - I formati datiIntroduzione ai Big Data e alla scienza dei dati - I formati dati
Introduzione ai Big Data e alla scienza dei dati - I formati dati
 
Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010
Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010
Presentazione Manuel Kirschner, Phd symposium UniBZ, 12/2010
 
Le tecnologie dei Big Data
Le tecnologie dei Big DataLe tecnologie dei Big Data
Le tecnologie dei Big Data
 
Big data e analisi predittiva
Big data e analisi predittivaBig data e analisi predittiva
Big data e analisi predittiva
 
Azure Machine Learning (Italian)
Azure Machine Learning (Italian)Azure Machine Learning (Italian)
Azure Machine Learning (Italian)
 

Semelhante a Corso Introduttivo alle Reti Neurali

Identificare feature significative per l’analisi nell’informatica forense uti...
Identificare feature significative per l’analisi nell’informatica forense uti...Identificare feature significative per l’analisi nell’informatica forense uti...
Identificare feature significative per l’analisi nell’informatica forense uti...Antonio Notarangelo
 
Blockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanzaBlockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanzaAlessandro Greppi
 
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittivaAZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittivaAriel Cedola
 
Pres Tesi LM-2016+transcript_ita
Pres Tesi LM-2016+transcript_itaPres Tesi LM-2016+transcript_ita
Pres Tesi LM-2016+transcript_itaDaniele Ciriello
 
Simulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginfSimulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginfIonutAlexandruPascar
 
Java Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningJava Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningAndrea Ciccotta
 
La metodologia statistica nel data mining
La metodologia statistica nel data miningLa metodologia statistica nel data mining
La metodologia statistica nel data miningFrancesco Tamburini
 
CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0
CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0
CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0walk2talk srl
 
Cos'è il Machine Learning?
Cos'è il Machine Learning?Cos'è il Machine Learning?
Cos'è il Machine Learning?Luca Naso
 
JugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningJugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningOnofrio Panzarino
 
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...Leonardo Di Donato
 
Laboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniLaboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniMajong DevJfu
 
Reachability properties &graphical user interface for cex module
Reachability properties &graphical user interface for cex module Reachability properties &graphical user interface for cex module
Reachability properties &graphical user interface for cex module Giuseppe Sessa
 
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”RiccardoWeis
 
Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams graphitech
 
COUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm RoutinesCOUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm RoutinesDavidePanarella
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven DevelopmentEnnio Masi
 
Sperimentazione di Tecnologie di Deep Learning su Sistemi Embedded
Sperimentazione di Tecnologie di Deep Learning su Sistemi EmbeddedSperimentazione di Tecnologie di Deep Learning su Sistemi Embedded
Sperimentazione di Tecnologie di Deep Learning su Sistemi EmbeddedMathiasPoloPerucchin
 

Semelhante a Corso Introduttivo alle Reti Neurali (20)

Identificare feature significative per l’analisi nell’informatica forense uti...
Identificare feature significative per l’analisi nell’informatica forense uti...Identificare feature significative per l’analisi nell’informatica forense uti...
Identificare feature significative per l’analisi nell’informatica forense uti...
 
Blockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanzaBlockchain e AI: verso una nuova finanza
Blockchain e AI: verso una nuova finanza
 
AV_tesi_v5
AV_tesi_v5AV_tesi_v5
AV_tesi_v5
 
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittivaAZURE Machine Learning Studio: applicazione alla manutenzione predittiva
AZURE Machine Learning Studio: applicazione alla manutenzione predittiva
 
Pres Tesi LM-2016+transcript_ita
Pres Tesi LM-2016+transcript_itaPres Tesi LM-2016+transcript_ita
Pres Tesi LM-2016+transcript_ita
 
Simulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginfSimulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginf
 
Java Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningJava Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine Learining
 
La metodologia statistica nel data mining
La metodologia statistica nel data miningLa metodologia statistica nel data mining
La metodologia statistica nel data mining
 
CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0
CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0
CCI 2019 - Strumenti Azure per l'Anomaly Detection in ambito Industria 4.0
 
Cos'è il Machine Learning?
Cos'è il Machine Learning?Cos'è il Machine Learning?
Cos'è il Machine Learning?
 
JugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learningJugMarche: Machine learning: usi pratici di supervised learning
JugMarche: Machine learning: usi pratici di supervised learning
 
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
 
Laboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniLaboratorio Programmazione: Funzioni
Laboratorio Programmazione: Funzioni
 
Reachability properties &graphical user interface for cex module
Reachability properties &graphical user interface for cex module Reachability properties &graphical user interface for cex module
Reachability properties &graphical user interface for cex module
 
Le reti neurali
Le reti neuraliLe reti neurali
Le reti neurali
 
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
 
Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams
 
COUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm RoutinesCOUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven Development
 
Sperimentazione di Tecnologie di Deep Learning su Sistemi Embedded
Sperimentazione di Tecnologie di Deep Learning su Sistemi EmbeddedSperimentazione di Tecnologie di Deep Learning su Sistemi Embedded
Sperimentazione di Tecnologie di Deep Learning su Sistemi Embedded
 

Corso Introduttivo alle Reti Neurali

  • 1.
  • 2. AGENDA DEL CORSO PARTE I  Introduzione all‟Intelligenza Artificiale e al Machine Learning.  Introduzione alle Reti Neurali. E  Encog 3.0.  Primi Esempi di Reti Neurali. S PARTE II E  Addestramento supervisionato.  Normalizzazione dei dati. R  Valutazione del modello addestrato.  Classi e metodi d‟utilità per l‟addestramento. C PARTE III I  Funzioni d‟attivazione. PARTE IV Z  Altre tipologie di Reti Neurali. I REALIZZATO DA: VALERIO CAPOZIO 2
  • 5. INTRODUZIONE ALL‟ IA L'espressione "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 l'applicazione 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
  • 6. INTRODUZIONE AL MACHINE LEARNING Il 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
  • 7. PRINCIPALI APPROCCI Alberi 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
  • 8. PRINCIPALI APPROCCI REALIZZATO DA: VALERIO CAPOZIO 8
  • 9. ALGORITMI D‟APPRENDIMENTO Le 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
  • 10. ADDESTRAMENTO SUPERVISIONATO Il sistema apprende una funzione dell‟input partendo da esempi di coppie input- output Esempio: Previsioni del tempo Input: coppie temperatura – pressione Output: 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
  • 11. ADDESTRAMENTO SUPERVISIONATO RINFORZATO Il 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
  • 12. ADDESTRAMENTO NON SUPERVISIONATO Il 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
  • 13. TIPOLOGIA DI PROBLEMI Classificazione: Regressione: output discreto output continuo Codominio y={0…9} Codominio 𝑦 ∈ 𝑅 REALIZZATO DA: VALERIO CAPOZIO 13
  • 14. PROCEDURA DI APPRENDIMENTO Training Set Testing Set La 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
  • 15. ESEMPI DI REGRESSIONE  A) Under-fitting  B) Ok  C)Over-fitting REALIZZATO DA: VALERIO CAPOZIO 15
  • 16. OVER-FITTING Adattare 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 sul validation set. In presenza di un errore maggiore sul validation set si è in over-fitting. REALIZZATO DA: VALERIO CAPOZIO 16
  • 17. N-FOLD CROSS VALIDATION Per 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
  • 18. 3-FOLD CROSS VALIDATION Addestro 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.05 MSE quadratico 1.11 MSE unisci punti 2.93 REALIZZATO DA: VALERIO CAPOZIO 18
  • 19. QUICK TRICKS Azioni che possono essere prese in considerazione per uscire da situazioni di underfitting sono:  Inserire feature aggiuntive  Adottare un modello più complesso Azioni 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
  • 20. SKEWED DATA Con 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à  Ecc Esistono tecniche per tentare di superare questo problema:  Applicare un costo di errata classificazione  Under sampling  Over sampling Utilizzare misure specifiche per valutare il modello ottenuto. REALIZZATO DA: VALERIO CAPOZIO 20
  • 22. NEURAL NETWORK Il 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. Sinapsi Le 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
  • 23. ARTIFICIAL NEURAL NETWORK Il 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
  • 24. 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
  • 25. COMPARAZIONE TRA MODELLI Input Sinapsi F.Attivazio Dendriti ne Assone Output REALIZZATO DA: VALERIO CAPOZIO 25
  • 26. CONNESSIONI TRA NEURONI L‟utilizzo di più neuroni può dar vita a diverse topologie di rete: Single Layer Multi Layer REALIZZATO DA: VALERIO CAPOZIO 26
  • 27. APPRENDIMENTO IN UNA RETE NEURALE Una 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
  • 29. ENCOG 3.0 Encog è un Framework sviluppato sia in Java che .Net Nato 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
  • 30. 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
  • 31. 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
  • 32. ADDESTRAMENTO DI UNA RETE NEURALE CON ENCOG (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
  • 33. ADDESTRAMENTO DI UNA RETE NEURALE CON ENCOG (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
  • 34. ESECUZIONE DI UNA RETE NEURALE CON ENCOG Per 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
  • 36. LA NOSTRA PRIMA RETE Feed-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 pesati Un 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
  • 37. PRIMI ESEMPI: FUNZIONE NOT X1 Y 0 1 1 0 -1 X1 Y Threshold(Y)=0 REALIZZATO DA: VALERIO CAPOZIO 37
  • 38. 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
  • 39. 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
  • 40. PRIMI ESEMPI: FUNZIONE XOR X1 X2 Y 0 0 0 0 1 1 1 0 1 1 1 0 ? REALIZZATO DA: VALERIO CAPOZIO 40
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. HIDDEN LAYER Servono 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
  • 47. ADDESTRAMENTO SUPERVISIONATO Nella 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
  • 48. DISCESA DEL GRADIENTE La 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
  • 49. 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
  • 50. 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
  • 51. BACKPROPAGATION L‟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
  • 52. MANHATTAN UPDATE RULE L‟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
  • 53. RESILIENT PROPAGATION Il 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
  • 54. SVANTAGGI DELL‟ADDESTRAMENTO A PROPAGAZIONE Sono 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
  • 55. ADDESTRAMENTO A PROPAGAZIONE E MULTITHREADING (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
  • 56. ADDESTRAMENTO A PROPAGAZIONE E MULTITHREADING (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
  • 58. INTRODUZIONE ALLA NORMALIZZAZIONE Spesso 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
  • 59. 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
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 65. MEAN SQUARED ERROR L‟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
  • 66. 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 il Valori TRUE classificati sistema confonde due classi. come Negativi Errore di Tipo II REALIZZATO DA: VALERIO CAPOZIO 66
  • 67. ACCURACY L‟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
  • 68. PRECISION La 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 False Questa 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
  • 69. RECALL La Recall è una misura statistica utilizzata per Valori Reali quantificare quanto bene un classificatore identifichi True False risultati positivi. Valori Predetti Positive True Positive False Questa 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
  • 71. LEGGERE DATI DA FONTI ESTERNE Encog 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
  • 72. METODI UTILI DI MLTRAIN L‟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
  • 73. INTERFACCIA D‟UTILITÀ ENCOGPERSISTOR Encog 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
  • 76. INTRODUZIONE ALLE FUNZIONI D‟ATTIVAZIONE La 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
  • 77. INTERFACCIA ACTIVATIONFUCTION In 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
  • 78. SCELTA DELLA FUNZIONI D‟ATTIVAZIONE La 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
  • 79. ACTIVATIONBIPOLAR Utilizzata 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 −1 Non è una funzione differenziabile. REALIZZATO DA: VALERIO CAPOZIO 79
  • 80. ACTIVATIONCOMPETITIVE Utilizzata 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
  • 81. ACTIVATIONGAUSSIAN Basata sulla funzione Gaussiana, produce la classica forma a campana. 𝑥−𝑏 2 − 𝑓 𝑥 = 𝑎𝑒 2𝑐 2 Dove 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
  • 82. ACTIVATIONLINEAR Non è 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
  • 83. ACTIVATIONLOG Utilizza 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
  • 84. ACTIVATIONSIGMOID Basata sulla funzione del sigmoide. 1 𝑓 𝑥 = 1 + 𝑒 −𝑥 Ha un output sempre positivo. È una funzione differenziabile. Nessun output negativo REALIZZATO DA: VALERIO CAPOZIO 84
  • 85. ACTIVATIONSIN Basata sulla funzione seno. 𝑓 𝑥 = sin 𝑥 Utilizzata di rado. È una funzione differenziabile. Restituisce sia valori di output positivi che negativi. REALIZZATO DA: VALERIO CAPOZIO 85
  • 86. ACTIVATIONSOFTMAX Appiattisce 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
  • 87. ACTIVATIONTANH Basata sulla funzione della tangente iperbolica. 𝑒 2𝑥 − 1 𝑓 𝑥 = 2𝑥 𝑒 +1 È probabilmente la funzione d‟attivazione più comune. È una funzione differenziabile. REALIZZATO DA: VALERIO CAPOZIO 87
  • 90. LIMITI DELLE RETI FEED-FORWARD Le 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
  • 91. INTRODUZIONE ALLE RETI SOM Le 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
  • 92. 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 + ⋯ + 𝑝 𝑛 − 𝑤 𝑛 2 In 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
  • 93. 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
  • 94. INTRODUZIONE ALLE RETI NEURALI RICORRENTI Le 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
  • 95. RETI NEURALI RICORRENTI IN ENCOG Encog 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
  • 96. RETE DI HOPFIELD La 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
  • 97. RETE DI BOLTZMANN La 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
  • 98. RETE DI ELMAN La 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:1 Il livello di contesto è privo di pesi e quindi non può apprendere, serve solo per fornire la rete di memoria. REALIZZATO DA: VALERIO CAPOZIO 98
  • 99. RETE DI JORDAN La 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
  • 100. RIFERIMENTI Reti Neurali  http://www.cs.unibo.it/babaoglu/courses/cas/resources/tutorials/Neural_Nets.pdf Encog:  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
  • 101. Questo opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 2.5 Italia REALIZZATO DA: VALERIO CAPOZIO 101