IA Definitivo PDF - La versione più moderna di reti neurali, i deep neural networks (deep learning), PDF

Title IA Definitivo PDF - La versione più moderna di reti neurali, i deep neural networks (deep learning),
Course Intelligenza Artificiale
Institution Università degli Studi di Padova
Pages 30
File Size 1.7 MB
File Type PDF
Total Downloads 60
Total Views 139

Summary

La versione più moderna di reti neurali, i deep neural networks (deep learning), sono i più utilizzati al momento.
In psicologia e neuroscienze le reti neurali sono utilizzate per riprodurre abilità cognitive/aspetti del comportamento umano. L’idea di fondo è quella di studiare come è possibil...


Description

INTELLIGENZA ARTIFICIALE Sviluppi dell’IA simbolica: sistemi basati sulla conoscenza Struttura: – Rappresentazioni simboliche strutturate (base di conoscenza) – Sistema di regole (motore inferenziale) Limitazioni: – Conoscenza sul dominio deve essere trasmessa da un esperto umano per essere codificata in modo esplicito – Difficoltà a trasmettere conoscenze empiriche (informali, o implicite) – Il sistema elabora in modo deterministico Recenti estensioni: – Approccio probabilistico – Apprendimento da dati Computazione Neurale E’ un paradigma di elaborazione dell’informazione che è alternativo a quello della computazione digitale (termine inglese: neural computing/ neural computation) Si basa su un’architettura ad elaborazione distribuita e parallela ispirata dal funzionamento del cervello e che utilizza: – Semplici unità di elaborazione – Un elevato grado di interconnessione – Semplici messaggi numerici scalari («analogici») – Interazioni adattive tra elementi Proprietà principali: – Apprendono dall’esperienza e possono rispondere in modo adeguato a situazioni nuove – Non richiedono conoscenza esplicita del problema – Si adattano a situazioni caotiche e/o contraddittorie (“rumore”) Reti Neurali Artificiali Le reti neurali sono sistemi di elaborazione informazioni caratterizzate dalla capacità di apprendere. Il termine “machine learning”, indica un insieme di metodi e algoritmi che permettono ad un software di apprendere dai dati: le reti neurali costituiscono uno di questi metodi, prendendo ispirazione dal funzionamento dei sistemi biologici. La versione più moderna di reti neurali, i Deep Neural Networks (deep learning), sono i più utilizzati al momento. In psicologia e neuroscienze le reti neurali sono utilizzate per riprodurre abilità cognitive/aspetti del comportamento umano. L’idea di fondo è quella di studiare in che modo sia possibile ricostruire le funzioni cognitive come proprietà emergenti di un sistema neurale. Principi Base delle Reti Neurali Le reti neurali sono formate da neuroni: un neurone rileva il verificarsi di una o più condizioni e segnala ciò che ha rilevato attraverso la sua frequenza di scarica. La frequenza di scarica può essere graduale, procedendo da un minimo (frequenza a riposo), fino ad un massimo che indica una condizione pienamente verificata. Il neurone solitamente è specializzato per rilevare una specifica condizione: si creano rilevatori più complessi tramite la somma di rilevatori semplici. Solitamente i neuroni sono organizzati in gerarchie di strati; la complessità emerge quindi dall’integrazione di informazioni. Le interazioni tra neuroni sono adattive e si modificano attraverso l’apprendimento, mantenere attiva un’informazione significa mantenere l’attività di un nucleo di neuroni anche dopo che lo stimolo non è più presente.

Neurone Neurone “formale”: modello matematico del neurone, cerca di catturare solo gli aspetti fondamentali del funzionamento neuronale. Esso è costituito da un “soma”, connessioni di input provenienti da altri neuroni e connessioni di output verso altri neuroni. I segnali in ingresso vengono integrati tramite una somma ponderata. Il peso rappresenta la forza della sinapsi, è rappresentato da un semplice numero, positivo o negativo (l’apprendimento modula gradualmente i valori di peso sinaptico). Un peso positivo rappresenta una connessione eccitatoria, un peso negativo rappresenta una connessione inibitoria, qualunque segnale proveniente da un neurone viene poi moltiplicato per il relativo peso sinaptico. L’attivazione è un valore tipicamente compreso tra 0 (spento) e 1 (carica massima), rappresentante la frequenza di scarica. Da ogni linea di ingresso arriva un particolare segnale, ogni connessione ha il suo specifico peso (negativo o positivo, non ha veri e propri limiti di quantità). L’input totale è rappresentato dalla sommatoria pesata di tutti i segnali di ingresso. Valori troppo alti non vanno bene per essere propagati, l’input totale viene quindi trasformato in un valore di output finale che va da 0 a 1. La funzione di attivazione (quella più utilizzata è una sigmoide, la quale ha anche una spiegazione biologica: la relazione è lineare all’inizio e può raggiungere saturazione. vedi slide). Basi Biologiche Un neurone che risponde ad una barra orientata, in realtà risponde a barre orientate perché è connesso in un determinato modo ad altri neuroni. Il neurone è sempre lo stesso, come lo è il suo meccanismo di funzionamento: quello che conta è la connettività con gli altri neuroni. Prendendo in considerazione un neurone della corteccia V1, una fonte luminosa puntiforme presentata al centro del suo campo recettivo, produce una risposta debole. Se viene presentata una luce diffusa, non si ottiene nessuna riposta: questo si collega alla nozione di campo recettivo, costituito da una zona centrale e una periferica. La luce diffusa non produce riposta perché vengono stimolate sia la parte eccitatoria che quella inibitoria del campo. Una luce puntiforme al centro produce una piccola riposta perché si stimola solo

una piccola parte della zona eccitatoria. Il neurone può avere un tipo di campo recettivo complesso perché riceve da neuroni più semplici che possiedono campi recettivi ancora più elementari. La complessità delle risposte di qualunque neurone, di conseguenza, dipende esclusivamente dalla connettività con gli strati precedenti.

Reti di Neuroni L’architettura identifica due aspetti: topologia e schema di connettività 1. Topologia: disposizione dei neuroni all’interno della rete. Di solito si hanno gruppi di neuroni diversi chiamati strati (layers). Si possono distinguere tipi diversi di strati, ne esistono di 3 tipi fondamentali: neuroni di input (ricevono direttamente dall’ambiente). Si chiama strato di input l’insieme di neuroni che ricevono segnali di ingresso. Neuroni di output (ogni neurone corrisponde ad una categoria di output). Si chiama strato di output quello dove viene rappresentato lo stato finale della rete. Unità nascoste (hidden) (non sono a contatto con l’ambiente, né input né output). Possono anche non esserci strati nascosti, se ne è presente più di uno si parla di rete profonda. 2. Schema di connettività: Le connessioni più semplici sono unidirezionali e vengono chiamate reti “feed forward”, dall’input all’output passando per le unità nascoste se presenti. È un tipo di elaborazione che potremmo definire “bottom up”. Un’elaborazione “top down” richiede feedback, quindi connessioni bidirezionali. Questa rete viene chiamata “ricorrente”, l’informazione può tornare a strati precedenti. Esistono algoritmi di apprendimento che richiedono un’architettura ricorrente (come nel cervello). Si hanno invece reti interamente ricorrenti quando abbiamo connessioni infra-strato.

Tipologie di Apprendimento 1. Apprendimento supervisionato: viene fornito anche l’output desiderato, lo scopo è quello di imparare a produrre l’output corretto da un nuovo input. 2. Apprendimento non supervisionato: lo scopo è di costruire rappresentazioni dell’input scoprendone le proprietà più rilevanti ed informative. Queste possono successivamente essere utilizzate per il ragionamento, la decisione, la comunicazione… 3. Apprendimento per rinforzo: il sistema produce azioni che hanno un effetto sul mondo e riceve rinforzi o punizioni. Lo scopo è imparare ad agire in un modo che massimizza il rinforzo nel lungo termine.

Apprendimento Automatico (Machine Learning) Il termine Machine Learning indica un insieme di metodi ed algoritmi che permettono ad un software di apprendere dall’esperienza. Gli algoritmi dipendono direttamente dai dati, esistono vari tipi di apprendimento con scopi diversi. La qualità dell’apprendimento di norma migliora all’aumentare del numero di esempi disponibili per l’apprendimento (ideale per Big Data). Le reti neurali artificiali sono uno dei metodi di machine learning (es. metodi “kernel”, es SVM) e sono alla base del deep learning.

Apprendimento nelle reti neurali: aspetti generali •Valori iniziali dei pesi sinaptici vengono assegnati in modo casuale (es. tra -0.1 e +0.1) o impostati a zero. •Presentazione ripetuta dei pattern di addestramento. - Apprendimento supervisionato: input + target (output desiderato). - Apprendimento non-supervisionato: solo input

•L’apprendimento consiste nella modifica dei pesi, ovvero il calcolo di w rispetto a w precedente. L’aggiornamento può avvenire dopo ogni pattern (on-line learning) oppure dopo ogni epoca di apprendimento (batch learning). •Per non stravolgere o cancellare le conoscenze precedentemente apprese, viene utilizzata solo una frazione della modifica sinaptica calcolata, definita tramite la costante -learning rate (tasso di apprendimento). Quindi:

APPRENDIMENTO SUPERVISIONATO La rete impara ad associare ad un dato input uno specifico output, che deve essere fornito esplicitamente alla rete durante l’apprendimento, nella forma di output desiderato (risposta corretta). Tutti gli esempi per l’apprendimento devono essere etichettati (labeled data). Algoritmi: • Regole Hebbiane per l’apprendimento associativo • Percettrone • Regola Delta • Back propagation Applicazione: classificazione, approssimazione di funzioni, predizione Relazione con metodi statistici: modello lineare generalizzato (GLM), regressione, analisi discriminante. Regola di Hebb: forma più semplice di apprendimento, se due neuroni collegati tra loro sono contemporaneamente attivi, l’efficacia sinaptica della connessione viene rinforzata. Questo tipo di regole viene utilizzato più spesso nell’apprendimento non supervisionato. Tutte le regole Hebbiane rinforzano le connessioni allo stesso modo della regola di Hebb. Inoltre:

• • •

La regola postsinaptica diminuisce l’efficacia sinaptica (peso) quando il neurone postsinaptico è attivo ma quello presinaptico non lo è. La regola presinaptica diminuisce l’efficacia sinaptica quando il neurone presinaptico è attivo ma quello postsinaptico non lo è. La regola della covarianza è formulata esattamente come quella di Hebb ma si basa su neuroni bipolari e non binari. Questo permette di ottenere una regola di apprendimento più efficace (rinforza e indebolisce).

Caratteristiche generali dell’apprendimento supervisionato • • • •



Training set: esempi di problema Input: dati del problema (V.I.) Output: soluzione (V.D.) Addestramento: esempio → output basato su interazione tra input/variabili della rete (pesi) → confronto soluzione prodotta e attesa (scostamento) → modifica (ottimizzazione) dei parametri per ridurre lo scostamento. Verifica delle capacità di generalizzazione su nuovi dati (test set)

Regola del Percettrone La rete viene addestrata presentando esempi formati da un vettore X di ingresso ed una risposta t desiderata: entrambe utilizzano valori bipolari (-1, 1). L’output della rete per ogni pattern di input è:

Questo valore viene confrontato con la risposta t desiderata. Se si è verificato un errore, i pesi sinaptici vengono modificati a seconda della risposta corretta:

Teorema di convergenza del percettrone: per un qualunque problema linearmente separabile, verrà trovata la soluzione in un numero finito di passi.

Problemi: • Ci sono molte linee possibili che separano due classi, di conseguenza servono molti esempi per l’apprendimento. • I dati potrebbero non essere separabili linearmente. Esempio sopra: Nell'algebra booleana, l'operatore XOR è vero soltanto quando i due operandi (variabili) sono diversi. In linguaggio comune può essere tradotto con "l'uno o l'altro". AND e OR sono linearmente separabili (una retta separa tutti i dati 1 dagli 0). Nello XOR non basta una sola retta, non c’è quindi separabilità lineare. Un associatore (lineare) di configurazioni: simile al percettrone ma con unità di output con funzione di attivazione continua e non lineare.

La regola Delta 1. Si presenta alla rete una configurazione di input 2. L’attivazione fluisce alle unità di output 3. Viene calcolata l’attivazione delle unità di output 4. La configurazione ottenuta viene confrontata con la configurazione di output desiderata 5. Viene calcolata la discrepanza tra le due configurazioni (Segnale d’errore) 6. I pesi vengono modificati per ridurre l’errore L’apprendimento termina quando l’errore arriva a zero la sua discesa si arresta. La regola Delta è l’equivalente matematico della regola di Rescorla-Wagner per il condizionamento classico.

La regola Delta è simile a quella del percettrone, ma è applicabile ad unità di output con attivazione continua e differenziabile. Permette di descrivere la prestazione con una funzione che misura l’errore della rete (funzione di errore/costo), che si basa sulla deviazione standard tra la risposta desiderata e l’output effettivo:

L’apprendimento consiste nel minimizzare la funzione di costo E, che dipende unicamente dal valore W delle connessioni sinaptiche. Quindi, si modificano i pesi nella direzione opposta al gradiente della funzione stessa (Discesa di gradiente):

Risolvendo l’equazione, si ottiene che il cambiamento dei pesi è dato dalla differenza tra target e output, moltiplicato per l’attività presinaptica:

Tasso di apprendimento e Momentum Nella discesa di gradiente, il Learning rate (η) tiene conto di quanto la situazione corrente influenzi il passo successivo, basandosi sul vettore del gradiente. Il Momentum (μ) tiene conto di quanto i passi precedenti influenzino il successivo: se in un punto della funzione il gradiente fosse nullo, il solo utilizzo del Learning Rate perderebbe di efficacia, poiché non avrebbe un vettore di riferimento su cui basare il successivo spostamento. In questo caso è utile impiegare il Momentum, il quale procede per “inerzia” ricordando gli aggiornamenti precedenti.

Reti multistrato Le reti multistrato (uno o più strati intermedi con unità ad Attivazione non lineare) sono necessarie per risolvere problemi caratterizzati da inseparabilità lineare (es. XOR). Una rete a tre strati, avente almeno lo strato nascosto composto da unità non lineari, può, in linea di principio, approssimare qualunque relazione X -> Y (input/output) con arbitraria precisione pur di scegliere nel giusto modo i valori dei pesi ed il numero delle unità nascoste. Le reti multistrato hanno una potenza di calcolo molto superiore a quella dei classificatori lineari. Possono apprendere qualunque tipo di problema, anche se non linearmente separabile. In linea di principio, una rete multistrato può approssimare qualunque tipo di relazione input-output. Back-Propagation La Back-Propagation è un’estensione della regola Delta, che permette di addestrare reti multistrato. È applicabile ad architetture con qualsiasi numero di strati (solitamente uno interno), con qualsiasi connettività (anche nelle reti ricorrenti, con una variazione nell’algoritmo). Risolve il problema del calcolo dell’errore nelle unità nascoste tramite la propagazione all’indietro dell’errore stesso, calcolato per le unità di output attraverso le stesse connessioni che servono a propagare l’attivazione. La propagazione all’indietro dell’errore, rende l’algoritmo implausibile dal punto di vista biologico. La Generalizzazione La capacità di utilizzare la conoscenza appresa in un certo problema quando se ne incontrano nuovi e differenti esempi (es cifre scritte a mano, importante verificare che la conoscenza appresa non sia così specifica da funzionare solo per i trial, ma si possa generalizzare ad altri disegni), dipende da due condizioni necessarie ma non sufficienti: – Le variabili di input contengono sufficienti informazioni relative al target, in modo che esita una funzione matematica che lega l’output corretto agli input con un determinato grado di accuratezza. – Gli esempi per l’addestramento sono in numero sufficientemente grande e sono un campione rappresentativo dell’insieme di casi a cui si vuole generalizzare (popolazione). Per una qualsiasi funzione sottostante, è utile distinguere tra capacità di interpolazione (normalmente possibile) e di estrapolazione (difficile e a volte impossibile).

Overfitting: si verifica quando la prestazione sui pattern di addestramento continua a migliorare ma diminuisce la prestazione in termini di generalizzazione. Se la relazione X/Y non è regolare e i dati contengono rumore, la rete può apprendere il rumore nei dati usati per l’addestramento.

Come Evitare l’Overfitting: 1. Utilizzare reti neurali non troppo potenti permette di apprendere le regolarità statistiche nei dati piuttosto che memorizzare i pattern di training. Ciò si può ottenere limitando il numero di unità nascoste (verificando che lo strato nascosto sia necessario). 2. Early stopping: utilizzare un set di pattern (validation set) solo per la verifica di overfitting durante l’apprendimento e fermarlo prima che l’errore su questo set inizi ad aumentare.

3. Utilizzare il decadimento dei pesi (weight decay). Se i pesi hanno tendenza spontanea a diminuire, i pesi più deboli (non rinforzati) tenderanno a zero. Meno pesi = meno parametri, ciò impedisce l’apprendimento di rumore dai dati. Ad ogni epoca di apprendimento (o singolo aggiornamento), ogni peso diminuisce spontaneamente di una piccola frazione.

Training VS Testing • •



Training set: insieme di pattern per l’addestramento, utilizzati dall’algoritmo di apprendimento per impostare i pesi delle connessioni. Validation set: insieme di esempi utilizzati per ottimizzare parametri di apprendimento (iperparametri, come learning rate, momentum, weight decay), il numero di unità nascoste e per decidere quando fermare l’apprendimento (early stopping). Test set: insieme di esempi utilizzati per valutare la performance finale del modello.

Il validation set viene utilizzato per selezionare il modello migliore, quindi l’accuratezza sul validation set ha un bias (è sovrastimata, perché si sta ottimizzando il modello sui dati di validation, quindi quasi sempre la prestazione in test è minore di quella in validation). Utilizzare la maggior quantità di dati possibile per l’apprendimento. Se ci sono molti esempi, una possibile suddivisione è 50-25-25. Cross Validation: (apprendimento automatico) Tecnica maggiormente utilizzata quando ci sono pochi dati a disposizione (50-100 esempi) ma sufficienti per ripartirli in due insiemi separati di training e test, non ha applicazioni nel Deep Learning. Questa tecnica viene sfruttata per cercare di massimizzare i dati a disposizione.

K-Fold Cross Validation: il data-set totale viene diviso in k parti di uguale numerosità (spesso 10). Ad ogni ciclo di crossvalidazione, la k-esima parte del data set viene esclusa dal training per essere utilizzata come test (training sul 90% dei dati e test sul rimanente 10%). La prestazione in test non è rappresentativa, è fondamentale testare tutte le possibili iterazioni dei dati nei blocchi. La performance finale è data dalla media dei risultati in ogni ciclo (quindi tra tutte le k ripartizioni). Esiste una versione estremizzata della cross validation (L.O.O., Leave One Out), in cui viene effettuato il test sul 90% dei dati e training sul 10%.

La Dimensione Temporale L’informazione in input può arrivare al sistema neurale in modo sequenziale e quindi può possedere una struttura temporale. Anche l’output può avere una natura sequenziale (es. sequenze di azioni, fonemi, parole…).

Apprendimento di Compiti Sequenziali In una classica rete multistrato, l’output al tempo t dipende solo dall’input corrente I(t). Quindi è impossibile l’apprendimento di dipendenze temporali. Una soluzione è trasformare il tempo in spazio: presentare in input alcuni elementi della sequenza S in una “finestra temporale” posta sopra S. Ad esempio, data la parola “Cavallo”, il modello sequenziale esaminerebbe una lettera alla volta (t1=C, t2=A…). Si supponga l’esistenza di una “finestra temporale” in cui vengono considerati l’evento presente e quello immediatamente passato (t1=C, t2=Ca, t3=Cav…). Ad ogni passo sulla sequenza viene quindi registrato anche il contesto, non solo una singola lettera. In questo caso il contesto non è realmente inserito in una linea t...


Similar Free PDFs