Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
FONDAMENTI MATEMATICI
CONNESSIONISMO
APPRENDIMENTO SUPERVISIONATO
DOMANDE
1. Spiega come la regola di Hebb possa essere utile per scoprire regolarità statistiche
2. perché l’apprendimento competitivo può essere definito una forma localistica di riduzione della
dimensionalità
3. apprendimento hebbiano: applicazioni nel campo dell’apprendimento supervisionato e non
supervisionato
4. spiega l’applicazione della tecnica simulated annealing nelle reti di Hopfield e nelle reti di
Boltzmann
5. quale è il vantaggio nell’utilizzo di una funzione stocastica (sigmoide) rispetto ad una funzione
deterministica (a scalino) nelle reti di Hopfield
6. i limiti principali delle reti di Hopfield e possibili modifiche per superarli
7. divergenza contrastiva: in cosa consiste. perché la fase positiva viene definita “data driven”,
mentre quella negativa “model driven”. come avviene l’aggiornamento dei pesi.
8. riporta l’esempio pratico di estrazione di features visive da immagini naturali
Definizione rete neurale artificiale
Una rete neurale non è altro che un algoritmo di natura statistica che dato in input un insieme di
dati ci fornisce in output un altro insieme di dati correlato all'input. La particolarità è che noi non
gli forniamo la funzione statistica che correla output a input: è la rete neurale stessa che la "scopre"
durante un processo che si chiama "fase di apprendimento".
• Ogni cerchio è un "neurone", che ha vari input e output (frecce nere);
• Ogni freccia indica il collegamento che c'è tra un neurone e l'altro, in pratica come ogni
informazione passa da un neurone all'altro. Non tutta l'informazione (rappresentata come un valore
numerico) viene passata al neurone successivo, ma essa viene moltiplicata per il "peso" del
collegamento.
• I neuroni sono raggruppati in livelli: quello di input, che riceve le informazioni di input, quello
"nascosto", e quello di output, con 2 neuroni in questo caso.
Durante la fase di apprendimento di una rete neurale, la rete neurale indovina la funzione statistica
di correlazione tra input e output andando ad agire sui pesi delle connessioni.
Le reti di Jordan
Sono un esempio di reti neurali ricorrenti semplici. La connessione ricorrente parte dalle unità di
output e raggiunge i neuroni contesto, la cui attivazione è determinata dalle auto-connessioni che
ciascun neurone contesto ha con se stesso e dalle attivazioni che riceve dalle unità di output della
rete. Il neurone contesto si aggiorna sulla base dello stato precedente del neurone di output e sugli
stati passati. È possibile addestrare le reti di jordan tramite algoritmo di back-propagation,
trasformando le strutture ricorrenti in reti statiche feed-forward concatenate, in modo che l’output
della prima rete diventi l’input ricorrente nella seconda rete e ne influenzi le unità di input.
L’apprendimento avviene tramite aggiornamento dei pesi ad ogni livello. Ogni livello è un passo
nel tempo.
Applicazioni delle reti di jordan: riconoscimento del parlato, riconoscimento di azioni, predizione
dinamica di oggetti in movimento, generazione di testo o musica.
Le reti di Elman prevedono che le connessioni ricorrenti siano tra le unità nascoste e i neuroni
contesto. Dunque utilizzano le rappresentazioni interne che contengono sia lo stato precedente di
input sia lo stato futuro dell’output. Per ogni neurone presente nello strato nascosto si aggiunge
un’unità di contesto che riceve come input l’output del neurone nascosto corrispondente, e
restituisce il proprio output allo stesso neurone nascosto. L’idea alla base: ricevendo in input una
sequenza di dati si elabora una nuova sequenza di dati in output ottenuta ricalcolando
successivamente i dati degli stessi neuroni.
Le reti di kohonen o mappe auto-organizzanti sono reti neurali artificiali feed-forward addestrate
con algoritmi di apprendimento non supervisionato. Hanno due strati costituenti: uno strato di input
e un layer competitivo output i cui neuroni sono connessi gli uni con gli altri (con meccanismi di
inibizione laterale) e con sé stessi (autoconnessione). La struttura topologica dello strato
competitivo è definita da una funzione di vicinato rappresentata “a cappello messicano” o tramite
curva di gauss, in cui neuroni vicini avranno connessioni forti eccitatorie, che andranno ad
indebolirsi per neuroni sempre più lontani, fino a diventare inibitorie e poi nulle per i neuroni
estremamente lontani. L’apprendimento competitivo è definito dalla dinamica winner takes all: per
ogni input fornito alla rete, un solo neurone in output risulterà vincitore con il massimo
dell’attivazione (=1). Il neurone vincente identifica la classe d’appartenenza dell’input e
rappresenta il prototipo della variabile in ingresso. Lo scopo dell’apprendimento è avere per input
simili, neuroni vincenti vicini (individuare in un certo insieme, partizioni di dati omogenei). È un
esempio di funzione plausibile biologicamente: pensiamo alla corteccia somatosensoriale.
Sono molteplici i fattori che hanno contribuito allo sviluppo del deep learning:
- L’avvento dei big data, cioè grandi quantità di dati utilizzati come training set digitali
- L’ottimizzazione dei processori di calcolo. Pensiamo all’hardware GPU che oltre essere più
piccolo, maneggevole e veloce dei predecessori, permette un’elaborazione massiva di dati in
parallelo.
- L’attenzione al campo dell’ingegneria neuromorfica, il cui principio è quello di creare sistemi
artificiali che traggano ispirazione e si modellino sulla base dei neuroni biologici. i memristori sono
un tipo di semiconduttori la cui resistenza varia in funzione del flusso di corrente e della carica.
Questi componenti sono estremamente veloci e consumano molta meno energia.
- L’interesse per la computer vision ha stimolato e supportato lo sviluppo di reti sempre più
plausibili dal punto di vista biologico, un esempio sono le reti neurali convoluzionali.
Altri fattori che hanno contribuito: l’inizializzazione dei pesi non casuale, un learning rate in grado
di modificarsi in modo coerente con il gradiente, l’ingrandirsi delle macchine con un’ottimizzazione
delle tecniche di regolarizzazione, funzioni di attivazione che prevengono il vanishing gradient
PERCETTRONE
Per trovare un vettore che classifichi correttamente un insieme di esempi nasce la regola di
apprendimento del percettrone, una delle prime regole di apprendimento supervisionato per un
neurone artificiale. Consideriamo il neurone j da addestrare, che riceva n input reali e restituisca
output binario (anche se può essere usata una regola analoga nel caso di output bipolare). Scegliamo
il vettore di pesi iniziale e il bias iniziale. Per aggiornare i pesi, dato un esempio, se L’OUTPUT
DELLA RETE è UGUALE AL TARGET DESIDERATO , i pesi restano invariati; • se l’output
effettivo è diverso da quello desiderato, si aggiornano i pesi calcolando il prodotto tra il tasso di
apprendimento, il target e il valore di input.
Si può dimostrare che, qualora esistano un vettore di pesi e un bias che classificano correttamente
un insieme di esempi, l’algoritmo del percettrone converge a una soluzione in un numero finito di
passi. Questa regola è dunque molto utile nell’addestramento di separatori lineari, applicabile
esclusivamente a problemi linearmente separabili.
REGOLA DELTA
Metodo di addestramento della rete che punta alla minimizzazione dell’errore tramite discesa del
gradiente. Si basa sullo scarto quadratico medio tra output e target (output desiderato). Questo
metodo di aggiornamento dei pesi permette di ottenere in output una soluzione che approssimi al
meglio il concetto target. Si sceglie un punto di partenza w0 nel dominio, poi ci si muove
iterativamente nella direzione opposta al gradiente (che indica direzione di crescita di E[w]. È
possibile addestrare una rete cercando di minimizzare contemporaneamente tutti gli addendi che
compongono E, nel qual caso si parla di addestramento batch, oppure si considera gli esempi in
modo isolato e si calcolano gli output effettivi uno per volta, nel qual caso si parla di addestramento
online.
Un primo problema comune ad ogni applicazione del metodo dei gradienti: questo metodo cerca
iterativamente un minimo di una funzione "scorrendo" il grafico, ma si può facilmente incastrare in
minimi locali. una possibile tecnica per evitare i minimi locali è modificare il metodo aggiungendo
una componente di "rumore artificiale" con distribuzione gaussiana, la cui media sia nulla e la cui
varianza diminuisca con l’avanzare delle iterazioni (annealing). Questo rumore permette di evitare
soluzioni subottimali, permettendo di evitare le valli del grafico che non siano dei minimi globali,
e la diminuzione graduale della componente stocastica fa sì che questa non comprometta la
convergenza. Un secondo problema è la scelta del tasso di apprendimento η: un tasso troppo grande
può risultare nella mancata convergenza del metodo, mentre un tasso troppo piccolo rende la
convergenza più probabile, ma anche molto più lenta. Per affrontare questo problema sono state
proposte varianti del metodo in cui ad ogni modifica del peso si aggiunge una componente che
rappresenta una sorta di "quantità di moto" (momentum) secondo la formula con α costante che
determina l’effetto di ogni passo del cambiamento di peso sul passo successivo. Questo
cambiamento permette di evitare grandi oscillazioni qualora si scelga un tasso di apprendimento
alto, consentendo di accelerare il processo di minimizzazione evitando rischi
Backpropagation
La backpropagation, semplificando e senza entrare nei dettagli matematici, non è altro che un
metodo di apprendimento delle reti neurali che funziona in questo modo:
1. Dò alla rete neurale l'input e calcolo l'output con pesi random.
2. Calcolo la differenza tra output ottenuto e output atteso (Errore della rete).
3. Con questo errore vado a modificare i pesi dei livelli nascosti e poi dell'input, prima agendo su
quelli più vicini all'output e poi man mano sempre più lontani, andando all'indietro rispetto a come
si muove normalmente l'informazione all'interno di una rete (input -> output).
4. Ricomincio dal punto 1 con una nuova coppia di input-output, senza però randomizzare i pesi.
Il problema della scomparsa del gradiente ( vanishing gradient problem) è un fenomeno che crea
difficoltà nell'addestramento delle reti neurali profonde tramite retropropagazione dell'errore
mediante discesa stocastica del gradiente. Il gradiente diminuisce col passare del tempo e delle
iterazioni, fino a diventare così piccolo da svanire, non riuscendo quindi ad aggiornare i pesi. Se
aggiungiamo molteplici strati nascosti, il segnale d’errore dovrà superare più livelli di retro-
propagazione prima di arrivare a quelli di input. In particolare il problema è evidente con la funzione
di attivazione sigmoide che tende a saturare, e quindi tende a zero, quando la somma pesata degli
input è troppo grande o piccola. Il cambiamento di peso è proporzionale alla derivata della funzione
di attivazione calcolata nello stato interno del neurone. Questo significa che nel momento in cui i
pesi diventano molto grandi, la derivata della funzione di attivazione tenda a zero, portando i
cambiamenti nei pesi a diventare sempre più piccoli. Questo fa sì che il neurone diventi lento ad
imparare dopo una certa quantità di esempi.