Uso dell algoritmo di Quantizzazione Vettoriale per la determinazione del numero di nodi dello strato hidden in una rete neurale multilivello

Documenti analoghi
QUANTIZZATORE VETTORIALE

Riconoscimento automatico di oggetti (Pattern Recognition)

Intelligenza Artificiale. Clustering. Francesco Uliana. 14 gennaio 2011

Data Journalism. Analisi dei dati. Angelica Lo Duca

Stima dei Redshift Fotometrici tramite il network SOM + K-NN

ADDESTRAMENTO DI UNA RETE NEURALE ED EVENTUALI CONSIDERAZIONI PRESTAZIONALI. (a cura di Buttolo Marco).

Sistemi di Elaborazione dell Informazione 170. Caso Non Separabile

Università degli Studi di Bergamo Intelligenza Artificiale (Codice: 38066) 21 Giugno Primo Appello

Reti Neurali (Parte I)

Corso di Intelligenza Artificiale A.A. 2016/2017

Un processo a supporto della classificazione di pagine client Anno Accademico 2006/2007

Computazione per l interazione naturale: modelli a variabili latenti (clustering e riduzione di dimensionalità)

Indice generale. Introduzione. Ringraziamenti dell autore...xxi. Capitolo 1 Dare ai computer la capacità di apprendere dai dati...

Pattern recognition. III Parte. Intelligenza Artificiale - Pattern Recognition 3

POLITECNICO DI TORINO

Ciclo do while in FORTRAN

Cercare il percorso minimo Ant Colony Optimization

AML EXPO. AI a supporto dell AML 30 MAGGIO Pieralberto Nati CEO AML EXPO COPYRIGHT ALL RIGHT RESERVED

G è 2-colorabile se ogni nodo può essere colorato di bianco o di nero in modo che nodi connessi da archi siano colorati con colori distinti.

Università degli Studi di Bergamo Intelligenza Artificiale (Codice: 38066) 12 Giugno 2019

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

Alberi di Decisione (2)

Indice generale. Introduzione. Capitolo 1 Essere uno scienziato dei dati... 1

Problemi, istanze, soluzioni

Il programma è distribuito tramite il file compresso TRASFO.zip contenente i file di programma strutturati in 4 cartelle:

Intelligenza Artificiale. Soft Computing: Reti Neurali Generalità

Alberi di Decisione (2)

Tecniche di riconoscimento statistico

Progettazione di un Sistema di Machine Learning

Misura della performance di ciascun modello: tasso di errore sul test set

Università degli Studi di Bergamo Intelligenza Artificiale (Codice: 38066) Secondo Parziale - 11 Giugno 2018

Programmare con MATLAB c Parte 5 Cicli: for e while

Algoritmi di classificazione supervisionati

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

Multi classificatori. Prof. Matteo Golfarelli Alma Mater Studiorum - Università di Bologna

Computazione per l interazione naturale: clustering e riduzione di dimensionalità

Specifica, progetto e verifica della correttezza di algoritmi iterativi

5. Analisi dei dati di output

Richiamo di Concetti di Apprendimento Automatico ed altre nozioni aggiuntive

Tecniche di riconoscimento statistico

PROVA SCRITTA DEL MODULO DI NOME: COGNOME: MATRICOLA:

Segmentazione di immagini in scala di grigio basata su clustering

Laboratorio di Calcolo Numerico Laboratorio 12: Metodi iterativi per la soluzione di sistemi lineari

UTILIZZO DELL ANALISI DELLE COMPONENTI PRINCIPALI (PCA) DI DATI HVSR FINALIZZATO ALLA ZONAZIONE SISMICA

Reti Neurali (Parte III)

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Analisi del Segnale per le Telecomunicazioni Seconda esercitazione di laboratorio

Algoritmi e strutture dati

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Intelligenza Artificiale Complementi ed Esercizi

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Comunicazioni Elettriche Esercizi

Regressione Lineare Multipla

min 2x 1 +4x 2 2x 3 +2x 4 x 1 +4x 2 +2x 3 + x 4 =6 2x 1 + x 2 +2x 3 + x 5 =3 x 0.

Introduzione alle Reti Neurali

Segmentazione automatica della carotide basata sulla classificazione dei pixel

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica. Algoritmi

Progettazione di un Sistema di Machine Learning

Esercizio: apprendimento di congiunzioni di letterali

Algoritmi di ricerca locale

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

è la somma che fa il totale! Costo industriale prodotto finito DIEGO ZENARI Gruppo Marchetto Zenari

Analisi Numerica. Debora Botturi ALTAIR. Debora Botturi. Laboratorio di Sistemi e Segnali

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Fondamenti di Informatica

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

Laboratorio di Bioimmagini A.A

Calcolo del precondizionatore K 1

INTERPOLAZIONI CON SPLINE

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione

Fondamenti di Informatica A. A. 2018/19

Problem solving elementare su dati scalari

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

TEORIA DEI GRAFI. Tecniche reticolari

Reti Neurali. Corso di AA, anno 2016/17, Padova. Fabio Aiolli. 2 Novembre Fabio Aiolli Reti Neurali 2 Novembre / 14. unipd_logo.

Statistica per l Impresa

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Reti Neurali in Generale

Algoritmi 25 Febbraio Rispondere alle domande usando lo spazio designato. NON USARE ALTRI FOGLI.

Esistono alcune tipologie di problemi riconducibili a schemi di risoluzione standard

Esercitazione di Matematica Computazionale del 16/12/2008

Metodi di Ricerca Lineare

Riconoscimento e recupero dell informazione per bioinformatica. Clustering: validazione. Manuele Bicego

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Cluster Analysis. La Cluster Analysis è il processo attraverso il quale vengono individuati raggruppamenti dei dati. per modellare!

K-means clustering con R

Introduzione alla programmazione Esercizi risolti

Definizione automatica della scala spaziale per la segmentazione di immagini SAR in ambiente urbano

Equazioni e sistemi non lineari

Sistemi operativi e distribuiti

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Computazione per l interazione naturale: macchine che apprendono

Paolo Mogorovich

5. Analisi dei dati di output

Algoritmi e Strutture Dati

Transcript:

Tesina di Intelligenza Artificiale Uso dell algoritmo di Quantizzazione Vettoriale per la determinazione del numero di nodi dello strato hidden in una rete neurale multilivello Roberto Fortino S228682

Introduzione Nel campo delle reti neurali, scegliere il numero di nodi presenti negli strati hidden non è sempre un compito banale. In una rete neurale multilivello (MLP), ogni nodo nascosto genera un piano di separazione. Se ci troviamo di fronte ad un problema di classificazione, scegliere il giusto numero di nodi hidden è fondamentale; un numero troppo basso o troppo alto, infatti, può portare problemi in termini di performance. In questo elaborato si è pensato di utilizzare l algoritmo di Quantizzazione Vettoriale per la determinazione del numero di nodi nello strato hidden di una rete neurale multilivello. Quantizzazione Vettoriale L algoritmo di Quantizzazione Vettoriale può essere utilizzato per dividere un insieme di dati in un certo numero di clusters. L algoritmo si basa sulla distanza Euclidea per l assegnazione dei campioni al cluster di appartenenza. Di seguito il funzionamento: 1. All inizio tutti i vettori vengono assegnati allo stesso cluster, il cui centro viene calcolato come valor medio di tutti i vettori; 2. Per ciascun rappresentante (centro di cluster), si introduce una perturbazione che genera due nuovi centri di cluster. Il vecchio rappresentante viene scartato; 3. Ogni vettore viene riassegnato a uno dei nuovi cluster secondo il criterio di minima distanza; 4. Vengono calcolati i nuovi rappresentanti come valor medio dei vettori assegnati ad ogni cluster. Questi saranno i nuovi centri di cluster; 5. Se è soddisfatto il criterio di fine, l algoritmo termina. Altrimenti, si torna al passo 2. Dataset Per questo esperimento, è stato utilizzato il dataset MNIST. Questo contiene circa 70000 immagini rappresentanti i numeri da 0 a 9 scritti a mano.

Ogni immagine ha dimensione 28x28 pixel, ed è rappresentata come un vettore di 784 elementi, dove ogni elemento corrisponde ad un pixel dell immagine e può assumere un valore nell intervallo [0, 255] (0 corrisponde al colore nero e 255 al bianco). Implementazione Per l implementazione dell algoritmo si è scelto di usare l ambiente Python, in quanto sono presenti tutti i tool di machine learning usati nel caso in esame. Data l imponenza del dataset, prima dell esecuzione dell algoritmo di quantizzazione vettoriale, è stata effettuata un Analisi delle Principali Componenti (PCA) per cercare di ridurre il numero delle features e quindi guadagnare in termini di tempo di calcolo. Delle 784 features, è stato scelto di mantenere le prime 430 principali componenti, in quanto queste spiegano più del 98% della varianza.

Il corpo principale dell algoritmo è articolato in un ciclo while. while True: print('assigning points to clusters') print('deleting empty clusters') print('computing new codewords') print('checking end condition') print('computing disturbed codewords') print('clearing clusters for next iteration') Inizialmente, I vettori vengono assegnati al cluster di appartenenza: per ogni vettore viene calcolata la distanza euclidea da tutti I centri di cluster e lo si assegna al cluster più vicino. Al termine dell assegnazione vengono eliminati eventuali cluster vuoti e si procede al calcolo dei nuovi centri di cluster come valor medio dei vettori contenuti. Una volta che i cluster sono stati formati, viene effettuata la verifica della condizione d uscita. Nel caso in esame, per ogni cluster è stato valutato l indice di eterogeneità di Gini calcolato nel seguente modo: Gini c = 1 p j c + dove p j c si intende la frequenza relativa della classe j nel cluster c. È stato poi definito un valore di soglia per questo indice e l algoritmo termina quando tutti i cluster hanno un valore di Gini minore di tale soglia., -./

Nel caso in cui la condizione d uscita non è verificata, l algoritmo prosegue con la prossima iterazione perturbando i centri di cluster e svuotando i cluster ottenuti nell iterazione precedente. La perturbazione è stata effettuata sommando e sottraendo ai centri di cluster una costante, che in questo caso è pari a 0.1. Negli esperimenti effettuati è emersa l incapacità dell algoritmo di quantizzazione a raggiungere la convergenza. Dopo alcune investigazioni, si è notato che alcuni elementi del dataset risultano essere troppo simili tra loro o fortemente disturbati. Questo ha portato alla presenza di molti cluster in cui non vi è un elemento che domina (in termini di occorrenze) nettamente sugli altri, o addirittura cluster in cui gli elementi si distribuiscono equamente (stesso numero di occorrenze). Per garantire la terminazione dell algoritmo, quindi, la soglia utilizzata è stata via via incrementata seguendo una precisa logica: se il numero di cluster che non soddisfano la condizione di uscita all iterazione i+1 è maggiore del numero di cluster che non soddisfano la condizione di uscita all iterazione i, allora la soglia viene incrementata di un certo valore fisso (0.15). Una possibile soluzione al problema della convergenza potrebbe essere di far continuare l algoritmo fino a che non riesca a dividere i casi sopra citati. Dall altro lato, però, dobbiamo ricordare che ad ogni iterazione il numero di centri di cluster raddoppia (alla 12 iterazione abbiamo 4096 clusters) e di conseguenza aumenta anche il tempo di elaborazione necessario per assegnare i vettori ai cluster di appartenenza. Ancora, non è detto che si riesca ad avere dei cluster puri, cioè composti da un solo elemento, o nel

caso in cui si riesca, probabilmente questi saranno composti da un numero relativamente basso di elementi. Alla luce del problema appena citato, ci si è chiesti se unire cluster vicini contenenti in maggioranza lo stesso elemento potesse aiutare a definire meglio i cluster. Una volta che l algoritmo di quantizzazione ha terminato, quindi, un apposita routine prova ad unire i cluster secondo la seguente logica: 1. Viene calcolata la matrice delle distanze: dato un cluster, viene calcolata la distanza euclidea tra il suo centro e il centro di tutti gli altri cluster. Quest operazione viene effettuata per tutti i cluster. 2. Si prendono i due cluster più vicini: questo corrisponde al valore più piccolo presente nella matrice delle distanze. 3. Per i due cluster selezionati si cerca l elemento con occorrenza maggiore. 4. Se l elemento trovato in entrambi i cluster è lo stesso si procede ad unire i cluster e il ciclo riprende dal punto 1, altrimenti si esce. Dai risultati è emerso che in alcuni casi vengono a crearsi dei cluster in cui un elemento domina fortemente sugli altri. Cluster 140: 5771 0: 5540(0.960) 8: 24(0.004) 7: 7(0.001) 2: 36(0.006) 3: 15(0.003) 6: 90(0.016) 9: 32(0.006) 5: 25(0.004) 4: 2(0.000) Cluster 135: 6696 2: 6326(0.945) 3: 153(0.023) 8: 63(0.009) 1: 53(0.008) 7: 33(0.005) 0: 24(0.004) 5: 10(0.001) 6: 9(0.001) 4: 15(0.002) 9: 10(0.001) Ciò non risolve però il problema dell eterogeneità dei cluster. Ancora, persiste la presenza di cluster in cui gli elementi si distribuiscono equamente.

Risultati sperimentali Di seguito vengono riportati i risultati ottenuti: Clustering (Quantizzazione Vettoriale) o Dimesione del Dataset: 70000 elementi o Numero di classi: 10 o Percentuale di distorsione: 0.1 o Criterio di valutazione usato nella condizione d uscita: Indice di Gini o Soglia iniziale usata nella condizione d uscita: 0.5 (equidistribuzione) o Iterazioni: 11 o Numero di cluster prima dell unione: 2011 o Numero di cluster dopo l unione: 141

Rete Neurale Multilivello (MLP) o Dimensione Training Set: 60000 o Dimensione Test Set: 10000 o Numero di strati hidden: 1 o Numero di nodi nello strato hidden: 141 o Numero massimo di iterazioni: 10 o Learning rate iniziale: 0.1 o Test set accuracy: 0.978200 Conclusioni Analizzando i grafici del paragrafo precedente, è chiaro che la presenza di caratteri simili tra loro e di caratteri disturbati impatta fortemente sulle prestazioni dell algoritmo di quantizzazione. La situazione non migliora di molto anche effettuando l unione dei cluster, in quanto è l output del quantizzatore a non essere performante. Dal primo grafico si evince una massiccia presenza di cluster di piccole dimensioni (cluster da 0 a circa 110). Proiettando sul secondo grafico capiamo, inoltre, che questi sono composti da elementi equamente distribuiti o non vi è alcun elemento che domina fortemente sugli altri (valore di Gini da 0.5 a 1).

Effettuando la stessa analisi, gli ultimi cluster (da 110 a 141) contengono un elevato numero di elementi e, dato il loro valore di Gini, sono composti in maggioranza da un solo elemento (valore di Gini minore di 0.30). Anche se l algoritmo di quantizzazione non ha soddisfatto le nostre aspettative, l output fornito ha portato ad ottenere buoni risultati in fase di addestramento della rete neurale. I 141 nodi dello strato hidden sono risultati sufficienti per ottenere un accuracy soddisfacente. Per concludere, utilizzare l algoritmo di quantizzazione vettoriale potrebbe essere una buona soluzione al problema della scelta del numero di nodi nello strato hidden; questa teoria andrebbe però confermata effettuando altri esperimenti, magari utilizzando altri data-set o effettuando un processo di pulizia del dato prima di procedere alla clusterizzazione.