vuoi
o PayPal
tutte le volte che vuoi
Durante la fase di training l’obiettivo è scegliere le feature più
appropriate e costruire - a partire dagli esempi - le migliori regioni
di decisione
2. Deep Learning
- Non richiede molta esperienza del settore da parte del
progettista
- Richiede una grande quantità di dati
- Il ragionamento seguito dalla macchina per arrivare alla
soluzione potrebbe essere di difficile comprensione per noi
umani
In sostanza, in questo approccio è la rete neurale ad apprendere
automaticamente le caratteristica rilvenati (feature) dei dati da
utilizzare per risolvere i problemi;
dato che le soluzioni sono elaborate basandosi su fetaure scelte dalla
macchina, il ragionamento segutio da ques’utlima ci appare come una
black box, non siamo in grado di spiegarlo con facilità.
Consideriamo sempre il caso di un’applicazione che verifichi la
presenza di DPI indossati dagli operari.
In questo caso, la macchina impara autonomamente con gli esempi a
capire quali sono le feature che permettono di riconoscere lo specifico
DPI, senza che queste debbano essere state fornite in precedenza da
un esperto umano.
Le feature migliori vengono apprese direttamente dai dati (immagini
con label note) e sono molto più discriminanti; infatti, le categorie di
DPI sono decisamente più distanti tra loro.
Dato il vettore di feature, il sistema stabilisce sulla base delle regioni
di decisione la classe attesa a cui appartiene l’immagine.
A questo punto, si comprendono i motivi per cui l’AI sia così potente:
- Il numero di esempi può crescere enormemente, aumentando l’accuratezza del
modello aprreso
- Le prestazioni possono superare quelle umane quando il training set è grande e
rappresentativo
Rimanendo nell’ambito del machine learning, esistono 3 possibili modalità di
apprendimento:
1. Supervised learning (il più comune) → il sistema intelligente apprende da esempi
del problema in esame la cui soluzione è nota; vengono forniti degli esempi
etichettati, ossia input il cui output è noto, e lo scopo è trovare una funzione che
mappi gli input ai corrispettivi output
2. Unsupervised learning → il sistema intelligente impara a dividere i dati in gruppi
(cluster) omogenei rispetto all’obiettivo dell’applicazione; in questo caso non ci sono
etichette nei dati, il sistema cerca da solo schemi o strutture nascoste, lo scopo è
scoprire gruppi naturali (cluster) e regolarità nei dati
3. Reinforcement learning → il sistema intelligente viene pre-addestrato per svolgere
il compito, ma poi migliora nel tempo interagendo con l’ambiente e imparando dagli
errori tramite ricompense o penalità
I problemi di supervised learning (apprendimento supervisionato) si dividono in 2 tipi:
- Regressione → l’output da riconoscere ha valori continui
- stima del prezzo di una casa
- stima dell’età di una persona
- analisi finanziarie
- …
- Classificazione → l’output da riconoscere è una classe o categoria discreta
- riconoscimento del genere di una persona
- sentiment analysis
- classificazione di tumori
- …
Sempre nel contesto del machine learning, diamo a questo punto una definizione di reti
neurali.
Si tratta di algoritmi che effettuano l’apprendimento da esempi, tentando di riprodurre il
comportamento del cervello umano.
Queste reti hanno vissuto storicamente 3 ondate:
- Cibernetica → studio di singoli neuroni biologici, in maniera tale da tradurli in modelli
computazionali
- Connessionismo → studio di reti neurali costituite da più neuroni
- Deep Learning → utilizzo di reti neurali con molti livelli di neuroni
Durante l’ondata della cibernetica, il modello matematico di neurone che andato ad
affermarsi è il percettrone di Rosenblatt.
Tale modello prende in input una serie di valori numerici (feature), li pesa, li somma e decide
se attivarsi o meno.
Così come nel neurone biologico, anche in questo corrispettivo matematico vi è o meno
attivazione a seconda che ci sia un’adeguata stimolazione.
Possiamo rappresentare gli input come un vettore (x1, x2, …, xn)
Possiamo rappresentare i pesi associati agli input come un vettore (w1, w2, …, wn)
Possiamo poi indicare un valore b, detto bias, indiepndente dagli input, che può essere utile
per regolare la soglia di attivazione del neurone.
Il calcolo che viene effettuato è il seguente:
- Si fa la somma pesata degli input per i relativi pesi, sommando poi il bias
z = w1x1 + w2x2 + … + wnxn + b
- Il valore ottenuto va passato in ingresso ad una funzione di attivazione (in genere,
una funzione a gradino) che decreta se l’input sia o meno sufficiente a far attivare il
neurone
output = { 1 se z >= 0,
0 se z < 0 }
Il percettrone apprende modificando i pesi dopo ogni esempio errato:
1. Calcola l’output del modello
2. Confronta con l’output corretto (etichetta)
3. Se sbaglia, aggiorna i pesi
Il limite di tale modello è però che funziona solo per problemi linearmente separabili (ad
esempio, AND o OR), ma non riesce a risolvere problemi non lineare (ad esempio, XOR);
questo significa che il percettrone non può trovare una soluzione se i dati non possono
essere separati da una retta (in uno spazio delle feature 2D), da un piano (in uno spazio
delle feature 3D) o, più in generale, da un iperpiano.
Per risolvere questo problema si è giunti al percettrone multilayer (MLP), figlio del
connessionismo.
Il percettrone multilayer è un’evoluzione del percettrone semplice che riesce a risolvere
anche problemi che non siano linearmente separabili.
Tale rete neurale è composta da più strati di percettroni:
- 1 strato di input → riceve gli input dall’esterno
- 1 o più strati nascosti → non comunicano con l’esterno (nascosti), si
occupano di scoprire i pattern nascosti nei dati
- 1 strato di output → trasmette gli output all’esterno
Ogni neurone (unità) in uno strato è connesso a tutti i neuroni dello strato successivo,
creando una rete fully connected