Introduzione alle reti neuronali

annuncio pubblicitario
Le reti neurali
Simona Balbi
Cosa sono le reti neurali
Una rete neurale artificiale (A)NN è un paradigma di
elaborazione dell’informazione ispirato al modo in cui i
sistemi nervosi biologici, come il cervello umano,
elaborano l’informazione
L’elemento chiave di questo paradigma è la struttura
dell’informazione, concepita come un grande numero di
elementi (i neuroni) interconnessi, che lavorano
contemporaneamente, al fine di risolvere problemi
specifici
Le NN, come le persone, imparano dall’esempio e
dall’esperienza. Ogni NN è configurata per una specifica
applicazione, ad esempio di classificazione, attraverso un
processo di apprendimento. Nei sistemi biologici
l’apprendimento implica adattamenti delle connessioni
sinaptiche presenti fra i neuroni. Eì questo che cerca di
mimare una ANN
Un po’ di storia
Le (A)NN sembrano qualcosa di abbastanza recente, ma in
realtà hanno avuto una vita piena di alti e bassi, entusiasmi e
frustrazioni. Nascono prima dell’avvento dei computer,
anche se i maggiori sviluppi si sono avuti con il diffondersi di
calcolatori potenti ed economici
La loro storia è comunque segnata dalla multidisciplinarietà,
che vede prevalentemente l’impegno congiunto di
neuroscienziati e informatici, ma poi matematici e statistici
Il primo neurone artificiale fu prodotto nel 1943 dal
neurofisiologo Warren McCulloch e dal logico Walter Pits
La tecnologia disponibile all’epoca non li portò molto lontano
Quando ricorrere alle reti neurali?
NN sono in grado di estrarre informazioni da dati complicati e imprecisi
Sono quindi estremamente utili nel riconoscere regolarità e nell’individuare
tendenze troppo complesse per essere colte da un essere umano che
utilizzi strumenti di analisi classici
Una NN addestrata può essere immaginata come un “esperto” e può servire per
predire nuove situazioni e simularne altre, in condizioni del tipo "what if"
I principali vantaggi di NN sono:
1.
Capacità di apprendimento: attraverso opportuni algoritmi dinamici la rete
riesce ad adattare il proprio comportamento fino a computare una
funzione arbitraria y= f (x) in base agli esempi presentati.
2.
Capacità di generalizzare: il sistema che abbia correttamente appreso una
funzione riesce di norma a fornire una risposta "ragionevole" anche a
stimoli precedentemente mai occorsi
3.
Tolleranza agli errori: scostamenti non significativi dei valori di input
vengono assorbiti dalla rete, diminuendo così il rumore statistico
4.
Tolleranza ai guasti La presenza di molte unità di elaborazione in parallelo
fa sì che l'eventuale perdita di una unità abbia conseguenze non
irreparabili
Le novità computazionali delle NN
Le NN differiscono nell’approccio dai consueti programmi
informatici, poiché il loro “ connessionismo ” si contrappone alla
concezione “ logico-simbolica ” tipica della Intelligenza Artificiale
e della programmazione classica
I programmi consueti di regola si basano su un approccio
algoritmico: una sequenza di istruzioni nota e specificata viene
eseguita al fine di risolvere in problema. Questo vuole dire che
risolvono problemi di cui è nota la soluzione
NN elaborano l’informazione come un cervello umano: i neuroni
lavorano in parallelo per un comune obiettivo
NN non sono programmate per eseguire un compito specifico,
poiché apprendono da esempi, che devono essere scelti con cura
Lo svantaggio è che trovano la soluzione da sole e sono quindi
imprevedibili. D’altra parte l’approccio cognitivo tradizionale della
programmazione è totalmente prevedibile e se qualcosa non
funziona è un problema di hardware o di software
Cosa è NN
Da un punto di vista “ matematico ” :
data una funzione G : X → Y, nota attraverso
un insieme di coppie
{ (xp,G(xp)) : xp  X, p = 1, . . . , P }
una rete neurale è un particolare modello di
approssimazione di G :
F (· , w) : X → Y
dipendente da un vettore di parametri w
(tipicamente nonlineare rispetto ai parametri)
1
Cosa è NN
2
Da un punto di vista “ statistico ”, una rete
neurale `e un particolare modello di regressione
(di solito, non lineare) o di classificazione
Se concepiamo un percettrone stocastico nella
forma più semplice, come
y=g(x,θ)+ noise
dove x è l’input, y l’output e g(x,θ) una funzione
di attivazione non lineare, parametrizzata da θ,
allora cogliamo immediatamente la somiglianza con
un modello statistico non lineare
Il PERCETTRONE
Una rete costituita da un singolo strato di
neuroni formali è chiamata Perceptron
(Rosenblatt, 1962) ed è stato proposto un
algoritmo per il calcolo dei pesi, noto come
“Perceptron learning rule” che fornisce in
un numero finito di iterazioni i parametri w, θ
se i campioni sono linearmente separabili,
aggiustando i pesi in corrispondenza di ciascun
esempio
Il neurone artificiale
(da Grippo, Sciandronehttp://www.dii.unisi.it/~agnetis/grippo1.pdf)
E’ un dispositivo per il quale
y = h (Si wi xi – q)
assume valore 1 se la somma algebrica pesata degli
ingressi supera un valore di soglia θ e –1 altrimenti, dove:
• y  {−1, 1} uscita
• xi  R ingressi (anche xi  {0, 1})
• wi  R pesi
• θ  R soglia
• h : R → R funzione di attivazione h(t) = 1 t ≥ 0;
h(t) = −1 t < 0
Il neurone formale pu`o realizzare le operazioni logiche NOT,
AND, OR
NN come classificatore lineare
Poniamo y(x) = sign(wT x − θ)
Fissati w, θ, il neurone può essere interpretato
come un classificatore lineare , che assegna il
vettore x alla classe A oppure alla classe B in
base al valore di y(x), ossia, ad es.:
x  A se y(x) = 1, x  B se y(x) = −1.
I parametri w, θ possono essere determinati a
partire da un insieme di campioni xp di cui è
nota la classificazione dp  {−1, 1}, risolvendo
(se possibile) rispetto a (w, θ) il sistema
(xp)Tw − θ ≥ 0, se xp  A,
(xp)Tw −θ < 0, se xp  B
p = 1, . . . , P
Un’impostazione alternativa è quella di sostituire la funzione di
attivazione sign con una funzione continuamente differenziabile
g di tipo sigmoidale, ossia una funzione monotona crescente
tale che:
lim g(t) = −1
lim g(t) = 1
t→−∞
t→∞
come, ad esempio tanh(t) = et − e−t
et +e−t
e minimizzare l’errore quadratico
Analisi del sistema di apprendimento
di una rete neurale
Questo è un grafo di dipendenza per una NN:
la variabile h è un vettore a 3-dimensioni e dipende da x, variabile di input.
La variabile g è un vettore a 2-dimensioni e dipende da h.
Infine, f, la variabile di output output dipende da g.
In questa rete, i vettori variabile possono essere ulteriormente decomposti
in unità parallele: h1, for example, is independent of h2 dato x.
Christos Dimitrakakis 2005
Reti feedforward
Una rete neurale feedforward :


è rappresentata da un grafo orientato
aciclico (a differenza delle cosìddette reti
ricorrenti, al cui interno sono previsti cicli
è costituita da un certo numero di strati
(una, percettrone, più rete multistrato),
ciascuno formato da un certo numero di
neuroni
La rete multistrato
1
Ogni strato riceve segnali da quello precedente, li elabora e passa
il risultato allo strato successivo
Gli strati intermedi hanno tutti le stesse caratteristiche
strutturali, mentre il primo e l'ultimo sono particolari:
il primo riceve segnali dall'esterno e li passa semplicemente allo
strato successivo e quindi alla rete
l'ultimo riceve i segnali, pesati secondo i valori delle connessioni,
dallo strato precedente, li somma e passa all'esterno il risultato (la
funzione di attivazione dell'ultimo strato è semplicemente
l'identità, così che in uscita si ha un qualunque numero reale (come
è naturale che sia se si intende usare la rete per approssimare
funzioni a valori reali)
un neurone che si trova nello strato i-esimo riceverà uno o più
ingressi che possiamo indicare con:
ui = [ u1i, u2i, … umi ]
dal precedente (i – 1)-esimo strato e produrrà in uscita un segnale
ui+1 = [ u1i+1, u2i+1, … um+1i+1 ]
La rete multistrato
2
I valori
ui+1 = [ u1i+1, u2i+1, … um+1i+1 ]
dove il generico uji+1 = s(hi+1),
dove hki+1 = Sj uji wijk + bki
dove Wi = ( wijk) è la matrice dei pesi sulle connessioni
e bi = (bik) è il vettore di bias, coefficienti applicati ad
un'unita'fittizia che genera un segnale sempre pari a 1, e
pertanto non e' necessario rappresentarla nel disegno
I segnali, sia in ingresso che in uscita possono assumere un
qualsiasi valore continuo compreso tra 0 e 1 e
La struttura di una NN
Una rete neurale, costituita da n strati, ciascuno dei quali
composto da mi neuroni, sarà caratterizzata da n-1
matrici di dimensione mi-1×mi (per i=1, …, n) e da n-1
vettori riga bi di dimensione mi
Possiamo allora costruire le (mi-1+1×mi)-matrici Wi ed i
vettori mi+1 dimensionali
Si è così definita una funzione di tante variabili reali quanti
sono i neuroni dello strato di input, a valori in uno spazio
euclideo di dimensione uguale al numero di neuroni
presenti nello strato di output.
Questa funzione dipende da un gran numero di parametri e
ciò la rende estremamente versatile nel modellare i più
vari comportamenti
Il rischio è che lo siano troppo
L’apprendimento
APPRENDIMENTO significa applicare una classe di funzioni data
F ad un insieme di osservazioni al fine di trovare una funzione f*
 F che risolve il problema in modo ottimale
Si definisce una funzione di costo C : F →  tale che la soluzione
ottimale C(f*)  C(f)  f  F
C fornisce la misura di quanto è lontana da noi la soluzione ottimale
del problema che vogliamo risolvere
Esistono diversi schemi di algoritmi di apprendimento che cercano
nello spazio delle soluzioni al fine di trovare una funzione che abbia
il minor costo possibile
La funzione di costo può essere definita ad hoc o si possono
utilizzare funzioni di costo che godano di alcune proprietà
desiderate (es. convessità) o sceglier una particolare formulazione
del problema (ad esempio probabilistica, la probabilità a posteriori
come inverso del costo)
La funzione di costo dipende dal l’obiettivo
Paradigmi di apprendimento
apprendimento supervisionato (supervised learning)
OBIETTIVO: previsione del valore dell'uscita per ogni valore
valido dell'ingresso
INPUT : untraining set, ossia un insieme di dati per i quali si
conosce il risultato (coppie di valori input – output)
PROCEDURA: la rete impara ad inferire la relazione che lega i dati
al risultato
COME: la rete è addestrata mediante un opportuno algoritmo
(tipicamente, la backpropagation), il quale usa tali dati allo
scopo di modificare i pesi ed altri parametri della rete stessa in
modo tale da minimizzare l'errore di previsione (costo) relativo
all'insieme d'addestramento
La rete deve essere dotata di un'adeguata capacità di
generalizzazione, con riferimento a casi ad essa ignoti. Ciò
consente di risolvere problemi di regressione o classificazione
apprendimento non supervisionato
(unsupervised learning)
OBIETTIVO: raggruppare i dati d'ingresso e individuare
pertanto cluster rappresentativi dei dati stessi
INPUT : insieme di dati di cui è noto solo l’ingresso
PROCEDURA: algoritmi d'addestramento che modificano i
pesi della rete facendo esclusivamente riferimento ad un
insieme di dati che include le sole variabili d'ingresso.
COME mediante algoritmi che ricorrono a metodi topologici
o probabilistici
L'apprendimento non supervisionato è anche impiegato per
sviluppare tecniche di compressione dei dati.
apprendimento rinforzato
(reinforcement learning)
Ricalca le procedure di condizionamento classico (premi/punizioni)
OBIETTIVO: individuare un modus operandi, a partire da un processo
d'osservazione dell'ambiente esterno
INPUT : alla rete viene fornita solo una informazione qualitativa sulla
bontà della sua risposta (del tipo “giusto” o “sbagliato”)
PROCEDURA: gli algoritmi per il reinforcement learning tentano in
definitiva di determinare una politica tesa a massimizzare gli incentivi
cumulati: i pesi sono modificati in modo da aumentare la probabilità di
ottenere premi e diminuire la probabilità di ricever punizioni
COME: un agente, dotato di capacità di percezione, che esplora un
ambiente nel quale intraprende una serie di azioni; ogni azione ha un
impatto sull'ambiente, e l'ambiente produce una retroazione (in termine di
incentivi o disincentivi) che guida l'algoritmo stesso nel processo
d'apprendimento
L'apprendimento con rinforzo differisce da quello supervisionato poiché
non sono mai presentate delle coppie input-output di esempi noti, né si
procede alla correzione esplicita di azioni subottimali. Inoltre, l'algoritmo è
focalizzato sulla prestazione in linea, la quale implica un bilanciamento tra
esplorazione di situazioni ignote e sfruttamento della conoscenza corrente
Algoritmo di Backpropagation
L'algoritmo di backpropagation è utilizzato nell'apprendimento supervisionato
e permette di modificare i pesi delle connessioni in modo tale che si minimizzi
una certa funzione errore E (regola delta generalizzata): per ogni esempio
fornito in ingresso si valuta l'errore in uscita rispetto al valore desiderato, e
si calcola un delta del neurone che serve poi per modificare i diversi pesi
Il delta del neurone Y si calcola moltiplicando l'errore per la derivata della
funzione di uscita (Y*(1-Y)), in questo modo il delta rappresenta in un certo
senso la velocita' di variazione dell'errore del neurone al variare complessivo
dell'attivazione interna, definita come la somma pesata di tutti i segnali in
ingresso
I pesi vengono modificati di una quantità pari al delta del neurone per il
segnale in arrivo su quella connessione e il tutto ancora moltiplicato per un
fattore h detto fattore di apprendimento (compreso tra 0,1 e 0,9) scelto a
priori. Maggiore è h più rapida è la variazione dei pesi durante
l'addestramento, ma questo puo portare ad errori eccessivi e oscillazioni
nell'apprendimento. Un h basso permette un addestramento più preciso ma
più lento e rischi di minimo locale della funzione di errore
Nel caso in cui il neurone da addestrare appartenga ad uno strato
intermedio non e' possibile determinare il suo errore come
differenza tra l'uscita voluta e quella effettiva, in questo caso si
usa "retropropagare" l'errore che era stato calcolato sull'uscita
effettiva attraverso il delta
L'errore del neurone H (hidden) viene considerato pari al delta del
neurone successivo moltiplicato per il peso della connessione che
unisce i due neuroni
Nel caso in cui la sua uscita andasse verso piu'neuroni, l'errore
sarebbe la somma di tutti i singoli delta pesati
Una volta determinato l'errore di H e' possibile calcolare il DeltaH
ed effettuare le variazioni dei pesi nello stesso modo di prima
N.B. Per il calcolo dell'errore si parte dall'uscita e si procede
verso gli ingressi (calcolando il delta di tutti i neuroni della rete
PRIMA di iniziare a modificare i pesi)
L'algoritmo di backpropagation può quindi essere diviso in due
passi:
Forward pass: l'input dato alla rete è propagato al livello
successivo e così via ai livelli successivi (il flusso di informazioni si
sposta in avanti, cioè forward). Si calcola dunque E(w), l'errore
commesso.
Backward pass: L'errore fatto dalla rete è propagato all'indietro
(backward) e i pesi sono aggiornati in maniera appropriata
Molto schematicamente:
1.Si impostano i pesi a piccoli valori casuali
2.Per ogni esempio
a) Si presenta l'esempio alla rete e la si esegue per
determinarne l'uscita
b) Si calcolano i delta di tutte le unita'
c) Si modificano i pesi
3.Se il massimo errore commesso da una qualsiasi
unita'di uscita durante un qualsiasi esempio e'
maggiore di quello ammesso torna al punto 2
Un esempio
(da G.Ferrari-Trecate,
http://sisdin.unipv.it/lab/didattica/corsi/imad_laurea_PV/reti_neurali1.pdf)
Problemi della backpropagation
Self-Organizing Map
Le Self-Organizing Map (SOM) sono un particolare tipo di
rete neurale artificiale, con apprendimento non
supervisionato
Producono una rappresentazione dell’informazione in uno
spazio bidimensionale preservando le proprietà
topologiche dello spazio degli ingressi
Questa proprietà rende le SOM particolarmente utili per la
visualizzazione di dati di dimensione elevata. Il modello
fu inizialmente descritto dal finlandese Teuvo Kohonen,
negli anni Ottanta, per cui vengono anche chiamate
Mappe di Kohonen
Le self-organizing map sono reti neurali
Feedforward a singolo strato dove i neuroni di
uscita sono organizzati in griglie di bassa
dimensione (generalmente 2D o 3D). Ogni ingresso
è connesso a tutti i neuroni di uscita. A ogni
neurone è associato un vettore dei pesi della
stessa dimensione dei vettori d'ingresso. La
dimensione del vettore d'ingresso è generalmente
molto più alta della dimensione della griglia di
uscita. Le SOM sono principalmente usate per la
riduzione della dimensione piuttosto che per
l'espansione


Dato che nella fase di addestramento i pesi di tutto il
vicinato sono spostati nella stessa direzione, elementi
simili tendono ad eccitare neuroni adiacenti. Perciò le
SOM formano una mappa semantica dove campioni
simili vengono mappati vicini e dissimili distanti
Un altro modo di considerare i pesi neuronali è di
pensarli come punti distribuiti nello spazio degli
ingressi. Questi formano un'approssimazione della
distribuzione dei campioni d'ingresso. Più neuroni
puntano a regioni con un'elevata concentrazione di
campioni di addestramento, e meno in zone dove i
campioni sono scarsi
Scarica