La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Apprendimento Automatico: Reti Neurali

Presentazioni simili


Presentazione sul tema: "Apprendimento Automatico: Reti Neurali"— Transcript della presentazione:

1 Apprendimento Automatico: Reti Neurali
Roberto Navigli Cap. 4 [Mitchell] Cap [Russell & Norvig]

2 Storia Le reti neurali artificiali (Artificial Neural Networks o ANN) sono una simulazione astratta del nostro sistema nervoso, che contiene una collezione di neuroni i quali comunicano fra loro mediante connessioni dette assoni Il primo modello di neurone artificiale fu proposto nel 1943 da McCulloch e Pitts nei termini di un modello computazionale dell’attività nervosa (Threshold Logic Unit) A questo modello sono seguiti altri proposti da John Von Neumann, Marvin Minsky, Frank Rosenblatt (Percettrone) e molti altri

3 Modello biologico ≠ Modello artificiale
Biologico: ha l’obiettivo di imitare sistemi neurali biologici, come le funzionalità auditive e visive Obiettivo: verifica di ipotesi riguardo ai sistemi biologici Guidato dalle applicazioni: meno interessato a “mimare” funzioni biologiche Le architetture sono ampiamente condizionate dalle necessità applicative Questi modelli sono anche denominati architetture connessioniste Modello trattato nel corso!

4 Neuroni I neuroni inviano segnali ad altri neuroni mediante un prolungamento detto assone I neuroni tipicamente possiedono strutture arboree chiamate dendriti che ricevono segnali inviati dagli assoni di altri neuroni mediante giunzioni dette sinapsi

5 Funzionamento di un Neurone
Si stima che il cervello umano contenga oltre 10 miliardi di neuroni e che un neurone è collegato in media a altri neuroni Tempo di commutazione di alcuni millisecondi (assai più lento di una porta logica), ma connettività centinaia di volte superiore Un neurone trasmette informazioni agli altri neuroni tramite il proprio assone L’assone trasmette impulsi elettrici, che dipendono dal suo potenziale L’informazione trasmessa può essere eccitatoria oppure inibitoria Un neurone riceve in ingresso segnali di varia natura, che vengono sommati Se l’influenza eccitatoria è predominante, il neurone si attiva e genera messaggi informativi verso le sinapsi di uscita

6

7 Struttura di una Rete Neurale
Una rete neurale è costituta da: un insieme di nodi (i neuroni) o unità connesse da collegamenti Un insieme di pesi associati ai collegamenti Un insieme di soglie o livelli di attivazione La progettazione di una rete neurale richiede: La scelta del numero e del tipo di unità La determinazione della struttura morfologica Codifica degli esempi di addestramento, in termini di ingressi e uscite dalla rete L’inizializzazione e l’addestramento dei pesi sulle interconnessioni, attraverso il training set

8 ∑ Il Percettrone Il percettrone è il mattone base delle reti neurali
Nasce da un'idea di Rosenblatt (1962) Cerca di simulare il funzionamento del singolo neurone x0=1 w0 x1 w1 w2 x2 . . . wm soglia xm

9 ∑ Il Percettrone I valori di uscita sono booleani: 0 oppure 1
Gli ingressi xj e i pesi wj sono valori reali positivi o negativi Tre elementi: ingressi, somma, soglia L'apprendimento consiste nel selezionare pesi e soglia x0=1 w0 x1 w1 w2 x2 . . . wm soglia xm

10 Funzioni somma e soglia (1)
La funzione d’ingresso (lineare, somma delle componenti di input di x = (x1, …, xn)) x0=1 w0 x1 w1 w2 x2 . . . wm soglia xm

11 Funzioni somma e soglia (2)
La funzione di attivazione (non lineare, soglia) Vogliamo l’unità percettrone attiva (vicino a +1) quando gli input corretti sono forniti e inattiva altrimenti E’ preferibile che g sia non lineare, altrimenti la rete neurale collassa a una funzione lineare dell’input x0=1 w0 x1 w1 w2 x2 . . . wm soglia xm

12 Funzioni di attivazione
Funzione gradino Funzione segno (utilizzata nel percettrone) Funzione sigmoide 1 1 -1 1/2

13 Funzione obiettivo Ad esempio, se la funzione soglia è la funzione segno e x1, ..., xm sono i valori degli attributi delle istanze x di X, la funzione obiettivo da apprendere è: Esprimibile anche in forma vettoriale mediante la:

14 Il Percettrone Problema di apprendimento: dati insiemi di punti su uno spazio n-dimensionale, classificarli in due gruppi (positivi e negativi) inoltre dato un nuovo punto x’ decidere a quale gruppo appartiene Il primo problema è di classificazione, mentre per risolvere il secondo è richiesta capacità di generalizzazione, come negli alberi di decisione

15 Problema di classificazione
Il problema è quindi ridotto alla determinazione dell'insieme dei pesi (w0, w1, …, wm) migliore per minimizzare gli errori di classificazione Quindi lo spazio delle ipotesi H è infinito ed è dato da tutte le possibili assegnazioni di valori agli n+1 pesi (w0, w1, …, wm): Si tratta di ottimizzare la funzione: in modo da minimizzarne l’errore

16 Esempio per due attributi
Con (x1, x2) in ingresso, si ha: La retta di separazione è data da: Nel caso con n attributi, quel che si apprende è un iperpiano di separazione dato da: x2 x1

17 Funzioni rappresentabili con il percettrone
I percettroni possono rappresentare tutte le funzioni booleane primitive AND, OR, NAND e NOR ecc. (provate a scrivere le altre per esercizio)

18 Funzioni rappresentabili con il percettrone
I percettroni possono rappresentare tutte le funzioni booleane primitive AND, OR, NAND e NOR Alcune funzioni booleane non possono essere rappresentate es. la funzione XOR (vale 1 se e solo se x1 ≠ x2): x2 + - - + - + x1 - - + + - - +

19 Implementare funzioni booleane più complesse con il percettrone
x0=1 0.5 -0.3 x1 x1 or x2 0.5 x0=1 x2 -0.8 0.5 (x1 or x2) and x3 0.5 x3

20 Algoritmo di Addestramento del Percettrone
Inizializza i pesi casualmente Finché non si è raggiunta la condizione di terminazione: Per ogni esempio (x, y)  D, dove y è il l’output effettivo: Calcola la funzione o(x) Se o(x)  y allora per ogni attributo j aggiornane il peso:  si chiama learning rate (tasso di apprendimento) xj è il valore dell’attributo j-esimo di x la quantità y-o rappresenta l’errore E del percettrone

21 Esempio Supponiamo o(x)=-1 (se la funzione soglia è sign(x)) e y=1
Bisogna modificare i pesi per accrescere il valore di Se per esempio: Quindi il valore del wj tenderà a crescere, riducendo l’errore Se invece y=-1 e o(x)=1 Nota: vogliamo aggiornamenti dei pesi graduali, altrimenti rischiamo di “disfare” il lavoro fatto sugli altri esempi di addestramento

22 Convergenza del Percettrone
Il teorema di convergenza del percettrone (Rosenblatt, 1962) assicura che il percettrone riuscirà a delimitare le 2 classi se il sistema è linearmente separabile In altre parole, nell'ottimizzazione non esistono minimi locali Problema: come ci si comporta in caso di situazioni non linearmente separabili? Soluzioni: Utilizzare la discesa del gradiente (delta rule) invece della regola di addestramento del percettrone reti multistrato alimentate in avanti

23 Soluzione 1: Discesa del Gradiente
Una regola di addestramento differente del percettrone Assumiamo per semplicità che il percettrone non sia sogliato (ossia: o(x) = w·x) Utilizziamo una misura dell’errore di addestramento per un vettore di pesi w:

24 Discesa del gradiente Idea: utilizzare la discesa del gradiente per cercare nello spazio dei vettori peso quello che minimizza l’errore su D Calcoliamo le derivate parziali della funzione d’errore

25 Regola di addrestramento: discesa del gradiente
Modifichiamo la regola di addestramento: Finché non si raggiunge la condizione di terminazione, Inizializza Per ogni attributo j Per ogni attributo j: Nota: calcoliamo il delta su tutti gli esempi e POI aggiorniamo i pesi Nota 2: l’output non è sogliato

26 Come calcolare la derivata

27 Alternativa: Discesa del Gradiente Stocastica o Incrementale
La Discesa del Gradiente Standard può essere molto lenta nel convergere a un minimo locale Se ci sono multipli minimi locali, non c’è garanzia di convergere al minimo globale Alternativa: aggiornare i pesi esempio per esempio e non sull’intero D Approssimazione ragionevole alla discesa del gradiente

28 Discesa del Gradiente Stocastica o Incrementale
Delta rule

29 Diverse proprietà di convergenza:
Ricapitoliamo La regola di aggiornamento del percettrone è la stessa della Delta Rule! Però: la delta rule utilizza o(x)=w·x mentre la regola del percettrone o(x)=sign(w·x) Tuttavia, la Delta Rule può essere utilizzata anche per percettroni sogliati: Se la Delta Rule modella perfettamente, allora avremo o(x)=1 o -1 per cui anche o’(x)=sign(1)=1 oppure o’(x)=sign(-1)=-1 Diverse proprietà di convergenza: Regola del percettrone converge dopo un numero finito di iterazioni (se dati linearmente separabili) Delta rule converge asintoticamente verso l’ipotesi di minor errore indipendentemente dalla separabilità lineare

30 Soluzione 2: Reti Stratificate Alimentate in Avanti
Feedforward Neural Networks Ogni unità è collegata solo a quella dello strato successivo L’elaborazione procede uniformemente dalle unità di ingresso a quelle di uscita Non c’è feedback (grafo aciclico diretto o DAG) Non hanno stato interno

31 Vogliamo apprendere superfici di decisione non lineari!

32 Soluzione 3: Reti Ricorrenti
Sono più simili al funzionamento del cervello umano, in quanto simulano le connessioni all’indietro Nel cervello esistono evidenti connessioni all’indietro I collegamenti possono formare configurazioni arbitrarie L’attivazione viene “ripassata” indietro alle unità che l’hanno provocata Hanno uno stato interno: i livelli di attivazione Computazione meno ordinata Instabili Più tempo per calcolare lo stato stabile Difficoltà nell’apprendimento Implementano classificatori più complessi Esempi: Reti di Boltzmann Reti di Hopfield output input hidden

33 Reti Alimentate in Avanti: Algoritmo di Backpropagation
Apprendimento con algoritmo di backpropagation (propagazione all’indietro) Obiettivi: partire da un insieme di percettroni con pesi casuali apprendere in modo veloce avere capacità di generalizzazione lavorare con insiemi di percettroni su larga scala

34 Backpropagation (2) unità d’ingresso ii unità nascosta hj
La funzione soglia di ciascuna unità è la sigmoide: L’errore è calcolato come segue: Obiettivo dell’algoritmo: minimizzare l’errore fra ciascuna uscita desiderata yk e l’uscita calcolata dalla rete neurale ok unità d’ingresso ii unità nascosta hj unità di uscita ok

35 L’algoritmo Backpropagation
function BackProp(D, , nin, nhidden, nout) D è l’insieme di addestramento costituito da coppie  è il tasso di apprendimento (learning rate), es. 0.1 nin, nhidden e nout sono il numero di unità d’ingresso, nascoste e d’uscita Crea una rete feed-forward con nin, nhidden e nout unità Inizializza tutti i pesi con numeri casuali piccoli (es. tra e 0.05) Finché non si incontra la condizione di terminazione: Per ogni esempio in D: Propaga l’input in avanti sulla rete calcolando l’output ou di ogni unità u della rete Propaga gli errori all’indietro nella rete: Per ogni unità di output k, calcola il suo termine d’errore k: Per ogni unità nascosta h, calcola il suo termine d’errore h: Aggiorna i pesi wij: xij è l’input dell’unità j proveniente dall’unità i

36 Esempio Crea una rete feed-forward con nin, nhidden e nout unità Inizializza tutti i pesi con numeri casuali piccoli (es. tra e 0.05) wx0,h1 = 0.34, wx1,h1 = 0.12, wx2,h1 = -0.92 wx0,h2 = -0.11, wx1,h2 = 0.57, wx2,h2 = -0.32 wh0,o1 = , wh1,o1 = 0.16, wh2,o1 = 0.75 x1 h1 o1 x2 h2

37 Esempio Finché non si incontra la condizione di terminazione: Per ogni esempio in D: Propaga l’input in avanti sulla rete calcolando l’output ou di ogni unità u della rete oh1 = (0.34* * *0) = (0.34)=1/(1+e-0.34)= 0.58 oh2 = (-0.11*1+0.57* *0)=(-0.11)=1/(1+e-(-0.11))=0.47 oo1 = (-0.99*1+0.16* *0.47)=(-0.54)=1/(1+e-0.54)=0.36 ((0, 0), (0)) x1 h1 o1 x2 h2

38 o1 = oo1(1-oo1)(yo1-oo1)= 0.36*(1-0.36)(0-0.36)=-0.08
Esempio Propaga gli errori all’indietro nella rete: Per ogni unità di output k, calcola il suo termine d’errore k: Per ogni unità nascosta h, calcola il suo termine d’errore h: Aggiorna i pesi wji: o1 = oo1(1-oo1)(yo1-oo1)= 0.36*(1-0.36)(0-0.36)=-0.08 h1 = oh1*(1-oh1)*wh1o1o1 = 0.58*(1-0.58)*(0.16)*(-0.08) = h2 = oh2*(1-oh2)*wh2o1o1=0.47(1-0.47)*(0.75)*(-0.08)=-0.014

39 Esempio wx0h1 = 0.34+h1xx0h1=0.34+0.5*(-0.003)*1=0.34-0.0015,
Propaga gli errori all’indietro nella rete: Per ogni unità di output k, calcola il suo termine d’errore k: Per ogni unità nascosta h, calcola il suo termine d’errore h: Aggiorna i pesi wji: wx0h1 = 0.34+h1xx0h1= *(-0.003)*1= , wx1h1 = , wx2h1 = wx0h2 = h2xx0h2= *(-0.014)*1= , wx1h2 = , wx2h2 = wh0o1 = o1xh0o1= *(-0.08)*1= wh1o1 = 0.16+o1xh1o1= *(-0.08)*0.58= wh2o1 = 0.75+o1xh2o1= *(-0.08)*0.47=

40 Esempio Si aggiornano tutti pesi Si considera il secondo esempio di D Si ricalcolano input e output di tutti i nodi Si ricalcolano gli errori sui nodi Si riaggiornano i pesi Finché non si esaurisce D (epoca) Si ripete per n epoche, fino a che l’errore non si stabilizza

41 Otteniamo i seguenti risultati per gli input:
Esempio Dopo qualche migliaio di iterazioni su tutti e quattro gli esempio di D = { ((0,0), (0)), ((0,1), (1)), ((1,0), (1)), ((1,1),(0))} Otteniamo i seguenti risultati per gli input: x = (0, 0), oo1 = x = (0, 1), oo1 = x = (1, 0), oo1 = x = (1, 1), oo1 = Quale funzione calcola la rete dell’esempio?

42 Cosa c’è alla base della regola di propagazione dell’errore all’indietro?
Consideriamo la funzione di errore per d=(x,y)D: Supponiamo di dover imparare solo due pesi. Il piano w1 w2 rappresenta lo spazio delle ipotesi (pesi delle connessioni) , il cono è la superficie d'errore. Per minimizzare l'errore si deve calcolare la direzione della discesa più ripida lungo la superficie. Quindi, la derivata.

43 Calcolo della regola di aggiornamento dell’unità di output

44 Condizioni di terminazione
Il processo continua finché non sono esauriti tutti gli esempi (epoca), poi si riparte Quando arrestare il processo? Minimizzare gli errori sul set D non è un buon criterio (overfitting) Si preferisce minimizzare gli errori su un test set T, ovvero suddividere D in D’T, addestrare su D’ e usare T per determinare la condizione di terminazione

45 Disegno dell’errore su un test set T

46 Ma l’algoritmo converge?
Problemi dell’algoritmo del gradiente: Può arrestarsi su minimi locali Un minimo locale può dare soluzioni molto peggiori del minimo globale Possono esserci molti minimi locali Soluzioni possibili: addestra la rete con pesi iniziali diversi, addestra diverse architetture di rete

47 Modifica della regola di aggiornamento
Quando si esegue l’n-esima iterazione la regola di aggiornamento diventa: Il secondo termine prende il nome di momento Vantaggi: È possibile superare minimi locali Mantiene “in movimento” dove il gradiente non cambia (zona piatta) Incrementa la velocità di convergenza Svantaggi: E’ un parametro in più da regolare!

48 Alcune considerazioni pratiche
La scelta dei pesi iniziali ha un grande impatto sul problema della convergenza! Se la dimensione dei vettori di input è N ed N è grande, una buona euristica è scegliere i pesi iniziali fra -1/N e 1/N L’algoritmo BP è molto sensibile al fattore di apprendimento . Se è troppo grande, la rete diverge. A volte, è preferibile usare diversi valori di  per i diversi strati della rete La scelta della modalità di codifica degli ingressi e della architettura della rete può influenzare in modo drastico le prestazioni!!

49 Architettura della rete
Con più unità nascoste è possibile ottenere uno spazio delle ipotesi più ampio ed espressivo D’altra parte: rischio overfitting (si rischia di creare una sorta di lookup table o rote classifier) Con uno strato nascosto sufficientemente ampio è possibile rappresentare qualsiasi funzione continua degli input con accuratezza arbitraria Tuttavia, la scelta ottima a priori del giusto numero di unità nascoste non è ancora chiara

50 Obiettivo - apprendere un’ontologia:
Applicazione: Modello di Memoria Semantica [McClelland and Rogers, 2003] Obiettivo - apprendere un’ontologia:

51 Strategia - Rete Neurale:
Applicazione: Modello di Memoria Semantica [McClelland and Rogers, 2003] Strategia - Rete Neurale:

52 Applicazione: Modello di Memoria Semantica [McClelland and Rogers, 2003]
Risultati in termini di distanza euclidea:

53 Applicazione: ALVINN guida a 70 mph!

54 Applicazione: riconoscimento di fisionomie
Compito: Classificare immagini di visi di persone in varie pose Dataset: immagini di 20 persone in 32 pose variabili per: espressione, direzione dello sguardo, occhiali da sole, sfondo Funzioni obiettivo: riconoscere se porta gli occhiali, quale persona è, in che direzione guarda, ecc.

55 Scelte di Progetto Accuratezza della codifica di ingresso:
Scelta chiave: quali e quante feature in ingresso codificare Si potrebbe preanalizzare l’immagine estraendo informazioni quali contorni, regioni di intensità luminosa uniforme, ecc. Problema: il numero di feature sarebbe variabile (es. numero di contorni), ma una rete neurale ha un numero fisso di ingressi! Allora si “semplifica” l’immagine codificandola come un insieme di valori di intensità di 30x32 pixel

56 Reti Neurali “in a nutshell”
Vantaggi: Le istanze sono rappresentate mediante molte feature a molti valori, anche reali e la funzione obiettivo può essere a valori reali Possono rappresentare: tutte le funzioni booleane (esattamente), funzioni continue (approssimate), funzioni arbitrarie (approssimate, con 2 strati nascosti) Gli esempi possono essere rumorosi La rete è veloce in fase di classificazione Non è cruciale capire la semantica della funzione attesa Svantaggi: Come tutti i modelli statistici, anche le reti neurali sono soggette a sovradattamento Le reti neurali sono "scatole nere“: non hanno semantica! I tempi di addestramento possono essere lunghi


Scaricare ppt "Apprendimento Automatico: Reti Neurali"

Presentazioni simili


Annunci Google