• Non ci sono risultati.

4.3 Panoramica sui principali approcci all’apprendimento automa-

4.3.2 Reti Neurali Artificiali

Le reti neurali artificiali rappresentano un potente approccio all’appren- dimento ispirato dalle scoperte sulla struttura del cervello e sui processi di apprendimento umani[16]. Il nostro cervello pu`o essere visto come un com- puter altamente parallelo in grado di risolvere alcune classi di problemi, ad esempio il riconoscimento di immagini, con delle performance irraggiungibili per i computer moderni; `e composto all’incirca da 1010 neuroni intercon-

nessi in modo da formare delle reti, con all’incirca 104 connessioni per ogni

neurone.

Nelle reti neurali artificiali i neuroni vengono rappresentati come unit`a di elaborazione caratterizzate da un certo numero di connessioni di input, con input generato da sorgenti esterne oppure da altre unit`a, e da un certo nume- ro di connessioni di output che inoltrano il risultato della funzione calcolata sui dati di input, detta funzione di attivazione. La funzione di attivazione

CAPITOLO 4. MACHINE LEARNING

pu`o essere una funzione lineare, oppure una funzione a scalini tipo la LTU, o ancora una funzione logistica. I valori delle connessioni di input sono pesati, cio`e moltiplicati per il valore del peso w corrispondente; i pesi rappresentano i parametri del modello, e verranno modificati durante il processo di appren- dimento. La somma di tutti i valori di input pesati `e chiamata input di rete (neti).

(

neti(x) =P wijxj

oi(x) = f (neti(x))

Neuroni artificiali e reti neurali ad un livello

Una tipica implementazione di un neurone artificiale `e il Perceptron, che ha in ingresso un vettore a valori reali e produce un output binario dato dall’applicazione di una funzione di attivazione di tipo LTU (quindi pu`o risolvere solo problemi linearmente separabili). Un Perceptron `e in grado di rappresentare le funzioni booleane AND, OR e NOT (con le conseguenti negazioni NAND e NOR), ma non l’XOR, per rappresentare il quale si rende necessaria una rete multistrato a due livelli. L’algoritmo di apprendimento per il Perceptron `e il seguente:

• si inizializzano i pesi a zero (oppure ad un valore piccolo e casuale), • si sceglie della velocit`a di apprendimento η,

• finch`e una data condizione non `e verificata (ad esempio finch`e i pesi non cambiano):

– per ogni esempio di allenamento si calcola la funzione di attiva- zione,

– se l’output `e corretto non si cambiano i pesi, – altrimenti si aggiornano secondo la formula:

CAPITOLO 4. MACHINE LEARNING

Usando l’algoritmo precedente abbiamo la sicurezza che la soluzione del pro- blema venga appresa, cio`e che l’algoritmo converga[16, cap 3.9] alla soluzione ottimale.

Un’alternativa implementazione di un neurone artificiale `e la Adaline (acronimo di adaptive linear neuron), con algoritmo di apprendimento ba- sato sulla discesa del gradiente e sui minimi quadrati (LMS, acronimo di least mean square); esso non prevede una soglia, ma ha l’obiettivo di mini- mizzare la differenza tra l’output previsto e il prodotto tra i pesi e l’input (δ = (d − wx)); `e garantita solo la convergenza asintotica (quindi ci possono essere errori di classificazione in problemi linearmente separabili) ma indipen- dentemente dal tipo di problema (linearmente separabile o meno), pertanto `e applicabile anche per affrontare i problemi multiclasse. Come funzione di attivazione non possiamo ovviamente utilizzare quella del Perceptron, dato che per essere utilizzata in un algoritmo a discesa del gradiente deve essere derivabile; una funzione con comportamento simile a quella a scalini `e la funzione logistica sigmoidea che, a differenza della LTU `e differenziabile.

In un algoritmo LMS basato su una funzione logistica sigmoidea l’output passa dalla forma o(x) = xw alla o(x) = f (xw); l’obiettivo `e la minimizzazio- ne della somma dei quadrati residui, che viene calcolata tramite il gradiente della funzione di perdita. I pesi verranno aggiornati secondo la seguente formula:

wold = wnew+ ηδpxp con δp = (dp− f (netp))f0(netp)

Reti Neurali Multistrato

Le reti reurali multistrato possono essere viste come una rete di unit`a (i neuroni artificiali) interconnesse, ma anche come una funzione composta da funzioni non lineari, come il seguente esempio di rete neurale a due strati:

h(x) = fk(

P

jwkjfj(

P

CAPITOLO 4. MACHINE LEARNING

Una rete neurale `e definita dal tipo delle unit`a, dalla funzione di at- tivazione, dal numero di unit`a, dalla topologia di rete e dall’algoritmo di apprendimento. Una rete neurale `e detta feedforward se le connessioni tra le unit`a formano un grafo diretto aciclico; `e detta invece ricorrente se nel grafo sono presenti cicli di feedback, che permettono di tenere traccia delle passate computazioni e quindi di processare dati di input strutturati, come ad esempio le sequenze. Lo spazio delle ipotesi `e continuo, e rappresenta tutte le funzioni che possono essere rappresentate assegnando valori ai pesi. Nel caso in cui le unit`a siano Perceptron, la rete neurale prende il nome di MLP (multi-layer perceptron).

Consideriamo la rete neurale come una funzione composta da funzioni non lineari. Le funzioni interne (nell’esempio precedente le varie fj) sono

calcolate da unit`a indipendenti che chiamiamo unit`a nascoste; la capacit`a di rappresentazione del modello dipende da queste unit`a, che trasformano l’input nella rappresentazione interna della rete. Il processo di apprendimento ha proprio il compito di definire un’appropriata rappresentazione interna, in modo da permettere al modello di approssimare al meglio la funzione obiettivo. Pu`o essere dimostrato che una rete con un singolo strato di unit`a nascoste pu`o approssimare ogni funzione continua, ed una rete multistrato pu`o approssimare ogni possibile mapping da input ad output[17].

L’algoritmo di apprendimento tipico per reti neurali multistrato `e chia- mato backpropagation; esso utilizza la discesa del gradiente per minimizzare l’errore quadratico tra l’output della rete e il valore della funzione obiettivo. Ovviamente le unit`a che compongono la rete hanno funzione di attivazione logistica. L’algoritmo, nel caso di rete a due livelli, `e il seguente:

• creiamo una rete neurale di tipo feedforward, con nin input, nhidden

unit`a nascoste e nout unit`a di output;

• si inizializzano i pesi a dei piccoli valori casuali;

CAPITOLO 4. MACHINE LEARNING

– per ogni esempio di allenamento:

∗ si propaga l’input nella rete e calcoliamo l’output (o(n)) di tutte le unit`a;

∗ si propaga indietro l’errore nella rete; per le unit`a di output (chiamiamole k ) l’errore viene calcolato come:

δk = ok(1 − ok)(tk− ok)

dove tk `e output dell’esempio di allenamento k.

∗ mentre per le unit`a nascoste (chiamiamole h) viene calcolato come:

δh = oh(1 − oh)Pk∈noutwkhδh

∗ i pesi vengono aggiornati secondo la seguente regola:

wji = wji+ ∆wji con ∆wji = ηδjxji

Ovviamente l’algoritmo pu`o essere esteso a reti neurali multistrato con pi`u di due livelli. Dato il profondo utilizzo che ne viene fatto sono state stu- diate numerose varianti volte a risolvere, o limitare, alcuni problemi che si presentano durante il processo di apprendimento.

Abbiamo gi`a detto che non `e garantita la convergenza ottimale; ci`o `e dovuto al fatto che la funzione di errore non `e convessa, pertanto esistono numerosi minimi locali ed il minimo a cui converge l’algoritmo dipende dalla configurazione iniziale dei pesi. E’ stato verificato che sulle applicazioni reali il minimo locale trovato `e pi`u che sufficiente, per`o, nel caso in cui esso non sia sufficiente, `e possibile eseguire l’algoritmo pi`u volte, con configurazioni iniziali dei pesi differenti, e scegliere la soluzione con l’errore minore.

Dato che la velocit`a di apprendimento `e inversamente proporzionale alla stabilit`a dell’algoritmo, la scelta del valore di η `e critica; per ovviare a questo

CAPITOLO 4. MACHINE LEARNING

problema `e possibile modificare la funzione di aggiornamento dei pesi in modo da tener conto delle precedenti iterazioni:

∆wji(n) = ηδjxji+ α∆wji(n − 1)

α `e detta momentum, ed `e un valore compreso tra zero ed uno utilizzato per rappresentare la dipendenza dal precedente aggiornamento.

Solitamente il metodo, essendo iterativo, ha una buona velocit`a di con- vergenza (lineare nel numero di parametri); nel caso in cui essa non sia suffi- ciente `e possibile utilizzare il metodo del gradiente coniugato che garantisce una convergenza pi`u rapida. La condizione di terminazione solitamente `e una soglia k entro la quale deve stare la funzione di perdita; in alcuni casi (ad esempio se non conosciamo la tolleranza dei dati) si pu`o utilizzare una soglia sul numero di errori di classificazione effettuati in un epoca (ciclo di allenamento) oppure la massima tolleranza da noi attesa sui dati.

Un problema molto grave da scongiurare nell’allenamento di una rete neurale `e l’overfitting, che tipicamente abbiamo nel caso in cui la rete sia stata eccessivamente allenata con gli stessi dati di esempio; le tecniche principale utilizzate per prevenire l’overfitting sono:

Early stopping:

Viene definito un insieme di validazione composto da dati non utiliz- zati nella fase di allenamento, e viene utilizzato per stabilire il livello di apprendimento della rete neurale in modo da determinare quando fermarsi;

Regolarizzazione:

Dato che l’allenamento comporta un aumento del valore dei pesi, pos- siamo ottimizzare la funzione di errore rendendola dipendente anche dai pesi stessi:

E(w) = P

CAPITOLO 4. MACHINE LEARNING

il valore di λ `e solitamente molto piccolo, di poco maggiore allo zero, e viene selezionato tramite una fase di cross-validation;

Metodi di pruning:

L’algoritmo di apprendimento viene eseguito su una rete composta da un gran numero di unit`a e progressivamente si eliminano pesi o unit`a non necessarie.

Anche la scelta del numero di unit`a `e importante, oltre che per fini di controllo della complessit`a, anche per stabilire se il modello sar`a in grado di trovare una buona soluzione al problema; infatti se vengono utilizzate poche unit`a nascoste si rischia di non apprendere la soluzione, mentre se ne vengono utilizzate troppe si cade nell’overfitting. Una soluzione a questo problema, alternativa ai metodi di pruning, `e offerta dall’approccio costruttivo. Un algoritmo di apprendimento costruttivo costruisce la rete partendo da una configurazione minimale e aggiungendo nuove unit`a e connessioni durante la fase di allenamento; un esempio di algoritmo costruttivo `e il cascade cor- relation[18], che permette di risolvere sia problemi di classificazione che di regressione.

Documenti correlati