DEEP LEARNING

Anno accademico 2021/2022 - 2° anno - Curriculum Data Science
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

Il termine Deep Learning identifica una classe di algoritmi di machine learning basati sull’apprendimento automatico di rappresentazioni dei dati in maniera gerarchica al fine di risolvere un determinato problema. La recente disponibilità di grandi quantità di dati e di appropriate risorse computazionali per analizzarli ha favorito l’affermarsi di tali tecnologie per la risoluzione di problemi quali l’analisi di immagini e video, l’analisi di segnali audio, il processamento di testi, e, in genere, l’analisi di grosse quantità di dati di diversa natura. Data la complessità che gli algoritmi basati su Deep Learning possono facilmente raggiungere, competenze specifiche sono richieste per poter correttamente progettare tali algoritmi, allenarli, misurarne la bontà, e comprenderne i limiti. Lo scopo di questo corso è di fornire tali competenze e in particolare:

● Fornire una conoscenza estesa dei problemi che il deep learning si pone di risolvere;

● Fornire una panoramica sulle metodologie attualmente disponibili per risolvere tali problemi;

● Fornire una panoramica sui moduli computazionali utili a risolvere determinati sotto-problemi all’interno di un problema più complesso;

● Fornire una metodologia basata sul ragionamento per moduli computazionali utile allo sviluppo di architetture di deep learning per affrontare un dato problema;

● Fornire gli strumenti per valutare correttamente gli algoritmi di deep learning;

● Fornire gli strumenti per addestrare correttamente gli algoritmi di deep learning.

 

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 degli algoritmi che sfruttano il paradigma del Deep Learning ed in particolare le metodologie che permettono di creare sistemi di apprendimento automatico per risolvere diversi task a a partire da dati eterogenei.

2. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze pratiche utili al design e sviluppo di algoritmi di Deep Learning attraverso attività laboratoriale.

3. Autonomia di giudizio (making judgements): Attraverso “homework” proposti dal docente e la correzione 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 in cui applicare le tecniche di Deep Learning.

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 che sfruttano il paradigma del Deep Learning.

5. Capacità di apprendimento (learning skills): Lo scopo del corso è quello di fornire la conoscenza teorico-pratica sulle principali tecniche di Deep Learning. A tal proposito, saranno presentati modelli e architetture neurali utili a risolvere diversi problemi (Domain Adaptation, Metric Learning, Classificazione/Regressione, Representation Learning, ecc). Saranno discusse le metodologie per realizzare e ottimizzare gli algoritmi di apprendimento automatico, e quelle utili alla valutazione delle performance degli algoritmi. 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 tecniche di Deep Learning

2. conoscano una ampia gamma di algoritmi di Deep Learning per risolvere diversi problemi classici del Machine Learning

3. comprendano come effettuare il design e il tuning degli algoritmi di Deep Learning al fine di applicare gli stessi a nuovi set di dati

4. siano in grado di eseguire la valutazione degli algoritmi di Deep Learning in modo da poter selezionare il modello migliore

5. conoscano le librerie python utili allo sviluppo di algoritmi di Deep Learning


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 per la realizzazione del progetto finale.


Prerequisiti richiesti

Materie Propedeutiche: Machine Learning


Frequenza lezioni

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


Contenuti del corso

  • Deep Learning - Basic Concepts
  • Deep Autoencoders
  • Deep Generative Models
  • Deep Domain Adaptation
  • Deep Metric Learning
  • Deep Sequential Modeling
  • Deep Reinforcement Learning
  • Other Deep Learning Paradigms and State-of-the-Art Architectures

Testi di riferimento

  1. Appunti e Slide del Docente
  2. E. Alpaydin, Introduction to Machine Learning
  3. M. P. Deisenroth et. al, Mathematics for Machine Learning
  4. I. Goodfellow et al., Deep Learning
  5. Ovidiu Calin, Deep Learning Architectures
  6. Sutton and Barto, Reinforcement Learning
  7. David Foster, Generative Deep Learning
  8. Gabriela Csurka, Domain Adaptation for Visual Applications: A Comprehensive Survey
  9. Mei Wang, Weihong Deng, Deep Visual Domain Adaptation: A Survey
  10. Aurélien Bellet, Amaury Habrard, Marc Sebban, Metric Learning


Programmazione del corso

 ArgomentiRiferimenti testi
1Deep Learning - Basic Concepts1, 2, 4, 5 
2Deep Autoencoders1, 4 
3Deep Generative Models1, 4, 5, 7 
4Deep Domain Adaptation1, 8, 9 
5Deep Metric Learning1, 10 
6Deep Sequential Modeling1, 4, 5 
7Deep Reinforcement Learning1, 2, 6 
8Other Deep Learning Paradigms and State-of-the-Art Architectures

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.


Esempi di domande e/o esercizi frequenti

- Si definisca formalmente e mediante pseudocodice l'algoritmo Deep Q-learning.

- Si definisca formalmente una architettura di tipo GAN.

- Discutere una architettura per la generazione di dati sintetici.

- Discutere una architettura per compressione dei dati.