Sei sulla pagina 1di 3

Reti neurali

Base di rete neurale


Immaginiamo di voler classifficare dei gatti in funzione del loro peso e della loro lunghezza:

• gatti della giungla

• gatti della sabbia

Abbiamo un dataset dove in funzione del peso e della lunghezza corrisponde una tipologia di gatto.

Adesso a questo data set di 10 elementi si aggiunge un nuovo elemento o almeno vengono vengono dati il peso ed la lunghezza
ma nn sappiamo se queste siano di un gatto della sabbia o della giungla.

e possibile addestrare una rete neurale in modo che datogli come imput una coppia lunghezza-peso possa collocare queste
grandezze nella categoria adatta (in questo caso gatto della giugla o della sabbia)

Io do in pasto come input i miei dati (lunghezza-peso) in output


avremo una previsione, cioè un numero, ma questo numero non ha
un significato dobbiamo interpretarlo noi.

input
nodo ma Wipes Per interpretarlo possiamo dire se il numero si avvicina ad 1 allora
sarà un gatto delle sabbie se si avvicina a 0 sarà un gatto della
output giungla.

Dal punto di vista matematico la rete neurale è una funzione.

pesi Chiamiamo lo spazio per le variabili di input “nodi” ed icollegamenti


a
input me per l’output pesi.

modo In particolare la funzione con cui lavora la rete neurale è la seguente:

m1*w1+m2*w2+bias=y

Inoltr noi vogliamo che il risultato di questa funzione sia compreso


tra 0 e 1 quindi vogliamo normalizzarli, per normalizzarli si utilizza la
funzione sigmoide

sigmoide the
In questo modo diventa

Sigmoide(m1*w1+m2*w2+bias)=y
plex
Conoscendo i valori di m1 e m2 mancano i valori dei pesi e del bias, questi numero all’inizio è casuale, il computer non sa a cosa si
riferiscono i numero che gli abbiamo dato in pasto, quindi è necessario “allenarlo”

Funzione di costo

Per addestrare una rete neurale si utilizza la funzione di costo, questa funzione come input ha i dati e la prevesione della rete
neurale e ci restituisce un numero, questo numero ci dice quanto la previsione della rete neurale sia distante dal risultato che
dovrebbe darci.

Quello che dobbiamo fare è trovare un modo per far si che il risultato della funzione di costo si molto piccolo, ma per far vaeiare
questo output cosa possiamo modificare?

I dati sicuramente no, quindi dobbiamo far variare la previsione della rete neurale che ricordiamo dipendere dai pesi e w1 e w2 e dal
bias.

Definiamo questa funzione:

abbiamo una coppia di peso lunghezza diversa da quella del dataset ma che fa parte dell’insieme del gatto delal giungla: io voglio
che la previsione della rete neurale sia il numero più vicino possibile a 0 che corrisponde al valore assegnato al gatto della giungla.

immaginiamo che larete non allenata ci restituisca il numero 0,9

la funzione costo definita come differenza tra la previsione e il valore che vorremo noi elevato al quadrato (0,9-0)^2 ovvero l’errore
quadratico (squared error cost function), quindi

(previsione-obiettivo)^2

Immaginiamo una rete neurale senza imput che restituir come previsione b=3

RN()=b obbiettovo=3 —>funzione di costo—> (b-3)^2, noi vogliamo minimizzare il risultato di questa funzione, potremo
assegnare il valore di b=3 e avremo risolto e sarebbe giusto ma quando le reti diventano complesse non è così ovvio

Graficamente la funzione di costo è una parabola


Osserviamo che per valori maggiori o minori di 3 ci allontaniamo dal valore di f(b)=0, ci serve conoscere un modo per capire
come cambiare b in funzione dalla lontananza da 3, questo modo è la conoscenza della pendenza della curva, che sarà negativa
per valori minori di 3 e positiva per valori maggiori 3, quando la retta si tangente si trova al valore obbiettivo la pendenza è 0.

Quindi b<3 dobbiamo far crescere b, quindi sottraiamo il valore della pendenza (che è negativa)

b >3 sottraendo il valore della pendenza (positiva)

Ma se noi sottriamo la pendenza non riusciremo mai a convergere al risultato voluto perche ci sposteremo da una parte all’altra
delal curva, quindi dobbiamo sottrare solo una parte di questa pendenza.

fa

3
a
costo
fill f 31
Questa frazione della pendenza da sottrare si chiama Tasso di apprendimento è LEARNING RATE, ma come faccio a trovare
la pendenza della retta nel punto? è la derivata nel punto, in questo caso la derivata della pendenza è f’(b)=2(b-3)

Addestriamo la rete

Assegnamo un input, la rete associa de valori casuali ai pesi e bias, il tutto viene normalizzato dato dalla funzione sigmoide,
in output avremo una previsionec p.

Questa fase appena descritta prende il nome di FOWARD Propagation cioè propagazione i navante, adesso entra in gioco la
funzione di costo, (p-obbiettivo)^2, il nostro scopo è minimazzare la funzione ci costo

Costo WeWe b sigmoide ma W mare b ober p


int mi wipes

output noi vogliamo calcolare la pendenza che corrisponde


adesso alla

derivata della funzione di costo rispetto p chi sarebbe la


pesi

a
input me
III

modo
2 pe

Wit

Innato
we frazionalpendenzo della retta tangenti
I
we w LR
tff
learning rata derivataparzialerispetto

peso

mai finiamo lo

nemmiMII

non ho ben così questo passaggio

III ftp.IF G.IE

P sigmoide

Insiwetzawsthin a

digit sigla
le sigla

da

Wat Mart bias


21mi me

aw

questo procedimento lo usiamo anche

acosto
per trovare chialtri 2

any 2gpf.IE It incognita

IET FI It In

It soso.zt.IE

Osserviamo che li derivati sono uguali tranne che l'ultimo termine


per

Quindi

i nuovi valori di wa W al sorani

we we a
III wa un La III la b in III
Il settaggio all'indietro di nuovi valori di wa W eh si chiama BACK Propagation

Potrebbero piacerti anche