Metodi numerici per problemi di minimizzazione non lineare senza vincoli e problemi ai minimi quadrati. Metodi di tipo gradiente stocastico per problemi di ottimizzazione che nascono nell'apprendimento automatico. Istruzioni fondamentali del linguaggio Python e del modulo scipy.optimize. Applicazioni all'allenamento di reti neurali e piu' in generale a modelli di apprendimento automatico.
Utilizzo del Matlab Optimization Toolbox.
J. Nocedal, S.J. Wright, "Numerical Optimization", 2nd ed., 2006
Obiettivi Formativi
Lo scopo corso è quello di introdurre gli studenti alla risoluzione numerica di problemi di ottimizzazione non vincolata. Al termine del corso lo studente avra' acquisito le basi necessarie a comprendere la teoria ed i principali metodi numerici di risoluzione per problemi di ottimizzazione, sia dal punto di vista teorico che computazionale, con particolare attenzione ai problemi che nascono nell'apprendimento automatico.
Prerequisiti
Corsi raccomandati: corsi di base di Analisi Matematica, Analisi Numerica e Probabilita'.
Metodi Didattici
Lezioni frontali e esercitazioni di laboratorio.
Altre Informazioni
Frequenza delle lezioni: Raccomandata
Strumenti a supporto della didattica: dispense, slides, UniFi E-Learning: http://e-l.unifi.it
Modalità di verifica apprendimento
L 'esame e' costituito da una prova orale e da un progetto relativo alle attivita' svolte in laboratorio. Nella prova orale saranno valutati il rigore e la chiarezza dell'esposizione, la capacità di inquadrare i vari argomenti nei rispettivi contesti e di collegarli tra loro. Il voto della prova orale inciderà dell'80% sulla votazione finale; per i contenuti applicativi del corso deve essere realizzato un progetto
che consiste nella implementazione e sperimentazione numerica di uno dei procedimenti studiati nel corso. Saranno valutati la capacita' di valutare le prestazioni del metodi in termini di robustezza, occupazione di memoria, costo computazionale di presentare i risultati raggiunti. La valutazione del progetto e della sua presentazione inciderà del 20% sulla votazione finale.
Programma del corso
Programmazione non lineare non vincolata: Condizioni di ottimalita', metodo del gradiente e metodo dei gradienti coniugati per problemi con funzione obiettivo quadratica.
Metodo del gradiente, con analisi di complessita', metodi di Newton, metodo di quasi-Newton. Problemi ai minimi quadrati non lineari: metodo di Gauss-Newton.
Globalizzazione mediante line-search.
Problemi di ottimizzazione in apprendimento automatico: introduzione alle reti neurali, problemi di classificazione e problemi convessi e non convessi che nascono nel training di reti neurali.
Metodo del gradiente stocastico, gradiente stocastico con variance-reduction, Adam, varianti mini-batch. Convergenza e complessita' in valore atteso.
Introduzione al linguaggio Python. Istruzioni fondamentali del linguaggio Python. I sottoprogrammi e i moduli. Utilizzo del modulo scipy.optimize per la risoluzione di problemi di classificazione, risoluzione di problemi per il training di reti neurali mediante Keras. Utilizzo dell' Optimization Matlab Toolbox.
Obiettivi Agenda 2030 per lo sviluppo sostenibile
Obiettivo 9: Industria, innovazione e infrastrutture
In particolare obiettivo 9.5
Aumentare la ricerca scientifica, migliorare le capacità tecnologiche del settore industriale in tutti gli stati nonché incoraggiare le innovazioni.