Machine learning (ML) is a type of artificial intelligence (AI) that allows software applications to become more accurate at predicting outcomes without being explicitly programmed to do so, but exploiting historical data.
Here you can find the lecture notes used for the course on Tiny Machine Learning at University of Genoa by Prof. Riccardo Berta. The lecture notes are provided as several notebooks and powerpoint slides, each one covering a specific topic. The notebooks are written in Python and use libraries such as NumPy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, and PyTorch. The course is designed to be self-contained, so you don't need any prior knowledge of machine learning, although it helps to have some basic understanding of linear algebra, calculus, probability, and Python programming.
Unfortunately, GitHub's notebook viewer does not render some features, such as interactive plots, it's slower, the math equations are not always displayed correctly, and large notebooks often fail to open. So if you want to play with the code, you need to run the notebooks. You can do that in three ways:
-
Locally: you can clone this GitHub repository and start Jupyter Notebook. This is the best option if you want to explore the notebooks in read-write mode, modify them and run the code. However, you need to have Python and all libraries installed on your computer, and you need to install all the dependencies required by the notebooks, which can be time-consuming and somehow challenging. Here you can find a guide on how to install Python and all libraries on your computer.
-
Remotely: you can click on this button
. This will open the notebooks on Google Colab, a free online service that allows you to run Jupyter notebooks (it uses Google Drive as a backend, so you can save your notebooks there). This is the best option if you want to quickly view the notebooks, as Google Colab comes with all the dependencies pre-installed and ready to use. However, you will not be able to modify the notebooks (although you can make a copy and modify that copy in your Google Drive).
-
Online: you can click on the button
. This will open the notebook on nbviewer, a free online service that renders notebooks as static web pages. This is similar to GitHub's notebook viewer, except that it properly renders more features (including interactive plots), it's faster, and it also allows you to download the notebook. However, you will not be able to modify the notebooks or run any code (except for the interactive plots).
The notebooks of this course are based on contents and examples from the following sources:
- A. Géron Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow
- T. Hastie, R. Tibshirani, J. Friedman The Elements of Statistical Learning
- S. Shalev-Shwartz, S. Ben-David Understanding machine learning: From theory to algorithms
- M. Bishop, H. Bishop Deep learning: Foundations and concepts
- J. Grus Data Science from Scratch
- T. Mitchell Machine Learning
- D. Situnayake, J. Plunkett AI at the Edge - Solving Real-World Problems with Embedded Machine Learning
- P. Warden, D. Situnayake TinyML - Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers
- L. Tunstall, L. von Werra, T. Wolf Natural Language Processing With Transformers
- V. J. Reddi Machine Learning Systems with TinyML