Kids are amazing learning machines. Even if they have never
seen a cat before, you only need to show them one
single image of a cat, and they will be able to recognise
cats in a wide variety of other situations. Computers, by
comparison, don't do nearly as well. Despite the
'Deep
Learning' craze that has taken industry and research by
storm, most computer algorithms need to be trained
using millions
of images of cats before they are able to generalise
their knowledge to other situations.
The problem of how to make machines learn from just a single example is known as the 'one-shot learning problem'. This remains a tough research problem, as witnessed by the large body of literature on the topic. There is some recent progress, but there is plenty left to be understood and explored.
The goal of the present project is to introduce you to the basic concepts of machine learning and make you understand the underlying mathematics. You will start by learning the basic concepts in machine learning theory, such as 'classifiers', 'dimension reduction', 'auto-encoders' and 'neural networks', both in terms of the mathematical theory and at the level of simple computer programs which you can implement yourself. You will then delve into some more modern developments in the field, analysing one or more recent research papers. There are connections with all sorts of topics in mathematics (e.g. Bayesian statistics) as well as physics (e.g. disordered systems).
You must have some programming experience in Python, C/C++ or R, e.g. from having taken Programming I, Mathematical Modelling II or a related module in Physics. It helps if you have taken a statistics module, e.g. Statistical Concepts II or Statistical Methods III but this is not an absolute requirement.