MACHINE LEARNING

Anno accademico 2020/2021 - 1° anno
Docente: Giovanni Maria FARINELLA
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

Lo scopo del corso è quello di fornire un'approfondita introduzione delle principali teorie e tecniche algoritmiche del Learning Machine. A tal proposito, saranno presentati modelli fondamentali per la classificazione e la regressione, e le architetture basate su reti neurali (es. Deep Learning). Saranno discusse le metodologie per realizzare e ottimizzare gli algoritmi di apprendimento automatico, e quelle utili alla valutazione delle performance dei sistemi di Machine Learning. Si utilizzeranno librerie software open source in linguaggio Python per mettere in pratica le nozioni teoriche presentate nel corso.

Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.

  1. Conoscenza e capacità di comprensione (knowledge and understanding): lo studente acquisirà le conoscenze e i concetti alla base dei sistemi di apprendimento automatico ed in particolare le metodologie base che permettono di creare sistemi di classificazione/regressione a partire da dati eterogenei
  2. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze pratiche di realizzazione di sistemi di apprendimento automatico attraverso attività laboratoriale
  3. Autonomia di giudizio (making judgements): Attraverso gli homework e le correzioni in classe degli stessi lo studente sarà in grado di elaborare autonomamente soluzioni in grado di risolvere i problemi di base che potrebbero presentarsi nel mondo del lavoro
  4. Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio tecnico nell'ambito generale dei sistemi di apprendimento automatico.
  5. Capacità di apprendimento (learning skills): Lo scopo del corso è quello di fornire un'approfondita introduzione delle principali teorie e tecniche algoritmiche del Learning Machine. A tal proposito, saranno presentati modelli fondamentali per la classificazione e la regressione, e le architetture basate su reti neurali (es. Deep Learning). Saranno discusse le metodologie per realizzare e ottimizzare gli algoritmi di apprendimento automatico, e quelle utili alla valutazione delle performance dei sistemi di Machine Learning. Si utilizzeranno librerie software open source in linguaggio Python per mettere in pratica le nozioni teoriche presentate nel corso. In particolare, il corso si propone di formare studenti che:
    1. comprendano concetti chiave alla base delle techiche di Machine Learning
    2. conoscano una ampia gamma di algoritmi di apprendimento per risolvere problemi classici del Machine Learning (classificazione e regressione)
    3. comprendano come effettuare il design e il tuning degli algoritmi al fine di applicare gli stessi a nuovi set di dati
    4. siano in grado di eseguire la valutazione degli algoritmi di Machine Learning in modo da poter selezionare il modello migliore
    5. conoscano le librerie python utili allo sviluppo di algoritmi di Machine Learning

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato, al fine di rispettare il programma previsto e riportato nel syllabus


Modalità di svolgimento dell'insegnamento

Le lezioni sono tenute in aula con l'ausilio di slide, messe a disposizione degli studenti. Le slide non sostituiscono i testi di riferimento, ma, oltre che agevolare la comprensione della lezione, forniscono un dettaglio puntuale sul programma svolto. Le lezioni frontali teoriche sono intervallate da esercitazioni pratiche in linguaggio python, svolte nella stessa aula di lezione. Gli studenti sono invitati a formare piccoli gruppi di lavoro (massimo 3 persone) per lo svolgimento delle esercitazioni proposte e del progetto finale.


Prerequisiti richiesti

Non si richiedono prerequisiti specifici. Si utilizzeranno nozioni di base delle seguenti materie:

Elementi di Analisi Matematica

Matematica Discreta

Fondamenti di Informatica

Programmazione

Interazione e Multimedia

Algoritmi


Frequenza lezioni

La frequenza delle lezioni non è obbligatoria ma è fortemente consigliata. In particolare si consiglia la frequenza alle ore di esercitazione.


Contenuti del corso

  • Basic Concepts: Machine Learning, Probability Theory, Supervised Learning, Unsupervised Learning, Classificazione, Regressione, Training/Validation/Test Set, Performance Evaluation, Data Normalization, Overfitting and Regularization, XOR Problem, Perceptron
  • Linear Models for Regression: Linear Regression, Gradient descent algorithm, Learning Rate and Debugging, Polynomial Regression, Overfitting e Regularization for Linear Regression, Regressione Lineare in Pytorch, API ad oggetti di Pytorch, Monitoring del training mediante Visdom, Linear Regression Evaluation, Learning Algorithms Design
  • Linear Models for Classification: Logistic Regression, Logistic Regression with Pytorch, Regularization for Logistic Regression, Stocastic Gradient Descent, Momentum for Gradient Descent, Multi-Class Classification, Classifiers Evaluation
  • Softmax Classifier and python implementation
  • Computational Graphs and Backpropagation
  • Neural Networks and python implementation
  • Deep Learning: Convolutional Neural Network and python implementation, Transfer Learning
  • Advancet Deep Learning: Introduction to LSTM, Autoencoders, Metric Learning
  • Python programming and Python Libraries for Machine Learning

Testi di riferimento

  1. R. O. Duda, P. E. Hart, D. G. Stork, "Pattern Classification", Wiley, 2000
  2. C. Bishop, “Pattern Recognition and Machine Learning", Springer, 2006
  3. E. Alpaydin, “Introduction to Machine Learning”, MIT Press, 2014
  4. I. Goodfellow, Y. Bengio and A. Courville, "Deep Learning", MIT Press, 2016
  5. Raul Rojas, Neural Networks - A Systematic Introduction, Springer, 1996
  6. M. P. Deisenroth, A A. Faisal, and C. Soon On, Mathematics for Machine Learning, MIT Press, 2019


Programmazione del corso

 ArgomentiRiferimenti testi
1Basic Concepts1, 2, 3, 4, 5, 6 
2Linear Models for Regression2, 3, 4 
3Linear Models for Classification2, 3, 4 
4Softmax3,4 
5Computational Graphs and Backpropagation
6Neural Networks1, 2, 3, 4, 5 
7Deep Learning
8Advancet Deep Learning4, Dispense fornite dal docente e risorse in rete 
9Python programming and Libraries for Machine LearningDispense fornite dal docente e risorse in rete 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame finale consiste in una prova scritta e la realizzazione di un progetto (che include relazione) concordato con il docente.

La prova scritta è costituita, di norma, da tre domande a risposta aperta. La prenotazione per la partecipazione alla prova scritta è obbligatoria.

Il voto finale è ottenuto dalla media dei voti della prova scritta e del progetto.

Prova in Itinere: Non prevista

Salvo diversa comunicazione:

- l'esame scritto si svolge alle ore 15:00

- il progetto, insieme alla relazione, deve essere consegnato entro una settimana dallo scritto

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.


Esempi di domande e/o esercizi frequenti

- Si discuta l'algoritmo di Backpropagation utilizzato per addrestrare le Reti Neurali

- Si definisca il problema dell'overfitting e si discuta la regolarizzazione

- di discuta il classificatore Softmax