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.
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.
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.
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.
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.
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:
comprendano concetti chiave alla base delle tecniche di Deep Learning
conoscano una ampia gamma di algoritmi di Deep Learning per risolvere diversi problemi classici del Machine Learning
comprendano come effettuare il design e il tuning degli algoritmi di Deep Learning al fine di applicare gli stessi a nuovi set di dati
siano in grado di eseguire la valutazione degli algoritmi di Deep Learning in modo da poter selezionare il modello migliore
conoscano le librerie python utili allo sviluppo di algoritmi di Deep Learning
Materie Propedeutiche: Machine Learning
La frequenza delle lezioni non è obbligatoria ma è fortemente consigliata. In particolare si consiglia la frequenza alle ore di esercitazione.
Deep Learning - Basic Concepts
Deep Autoencoders
Deep Generative Models
Deep Domain Adaptation and Transfer Learning
Deep Metric Learning
Self-Supervised, Unsupervised, Representation Learning
Deep Sequential Modeling
Deep Reinforcement Learning
Video Understanding
Other Deep Learning Paradigms and State-of-the-Art Architectures
Appunti e Slide del Docente
E. Alpaydin, Introduction to Machine Learning
M. P. Deisenroth et. al, Mathematics for Machine Learning
I. Goodfellow et al., Deep Learning
Ovidiu Calin, Deep Learning Architectures
Sutton and Barto, Reinforcement Learning
David Foster, Generative Deep Learning
Gabriela Csurka, Domain Adaptation for Visual Applications: A Comprehensive Survey
Ulteriore materiale didattico proposto per il corso è disponibile al seguente link: https://www.dmi.unict.it/farinella/DL
Argomenti | Riferimenti testi | |
---|---|---|
1 | Deep Learning - Basic Concepts | |
2 | Deep Autoencoders | |
3 | Deep Generative Models | |
4 | Deep Domain Adaptation and Transfer Learning | |
5 | Deep Metric Learning | |
6 | Self-Supervised, Unsupervised, Representation Learning | |
7 | Deep Sequential Modeling | |
8 | Deep Reinforcement Learning | |
9 | Video Understanding | |
10 | Other Deep Learning Paradigms and State-of-the-Art Architectures |
Voto 22-25
Voto 18-21
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.