Metodi numerici per problemi di minimizzazione non lineare senza vincoli. Metodi di tipo gradiente stocastico per problemi di ottimizzazione che nascono nell'apprendimento automatico.
Condizioni di ottimalita' per programmazione non lineare vincolata. Metodi per programmazione lineare. Istruzioni fondamentali del linguaggio Python e del modulo scipy.optimize. Applicazioni a problemi di classificazione e training di reti neurali. Utilizzo del Matlab Optimization Toolbox.
J. Nocedal, S.J. Wright, "Numerical Optimization", 2nd ed., 2006
I. Goodfellow, Y. Bengio, A. Courville, Deep Learning, The MIT Press, 2016.
G. Strang, Linear algebra and learning from data,
Wellesley-Cambridge Press, 2019.
Obiettivi Formativi
Introdurre gli studenti alla risoluzione numerica di problemi di ottimizzazione non vincolata, di programmazione lineare e alle condizioni di ottimalita' per l'ottimizzazione non lineare vincolata.
Fornire 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
Prova orale sugli argomenti oggetto delle lezioni in aula e sulle esercitazioni svolte in laboratorio.
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, varianti mini-batch.
Ottimizzazione non lineare vincolata: direzioni ammissibili, lagrangiana; derivazione delle condizioni di ottimalita' del primo ordine e del secondo ordine.
Programmazione lineare: esempi di modelli di programmazione lineare (es. problemi di allocazione ottima di risorse, problemi di miscelazione).
Introduzione alla Programmazione Lineare (PL). Forma di un problema di PL; soluzioni, basi, soluzioni ammissibili; teoria della dualita'; definizione del problema duale;
Il metodo del simplesso;
I metodi Interior Point primale-Duale: Introduzione, concetto di central path, metodi path-following, teoria di convergenza.
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 per la risoluzione di problemi di programmazione lineare.
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.