This repository is a collection of open material to learn machine learning. The curriculum below is designed to match a 5 ECTS points course for Master's level students. It is a combination of lectures and exercises from two courses, namely Machine Learning by Andrew Ng and CS231N: Convolutional Neural Networks for Visual Recognition from Stanford University. All exercises are to be solved by downloading them to your local computer and solve them using Jupyter Notebook. The curriculum is designed to cover important aspects of the possiblities when applying machine learning, with plenty of opportunities for students to expand their understanding by following each of the online courses in their full extent. For the interested, additional resources are available for a recommended full course on Statistical Learning by Trevor Hastie and Rob Tibshirani.
If you would like a brief introduction to machine learning, watch 3Blue1Brown's (Grant Sanderson's) introduction to neural networks.
The ML_in_research folder contains references for novel research within the natural sciences employing deep learning.
Content | Resources | |
---|---|---|
Week 1 | Introduction and installation of Python environment | See installation guidelines below. |
Week 2 | Linear regression | Video lectures: Machine Learning by Andrew Ng, lecture 1.1 to 2.8 (optional: lecture 4.1 to 4.9 for linear regression with multiplie variables). Exercises: Exercise 1 Lecture slides: Lecture 1 and Lecture 2 (optional: Lecture 4) Lecture notes: Notes 1 and Notes 2 |
Week 3 | Winter break | |
Week 4 | Logistic regression and regularization | Video lectures: Machine Learning by Andrew Ng, lecture 6.1 to 7.4. Exercises: Exercise 2 Lecture slides: Lecture 6 and Lecture 7 Lecture notes: Notes 3 Optional: Video on the binary cross-entropy loss function by Aurélien Géron |
Week 5 | Neural networks | Video lectures: Machine Learning by Andrew Ng, lecture 8.1 to 9.8. Exercises: Exercise 4 Lecture slides: Lecture 8 and Lecture 9 Lecture notes: Notes 4 and Notes 5 |
Week 6 | Support Vector Machines | Video lectures: Machine Learning by Andrew Ng, lecture 10.1 to 10.7 and 12.1 to 12.6. Exercises: Exercise 6 Lecture slides: Lecture 10 and Lecture 12 |
Week 7 | Case study using scikit learn | Video lectures: Machine Learning by Andrew Ng, lecture 11.1 to 11.5. Read: A Few Useful Things to Know about Machine Learning Exercises: scikit-learn exercise |
Week 8 | Convolutional Neural Networks | Video lectures: CS231n from Stanford University 2017, lecture 5 Exercises: CNN Exercise 1 |
Week 8 | Convolutional Neural Networks | Video lectures: CS231n from Stanford University 2017, lecture 9 (until 28:20) Optional lectures: CS231n from Stanford University 2017, lecture 12 Exercises: CNN Exercise 2 |
Week 10 | Recurrent Neural Networks | Video lectures: CS231n from Stanford University 2017, lecture 10 Exercises: RNN Exercise |
Week 11 | Project (or deep learning in research) | |
Week 12 | Easter break | |
Week 13 | Project | |
Week 14 | Project | |
Week 15 | Project |
-
Original course webpage: Machine Learning by Andrew Ng.
-
All lectures are available here.
-
Course material is available here. All exercises can be downloaded as a zip file here (right click -> save as). The exercises are modified versions of those implemented by Gerges Dib.
-
Textbook for the course (with Python examples): Python for Data Science by Jake VanderPlas.
-
Original course webpage: CS231N: Convolutional Neural Networks for Visual Recognition from Stanford University
-
All lectures from 2016 available here and all lectures from 2017 available here.
-
Get exercises from the course webpage here
-
Textbook for the course: Deep Learning Book by Ian Goodfellow, Yoshua Bengio, and Aaron Courville
-
If you are interested, hundreds of students' final projects from the course are available here.
-
Original course webpage: Statistical Learning by Trevor Hastie and Rob Tibshirani
-
Python exercises are available here (made by Jordi Warmenhoven).
-
Textbook for the course: Elements of Statistical Learning by Trevor Hastie, Rob Tibshirani, and Jerome Friedman.
-
Mathematics for Machine Learning by Marc Peter Deisenroth, A Aldo Faisal, and Cheng Soon
-
Elements of Statistical Learning by Trevor Hastie, Rob Tibshirani, and Jerome Friedman
-
Deep Learning Book by Ian Goodfellow, Yoshua Bengio, and Aaron Courville
-
Pattern Recognition and Machine Learning by Christopher Bishop (Python implementations of algorithms available here)
-
For learning Python: Python tutorials by Corey Schafer
-
Mathematics recap: Math videos by 3Blue1Brown (Grant Sanderson). Especially notice his Essence of linear algebra and Essence of calculus playlists.
-
Short presentations of deep learning research: Two Minute Papers by Károly Zsolnai-Fehér
-
A brief introduction to Jupyter Notebook can be found here.
-
A brief introduction to the Python programming language can be found here.
-
I advise newcomers to see code examples during the course from Python for Data Science by Jake VanderPlas.
-
A YouTube channel containing many valuable Python lessons can be found at Python tutorials by Corey Schafer.
-
For a full course on Python, go here. Lectures are available here and a book with exercises is available here.
-
If you are interested in improving your general programming skills (not just Python), I very much advise you to take CS50: Introduction to Computer Science from Harvard. All lectures are available here.
-
The Coursera Machine Learning course we use in the curriculum above is a slimmed down version of CS229 from Stanford University, which presents the same subjects as the Coursera version, but from a more mathematically rigorous point of view. This course is available at CS229 at Stanford University with lectures on YouTube.
-
Many free online courses on machine learning has been collected in this list, including ones on more advanced topics.
-
Install Anaconda with Python 3.7. The installer can be downloaded here: https://www.anaconda.com/download . It will at some point ask if you want to 'Add Anaconda to my PATH environment variable'. The answer to this question is 'no', you do not want to do this.
-
Launch a Jupyter Notebook in Anaconda (use the Anaconda Navigator if you use Windows/Mac or create and run it from a new conda environment if you use Linux).
-
Write and run the following code: print("Hello, World!")
-
Assuming that the computer is having a good day, you should see the words "Hello, World!" being printed. If this is not the case, or you never even made it to step 4, then do not worry. Take a deep breath and a sip of your coffee. Search for solutions online and try one more time.
Using Anaconda should be seen as a suggestion for newcomers in the field. If you already have another solution running, such as using Docker containers, you are welcome to continue in this way.
The material in this repository has been collected from a variety of sources. Thanks to the authors of the online courses for making their valuable teachings accesible for free. Furthermore, thanks to all authors of the open textbooks, YouTube channels, exercises, and lecture notes.
Machine learning exercises were forked from Gerges Dib and lecture notes and slides were forked from Remy Marquis.