# MACHINE LEARNING

**Academic Year 2019/2020**- 1° Year

**Teaching Staff:**

**Giovanni Maria FARINELLA**

**Credit Value:**6

**Taught classes:**24 hours

**Exercise:**24 hours

**Term / Semester:**2°

## Learning Objectives

The aim of the course is to provide an in-depth introduction to some of the main Machine Learning algorithms. Models for classification and regression, as well as neural network architectures (e.g., Deep Learning) will be discussed. The couse will present the techniques to design and optimize learning algorithms, and those useful to assess the performance of Machine Learning systems. Students will use open source software libraries in Python to prototype machine learning algoritms.

At the end of the course the student should:

- know the key concepts underlying Machine Learning techniques

- be able to apply a wide range of learning algorithms to solve classical problems in Machine Learning (classification and regression)

- know how to design and fine-tune algorithms in order to apply them to new data sets

- be able to evaluate Machine Learning algorithms in order to select the best models

- know python libraries useful for the development of Machine Learning algorithms

## Course Structure

Frontal Lessons and Laboratory (in Python)

## Detailed Course Content

- Basic Concepts: Machine Learning, Probability Theory, Supervised Learning, Unsupervised Learning, Classificazione, Regressione, Training/Validation/Test Set, Performance Evaluation, Data Normalization, Overfitting and Regularization, XOR Problem, Perceptron
- Linear Models for Regression: Linear Regression, Gradient descent algorithm, Learning Rate and Debugging, Polynomial Regression, Overfitting e Regularization for Linear Regression, Regressione Lineare in Pytorch, API ad oggetti di Pytorch, Monitoring del training mediante Visdom, Linear Regression Evaluation, Learning Algorithms Design
- Linear Models for Classification: Logistic Regression, Logistic Regression with Pytorch, Regularization for Logistic Regression, Stocastic Gradient Descent, Momentum for Gradient Descent, Multi-Class Classification, Classifiers Evaluation
- Softmax Classifier and python implementation
- Neural Networks and python implementation
- Backpropagation
- Deep Learning: Convolutional Neural Network and python implementation, Transfer Learning
- Advancet Deep Learning: Introduction to LSTM, Autoencoders, Metric Learning
- Python programming and Python Libraries for Machine Learning

## Textbook Information

- R. O. Duda, P. E. Hart, D. G. Stork, "Pattern Classification", Wiley, 2000
- C. Bishop, “Pattern Recognition and Machine Learning", Springer, 2006
- E. Alpaydin, “Introduction to Machine Learning”, MIT Press, 2014
- I. Goodfellow, Y. Bengio and A. Courville, "Deep Learning", MIT Press, 2016
- Raul Rojas, Neural Networks - A Systematic Introduction, Springer, 1996
- M. P. Deisenroth, A A. Faisal, and C. Soon On, Mathematics for Machine Learning, MIT Press, 2019