00:00:00
avrete sicuramente notato che i telefoni
00:00:02
da un po di anni sono in grado di
00:00:04
rispondere alle domande o che per
00:00:05
esempio google e immagini sia capace di
00:00:07
riconoscere più o meno cosa ci sia in
00:00:09
una foto qualsiasi
00:00:11
ecco questa applicazione utilizzano
00:00:12
proprio lei reti neurali per funzionare
00:00:15
con questo e con i video seguenti
00:00:18
cercherò di spiegare nel modo più
00:00:19
semplice possibile anche la matematica
00:00:20
che c'è dietro questa idea e alla fine
00:00:23
saremo in grado di costruire una rete
00:00:24
neurale tutta nostra usando python così
00:00:28
anche se non doveste avere nessuna idea
00:00:30
su che diamine sia una rete neurale alla
00:00:32
fine di questi video avrete una buona
00:00:33
base sull'argomento
00:00:36
cominciamo subito con un esempio per
00:00:37
capire il tipo di problema che vogliamo
00:00:39
risolvere
00:00:40
facciamo finta di essere degli
00:00:41
esploratori della natura selvaggia che
00:00:43
vogliono distinguere due specie diverse
00:00:45
di gattini puccetti il gatto della
00:00:47
giungla e il gatto delle sabbie i più
00:00:51
furbi di voi potranno dire beh uno vive
00:00:52
nella giungla e l'altro nelle sabbie è
00:00:56
vero ma l'idea sarebbe riuscire a
00:00:58
distinguerli delle loro caratteristiche
00:00:59
per esempio massa lunghezza quindi
00:01:02
pesiamo e misuriamo un po di gattini di
00:01:04
cui conosciamo già la provenienza e
00:01:06
annotiamo quello che troviamo in una
00:01:07
tabella quello che abbiamo appena
00:01:10
costruito si chiama dataset che di fatto
00:01:12
non è altro che un gruppo di numeri di
00:01:14
etichette con scritto la specie di gatto
00:01:16
in questo caso ora si presenta un nuovo
00:01:19
gatto di cui non sappiamo ancora nulla
00:01:21
se non che può essere dell'una o
00:01:23
dell'altra specie
00:01:24
prendiamo anche il suo peso la sua
00:01:25
lunghezza come possiamo fare per capire
00:01:28
di che specie si tratti beh vedendo i
00:01:30
dati raccolti ci rendiamo conto che i
00:01:32
gatti della stessa specie hanno pesi
00:01:34
lunghezze simili quindi potremmo
00:01:36
memorizzare e confrontare questi numeri
00:01:37
ogni volta ma sarebbe un po meno set
00:01:40
quindi facciamo un bel grafico inserendo
00:01:41
i valori trovati come coordinate tipo
00:01:43
battaglia navale sull'asse orizzontale
00:01:47
mettiamo i pesi e su quello verticale le
00:01:49
lunghezze
00:01:49
quindi il primo sarà il punto 9 70 il
00:01:54
secondo 2 50 e così via per tutti gli
00:01:57
altri
00:02:00
fatto questo
00:02:01
facile notare come i due tipi di gatti
00:02:03
siano divisi in due gruppi distinti ora
00:02:06
inseriamo anche le coordinate del gatto
00:02:08
misterioso vedendo dove si trova
00:02:11
possiamo dire quasi con certezza che si
00:02:13
tratti di un gatto delle sabbie potremmo
00:02:16
ritenerci soddisfatti ma cosa
00:02:18
succederebbe se dovessimo ragionare su
00:02:20
10 mila e 100 mila misure invece che 10
00:02:22
dovremmo inserire ogni volta nel grafico
00:02:25
manualmente
00:02:26
non so voi ma io non ne ho una gran
00:02:28
voglia fortunatamente il computer viene
00:02:30
in nostro aiuto possiamo infatti ad
00:02:32
estrarlo a capire come distinguere i
00:02:34
gatti al posto nostro
00:02:35
per capire come funzioni tutto il
00:02:37
processo dovremmo capire prima che cosa
00:02:39
significhi questo piccolo disegno si
00:02:42
tratta solo del diagramma di una rete
00:02:44
neurale molto semplice che di fatto è un
00:02:46
programma che viene eseguito dal
00:02:47
computer
00:02:48
lo schema ci aiuta a ragionare un po più
00:02:50
facilmente sul problema li prendiamo
00:02:53
parte del dataset di prima ora invece di
00:02:55
fare un grafico lo daremo in pasto alla
00:02:57
rete neurale otterremo in uscita una
00:02:59
previsione quindi questi due nodi sono
00:03:01
gli ingressi o input mentre quest'altro
00:03:04
c spunterà fuori la previsione o output
00:03:07
inseriamo quindi i primi dati abbiamo
00:03:10
ricevuto in uscito un numero ora
00:03:12
dobbiamo interpretare questo numero che
00:03:14
possiamo decidere noi in che modo
00:03:15
a patto di interpretare tutti gli altri
00:03:18
numeri in uscita con lo stesso criterio
00:03:20
in questo caso diciamo se il numero si
00:03:23
avvicina a 1 allora il computer sta
00:03:25
cercando di dirci che si tratta di un
00:03:27
gatto delle sabbie mentre se si avvicina
00:03:29
più a 0 allora sarà un gatto della
00:03:31
giungla scusa gatto della giungla 6 10
00:03:34
se però non vi foste accorti il
00:03:36
risultato che abbiamo ottenuto è vicino
00:03:38
a 1 quindi il computer pensa che sia un
00:03:39
gatto delle sabbie mentre le misure
00:03:41
erano di un gatto della giungla
00:03:44
quindi questa rete numerale fa schifo e
00:03:46
dai risultati a casaccio sì ma
00:03:49
scopriremo più avanti perché adesso
00:03:52
vogliamo provare prima capire da dove
00:03:53
salti fuori questo 0.9 dal punto di
00:03:57
vista matematico una rete neurale è una
00:03:59
funzione che cavolo è una funzione
00:04:02
e semplicemente una relazione tra
00:04:03
ingressi e uscite come una macchinetta
00:04:06
del caffè ad ogni codice è associata una
00:04:09
bevanda questa relazione può essere
00:04:11
qualsiasi cosa per esempio una cassa ad
00:04:13
un numero in ingresso il suo doppio
00:04:16
come vedete il numero l'ingresso può
00:04:17
variare e quindi matematica prende il
00:04:19
nome molto originale di variabile
00:04:22
possiamo immaginare una variabile come
00:04:25
una scatoletta che può contenere
00:04:26
qualsiasi numero e quindi definiremo la
00:04:29
funzione doppio nel seguente modo
00:04:32
quindi se la nostra scatoletta s
00:04:34
contiene il numero 7 per esempio avremo
00:04:36
che doppio di 7 è uguale a 2 per 7
00:04:40
quindi 14 se sostituiamo la relazione
00:04:43
con una freccia otteniamo quello che
00:04:45
avevamo prima con la macchinetta del
00:04:46
caffè ma è molto più comodo scrivere non
00:04:49
nel modo appena trovato quindi torniamo
00:04:51
alla rete neurale di partenza è una
00:04:53
funzione che ha due variabili in
00:04:55
ingresso o input è una sola uscita
00:04:57
chiamiamo questi nodi m1 ed m 2 dove m
00:05:01
sta per misura quindi saranno le misure
00:05:03
del nostro gatto di prima
00:05:05
queste due connessioni invece prendono
00:05:07
il nome di pesi always in inglese che fa
00:05:09
più figo che chiameremo w1 w2 quindi per
00:05:14
aver la previsione gli ingressi vengono
00:05:16
pesati ovvero moltiplicati per i pesi e
00:05:19
poi vengono sommati a questa somma viene
00:05:21
aggiunto un altro valore che si chiama
00:05:23
bayern ma per il momento non ci
00:05:25
interessa
00:05:26
vedremo nel prossimo video cosa serve
00:05:28
lasciamolo qui per questo tipo di
00:05:30
problema vogliamo che il valore in
00:05:32
uscita sia tra 0 e 1 15 serve un modo
00:05:35
per schiacciare i nostri risultati tra
00:05:36
questi due valori e per fare questo ci
00:05:39
serviamo di un'altra funzione che si
00:05:40
chiama sigg mode ed è definito in un
00:05:42
modo un po più brutto della nostra
00:05:44
funzione di doppioni prima però il
00:05:46
principio è lo stesso queste
00:05:51
qui sotto è un'altra funzione che si
00:05:52
chiama esponenziale e anche questa
00:05:54
restituisce dei valori in uscita quando
00:05:56
si modifica il valore della variabile se
00:05:58
proviamo a giocare un po con la funzione
00:06:00
sigma idee ci rendiamo conto che
00:06:01
qualsiasi valore mettiamo l'ingresso
00:06:03
otteniamo in uscita sempre un numero tra
00:06:05
0 e 1 proprio come volevamo
00:06:07
capiamo perché è così vedendo il grafico
00:06:10
di questa funzione cambiano del valore
00:06:12
ming resso che sta sull'asse orizzontale
00:06:14
otteniamo valori in uscita sull'asse
00:06:16
verticale che sono bloccati tra 0 e 1
00:06:20
quindi in pratica la nostra funzione in
00:06:23
rete neurale rn sarà definita come rnd
00:06:26
m1 m2 uguale am uno per uno più m2 per
00:06:30
v2 più b tutto questo viene schiacciato
00:06:34
dalla funzione sigma ed ora sostituiamo
00:06:37
i valori in ingresso con quelli del
00:06:39
primo gatto e ci rendiamo conto che
00:06:42
manca qualcosa per fare i conti i valori
00:06:45
dei pesi v1 ev ii e del bayern b ebbene
00:06:48
questi valori sono inizialmente a
00:06:50
casaccio quindi è facile capire perché
00:06:52
anche il risultato 0.9 di prima sia
00:06:54
casuale il computer all'inizio non ha
00:06:57
proprio idea che quelle che gli abbiamo
00:06:58
dato siano le misure dei gattini quindi
00:07:00
dobbiamo insegnargli facendogli vedere
00:07:02
degli esempi proprio come si fa con un
00:07:04
bambino quello che stiamo facendo
00:07:06
effettivamente modificare i valori dei
00:07:09
pesi e del bayern affinché ai risultati
00:07:11
corrispondano a quelli desiderati come
00:07:14
questo avvenga esattamente sarà
00:07:15
argomento dei prossimi video grazie per
00:07:18
aver guardato