Obiettivo dell'insegnamento è quello di introdurre le competenze necessarie per comprendere ed utilizzare i più importanti paradigmi di Machine Learning. Il percorso formativo si svilupperà lungo due direttrici principali. La prima direttrice è basata sulla didattica frontale e persegue lo scopo di analizzare gli aspetti teorici che stanno alla base di paradigmi quali le reti neurali a singolo strato, il Deep Learning, i modelli di apprendimento basati su kernel, i metodi di clustering e gli alberi decisionali. La seconda direttrice è basata su esercitazioni pratiche e persegue lo scopo di coinvolgere lo studente nei processi implementativi. Nel complesso, le modalità didattiche saranno strutturate in modo da trasmettere allo studente non solo competenze teoriche sui modelli basati su Machine Learning, ma anche gli strumenti pratici per implementare tali modelli su microprocessore e GPU.
Scopo dell'insegnamento è fornire le basi per la progettazione e lo sviluppo di algoritmi di classificazione e regressione. Lo studente viene introdotto a diversi concetti di machine learning (modelli lineari, alberi di decisione, ensemble learning, reti neurali, ecc.) e aiutato a comprenderli attraverso esercizi svolti al calcolatore durante le lezioni frontali sfruttando le principali librerie software del linguaggio Python (NumPy, Pandas, SciKitLearn e TensorFlow). Nella parte finale dell'insegnamento, particolare attenzione verrà posta sull'implementazione dei modelli su dispositivi embedded.
L'insegnamento è costruito da una parte di lezione frontale e una parte di esercitazione. Durante la lezione frontale, il docente presenta gli argomenti fornendo sempre esempi di codice che vengono provati sul notebook Jupyter. Gli studenti possono utilizzare i propri calcolatori durante la lezione per mettere in pratica quanto proposto dal docente. Durante le esercitazioni, gli studenti devono affrontare al calcolatore problemi reali che possono essere risolti applicando le tecniche viste durante le lezioni frontali.
Parte 1 - Algoritmi e tecniche fondamentali Introduzione e catalogazione degli approcci Regressione Classificazione Modelli Lineari Alberi di Decisione Ensemble Learning Dimensionality Reduction Algoritmi non supervizionati Parte 2 - Reti Neurali Percettrone MLP Backpropagation Reti a convoluzione Advanced Vision Parte 3 - Implementazione su dispositivi embedded Inferenza Quantizzazione TensorFlow Lite e TensorFlow Micro Deployment su piattaforma NVidia Jetson TinyML
Ricevimento: Il docente riceve su appuntamento, per prendere appuntamento è possibile contattare il docente tramite Microsoft Teams (preferibilmente) o tramite email a riccardo.berta@unige.it
ALBERTO OLIVERI (Presidente)
RICCARDO BERTA (Presidente Supplente)
EDOARDO RAGUSA (Presidente Supplente)
https://corsi.unige.it/8732/p/studenti-orario
L'esame consiste in una interrogazione orale sugli argomenti presentati a lezione e nel commento delle esercitazioni svolte durante l'insegnamento. In particolare, lo studente deve dimostrare di aver compreso appieno i concetti alla base dello sviluppo di modelli basati sulle tecniche del machine learning e di saperli applicare alla progettazione e implementazione di applicazioni su dispositivi embedded.
Durante l'orale, il docente chiederà allo studente di illustrare i concetti imparati a lezione. Per ogni concetto, lo studente dovrà, oltre alla definizione, descrivere le condizioni per la sua applicazione, gli eventuali vantaggi e svantaggi. Nel commentare le esercitazioni realizzate durante l’insegnamento, allo studente verrà richiesto di descrivere le scelte progettuali compiute, le possibili alternative scartate e le motivazioni.