DEEP LEARNING

Anno accademico 2024/2025 - Docente: GIOVANNI MARIA FARINELLA

Risultati di apprendimento attesi

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 modelli 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 agli 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.

Il materiale didattico sarà reperibile sul sito del corso: https://www.dmi.unict.it/farinella/DL/CourseSchedule.html

Prerequisiti richiesti

Si utilizzeranno nozioni di base di analisi matematica, matematica discreta, fondamenti di informatica, programmazione, interazione e multimedialità, algoritmi.

Frequenza lezioni

La frequenza è obbligatoria.

Contenuti del corso

Il corso si propone di approfondire teorie e tecniche specificatamente rivolte alle tecnologie del Deep Learning con diversi esempi applicativi. Dopo aver introdotto i concetti di base, si passeranno in rassegna architetture di Deep Learning utili per la compressione dei dati,  la generazione di nuovi dati "simili" a quelli per cui le architetture sono state addestrate, l'adattamento delle architetture a nuovi domini, la rappresentazione di dati al fine di soddisfare metriche di uno spazio, l'apprendimento a partire da dati sequenziali e l'elaborazione di video.

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

Ulteriore materiale didattico proposto per il corso è disponibile al seguente link: https://www.dmi.unict.it/farinella/DL

Programmazione del corso

 ArgomentiRiferimenti testi
1Deep Learning - Basic Concepts
2Deep Autoencoders
3Deep Generative Models
4Deep Domain Adaptation and Transfer Learning
5Deep Metric Learning
6Self-Supervised, Unsupervised, Representation Learning
7Deep Sequential Modeling
8Deep Reinforcement Learning
9Video Understanding
10Other 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.

Gli studenti con disabilità e/o DSA dovranno contattare con sufficiente anticipo rispetto alla data dell'esame il docente, il referente CInAP del DMI (prof.ssa Daniele) e il CInAP per comunicare che intendono sostenere l'esame fruendo delle opportune misure compensative.

La votazione è espressa in trentesimi secondo il seguente schema: 

Voto 29-30 e lode 

Lo studente ha una conoscenza approfondita dei concetti fondamentali e delle principali architetture di Deep Learning. Riesce a formalizzare problemi e architetture di Deep Learning, individuando gli algoritmi e le tecniche più idonee alla risoluzione dei problemi considerati in maniera autonoma e con spirito critico. Ha ottime capacità comunicative e proprietà di linguaggio. 

Voto 26-28 

Lo studente ha una buona conoscenza dei concetti fondamentali e delle principali architetture di Deep Learning. Riesce a formalizzare problemi e architetture di Deep Learning, individuando degli algoritmi e tecniche idonee alla risoluzione dei problemi considerati. Ha buone capacità comunicative e proprietà di linguaggio. 

Voto 22-25 

Lo studente ha una discreta conoscenza dei concetti fondamentali e delle principali architetture di Deep Learning. Riesce a formalizzare problemi e architetture di Deep Learning, seppure non sempre in maniera esaustiva, individuando degli algoritmi e tecniche idonee alla risoluzione del problema considerato. Ha discrete capacità comunicative e proprietà di linguaggio. 

Voto 18-21 

Lo studente ha la minima conoscenza dei concetti fondamentali e delle principali architetture di Deep Learning. Ha una modesta capacità di formalizzare problemi e architetture di Deep Learning, e di individuare degli algoritmi e tecniche idonee alla risoluzione dei problemi considerati. Ha sufficienti capacità comunicative, seppure non sempre una appropriata proprietà di linguaggio. 

Esame non superato 

Lo studente non possiede la conoscenza minima richiesta dei contenuti principali dell’insegnamento. La capacità di utilizzare il linguaggio specifico è scarsissima o nulla e non è in grado di applicare autonomamente le conoscenze acquisite.

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 un'architettura per la generazione di dati sintetici.

  • Discutere un'architettura per compressione dei dati.