Material (slides and TDs) for the deep learning course at Ensae:
Lesson 1: Introduction, simple architectures (MLPs) and autodiff [slides, Pytorch example]
Lesson 2: Training pipeline, optimization and image analysis (CNNs) [slides, Pytorch example]
Lesson 3: Sequence regression (RNNs), stability and robustness [slides, Pytorch example]
Lesson 4: Generative models in vision and text (Transformers, GANs) [slides]
Practical 1: Handwritten character recognition [notebook]
Practical 2: VAE for image clustering and generation [notebook]
Homework: Feature visualization in CNN [notebook] (notebook with solution to return by email to kevin.scaman@inria.fr before 22/03 end of day)
Projects ideas and topics
You will find below a list of code repositories and ideas for your project:
Minimal GPT: Finetune and use a simple implementation of GPT to generate text [repo or repo]
Minimal diffusion: Train and use a simple implementation of diffusion models to generate images [repo]
Diverse Weight Averaging for Out-of-Distribution Generalization: Improve out-of-distribution generalization of neural networks by a simple averaging method [repo]
Neural Radiance Fields: Create 3d scenes using neural networks [repo]
Neural ODEs: Learn the dynamics of a physical system with a neural network [repo]
Network compression: Use network pruning to reduce inference cost in low-resource settings (e.g. smartphones) [repo]
Test-Time Adaptation: Make the model adapt to adversarial changes or attacks at inference [repo]
Contrastive Language-Image Pre-Training: Use a joint image-text embedding to describe photos in plain text [repo]
Age Estimation: Use a neural network to guess the age of people on photos [repo]
Explainability of vision models: Use attention flow to help understand the model's decisions [repo]
Out-of-Distribution Detector: Find out-of-distribution examples in training data to improve false positive rate [repo]
Instructions
Please send an email to kevin.scaman@inria.fr with your topic and group for the final project (only one email per group). Please check that all these requirements are verified:
1) Each group should have at most 4 students.
2) Projects need to start with one of the topics above. If you wish to work on another project, please provide a detailed description of the objectives of the project, a link to a codebase or scientific paper to start with, and send me an email at kevin.scaman@inria.fr to make sure that the project is feasible within the duration of the course.
3) The projects should start by running the existing repo, and do something new on top of it, such as testing on a different dataset, finetuning for another application, or trying a different architecture/optimization method for the same task (see examples and ideas in the topics' repositories).
A few tips
1) Deep learning often requires a lot of debugging, so don't start on the last week of the class.
2) State-of-the-art is often achieved with extensive hyper-parameter optimisation and heavy computation power, so no worries if your implementation doesn't match the latest results in the field!
3) Always compare your implementation with a naive baseline (e.g. a linear model or a simple rule based method) to check if DL has value for this specific problem.
Deadlines
(01/03) Team formation and topics: Send email (kevin.scaman@inria.fr) with team and topic (link to repo + short description)
(29/03) Deliverables: Report (pdf, max 5 pages) + code (link to a colab file or git repo)