Course Syllabus
Obiettivi
Il corso si propone di fornire le conoscenze di base del Machine Learning, con particolare attenzione alla comprensione dei principi teorici fondamentali che ne guidano il funzionamento.
Accanto agli aspetti teorici, verrà dato ampio spazio alla dimensione pratica: gli studenti acquisiranno competenze operative di programmazione in Python e saranno in grado di sviluppare, implementare e gestire modelli di Machine Learning tramite l’utilizzo della libreria Keras.
L’obiettivo finale è permettere agli studenti di comprendere cosa c’è dietro i modelli di Machine Learning e di essere in grado di applicarli in contesti concreti, almeno per i casi di base.
Descrizione secondo i 5 Descrittori di Dublino
- Conoscenza e capacità di comprensione
Al termine del corso, lo studente comprenderà i principali concetti del Machine Learning, come backpropagation, training, overfitting, bias, variance e underfitting, e sarà in grado di utilizzarli correttamente in un contesto tecnico. Saprà interpretare questi termini sia dal punto di vista pratico sia attraverso una solida base matematica: ad esempio, riconoscerà la backpropagation come un'applicazione efficiente della regola della catena e il training come un processo basato su algoritmi di ottimizzazione specifici.
- Conoscenza e capacità di comprensione applicate
Durante il corso verranno fornite le basi teoriche del Machine Learning, ma verrà dato ampio spazio anche all’aspetto pratico. In particolare, lo studente acquisirà una buona familiarità con la creazione, l’addestramento e la gestione di modelli di Machine Learning utilizzando Keras, una libreria Python largamente impiegata nello sviluppo di applicazioni di intelligenza artificiale e deep learning.
- Autonomia di giudizio
Lo studente svilupperà capacità critiche nel valutare la validità e i limiti delle tecniche di Machine Learning. Di fronte a un problema specifico, sarà in grado di individuare il modello più appropriato e avrà le competenze necessarie per valutarne le prestazioni, identificarne eventuali punti deboli e proporre possibili miglioramenti.
- Abilità comunicative
Lo studente acquisirà dimestichezza con la terminologia specifica del Machine Learning e comprenderà il legame tra questi termini e i concetti matematici sottostanti.
Questa consapevolezza gli permetterà di comunicare in modo efficace con interlocutori esperti, contribuendo attivamente al dialogo grazie alla capacità di collegare la formalizzazione matematica con le applicazioni pratiche.
- Capacità di apprendere
Lo studente, avendo acquisito le conoscenze di base relative ai modelli di Machine Learning, sarà in grado di affrontare autonomamente lo studio di modelli più complessi, come le reti neurali convoluzionali o le reti ricorrenti. Inoltre, grazie alla familiarità maturata con la libreria Keras, potrà facilmente estendere le proprie competenze all’utilizzo di altre librerie ampiamente impiegate in ambito professionale, come PyTorch o TensorFlow, sviluppando una crescente autonomia nell’apprendimento di nuovi strumenti e tecnologie.
Contenuti sintetici
Il corso fornirà le basi matematiche essenziali per comprendere il Machine Learning, insieme a una solida introduzione alla programmazione in Python. Verranno affrontati i tre principali ambiti applicativi: classificazione, regressione e clustering. Particolare attenzione sarà dedicata alla procedura standard per la costruzione di un modello di intelligenza artificiale, approfondendo le fasi di training, validazione e testing.
Programma esteso
Nella parte teorica verranno affrontate questi punti:
- problemi affrontati dal Machine Learing
- matematica nel Machine Learning
- training, i.e., problema di ottimizzazione
- backpropagation
- definizione della funzione di ottimo
Nella parte pratica verranno affrontati questi punti
- introduzione a python
- introduzione a keras
- Neural Network
- problemi di regressione
- problemi di classificazione (supervisionata e non supervisionata)
- gestioine del training set (sua divisione, riduzione dei dati)
- overfitting, underfitting, bias, variance
Prerequisiti
Non ci sono particolari prerequisiti se non le nozioni base di analisi 1. Per la parte pratica è preferibile una buona conoscenza dei sistemi Linux.
Modalità didattica
Il corso è composto da
- 28 ore di lezione svolte in modalità erogativa con uso di lavagna.
- 28 ore di laboratorio in modalità erogativa con uso del computer per studiare Python e Keras.
Il corso è previsto in lingua italiana.
Materiale didattico
Il corso si baserà:
- sul libro "Deep Learning with Python" 2nd Edition di F.Chollet
- sull'articolo "Deep Learning: An Introduction for Applied Mathematicians" di C. F. Higham e D. J. Higham
In itinere verranno redatte delle note del corso.
Periodo di erogazione dell'insegnamento
Secondo Semestre
Modalità di verifica del profitto e valutazione
Sviluppo di un progetto originale a partire da una semplice idea o dall’analisi di un caso esistente che verrà discusso tramite un colloquio orale.
A tal proposito dovrà essere redatta una relazione e delle slides a supporto del colloquio orale.
Orario di ricevimento
Su appuntamento concordato via mail.
Aims
The course aims to provide students with the fundamental knowledge of Machine Learning, with a particular focus on understanding the core theoretical principles that underpin its functioning.
Alongside the theoretical foundations, significant emphasis will be placed on practical application: students will acquire hands-on programming skills in Python and will learn how to develop, implement, and manage Machine Learning models using the Keras library.
The ultimate goal is to enable students to understand what lies behind Machine Learning models and to apply them effectively in real-world scenarios, at least for basic cases.
Description According to the Five Dublin Descriptors
- Knowledge and Understanding
By the end of the course, students will understand the key concepts of Machine Learning, such as backpropagation, training, overfitting, bias, variance, and underfitting, and will be able to apply them correctly in technical contexts. They will interpret these terms both from a practical standpoint and through a solid mathematical foundation. For example, students will recognize backpropagation as an efficient application of the chain rule, and training as a process based on specific optimization algorithms.
- Applying Knowledge and Understanding
While the course will cover the theoretical foundations of Machine Learning, great importance will also be given to practical aspects. In particular, students will develop strong familiarity with building, training, and managing Machine Learning models using Keras, a widely adopted Python library for artificial intelligence and deep learning applications.
- Making Judgements
Students will develop critical thinking skills in evaluating the validity and limitations of Machine Learning techniques. When faced with a specific problem, they will be able to select the most appropriate model, assess its performance, identify potential weaknesses, and propose possible improvements.
-
Communication Skills
Students will become comfortable with the specific terminology of Machine Learning and will understand how these terms connect to their underlying mathematical concepts. This awareness will enable them to communicate effectively with technical experts, actively contributing to discussions by bridging mathematical formalization with practical applications. -
Learning Skills
Having acquired fundamental knowledge of Machine Learning models, students will be capable of independently studying more advanced models, such as convolutional neural networks and recurrent neural networks. Additionally, thanks to their familiarity with the Keras library, they will be well-prepared to extend their skills to other widely used professional frameworks, such as PyTorch or TensorFlow, fostering increasing independence in learning new tools and technologies.
Contents
The course will provide the essential mathematical foundations for understanding Machine Learning, along with a solid introduction to Python programming. The three main application areas will be covered: classification, regression, and clustering. Special attention will be given to the standard procedure for building an artificial intelligence model, with a focus on the phases of training, validation, and testing.
Detailed program
The theoretical part of the course will cover the following topics:
- Problems addressed by Machine Learning
- The role of mathematics in Machine Learning
- Training as an optimization problem
- Backpropagation
- Definition and identification of the objective (optimal) function
The practical part of the course will cover the following topics:
- Introduction to Python
- Introduction to Keras
- Neural Networks
- Regression problems
- Classification problems (supervised and unsupervised)
Training set management (splitting, data reduction techniques)
Overfitting, underfitting, bias, and variance
Prerequisites
No particular prerequisites are required, apart from basic knowledge of introductory calculus (Calculus 1). For the practical part, a good knowledge of Linux systems is recommended.
Teaching form
The course includes
- 28 hours of lectures delivered in a traditional format using the whiteboard.
- 28 hours of laboratory sessions will be conducted in a practical format, using computers to study Python and Keras.
The course will be taught in Italian.
Textbook and teaching resource
The course will be based on:
- "Deep Learning with Python" (2nd Edition) by F. Chollet
- "Deep Learning: An Introduction for Applied Mathematicians" by C. F. Higham and D. J. Higham
Additional course notes will be prepared throughout the course.
Semester
Second Semester
Assessment method
Development of an original project, starting from a simple idea or from the analysis of an existing case, which will be discussed through an oral examination.
In this regard, a written report and a set of presentation slides must be prepared to support the oral discussion.
Office hours
By appointment, arranged via email.
Key information
Staff
-
Franco Dassi