Skip to content

Instantly share code, notes, and snippets.

@justheuristic
Last active September 10, 2016 01:52
Show Gist options
  • Select an option

  • Save justheuristic/d15fa61bfd21e83b96b49165e1749d77 to your computer and use it in GitHub Desktop.

Select an option

Save justheuristic/d15fa61bfd21e83b96b49165e1749d77 to your computer and use it in GitHub Desktop.

Course projects

Below are a few ideas on what kinds of projects you can approach for the Practical Deep Learning course @ CS HSE (by Fedor Ratnokov).

The projects in this list are merely examples for you to consider. You may, of course, pick any of them without any alterations, but don't be shy to tailor them to best fulfill your interests or curiosity.

The best possible scenario is when you already have an idea for such project awaiting the opportunity, e.g.:

  • improving the model in that research you conduct at your department
  • reproducing that article that you are excited about, but haven't found any reasonable implementation yet

Picking a project

When you have converged on the project idea, please do tell me about that and do so ASAP. Working on your projects in secret and suddenly approaching us with them a few weeks before course end is a bad practice.

Ideally, you should tell us of your pick by the week [lecture] #6.

Afterwards, it is time to analyze existing work and formulate the initial milestone.

Evaluation

The projects may be of varied total complexity, but the scoring system is oriented on evening that out. The rewards are given for iterations of roughly same size, so if simple image classification-based project would have the first milestone about "finding out whether some particular idea beats the baseline", for a more complicated project about, say, deep reinforcement learning, merely reproducing the baseline is already a milestone.

The base rewards are:

  • 10 points for preliminary analysis: reading articles, posts, formulating ideas, reporting.
  • 20 points for a basic prototype:
    • for research projects: an basic experiment that implements and supports/rejects the initial hypothesis.
    • for development projects: implementing core functionality in an MVP way.
  • 10 points per each additional iteration
    • research: extending/adjusting hypothesis,
    • development: additional majore feature/set
    • Must be agreed with us to prevent abusing.
    • Rule of thumb: at least half as hard as a homework assignment

So in the worst case(idea proven wrong after a few iterations), you can expect your project to yield a total of 40 points or more. You can also expect bonuses for any way your project benefits others, e.g.

  • Open-source release with human users
  • research: article/blog post that is available and readable
  • development: releases

Restrictions

Some topics have higher entry barrier than others. For this reason, topics like

  • Machine translation
  • Speech recognition
  • Image captioning

are not present in project examples and generally discouraged UNLESS you have a prior experience in the domain area or have strong reasons to proceed. All these topics generally REQUIRE sizeable effort and hardware to even start iterating, training times may reach several weeks and potential opportunities to shoot oneself in the foot are virtually infinite.

Technical stuff

Technically there are no restrictions on the framework you use for your project, you may even write it from scratch. However, there is no guarantee we will be able to aid you with any issues outside numpy/theano/lasagne stack.

As a general rule, make sure that you are either a confident user of the framework you chose or have a regular access to someone who is.

Also, please make sure that your framework is compatible with all the project steps you planned and they take reasonable amount of time/effort.

Teamwork

Teams are allowed but only as far as both teammates have a pre-determined role in the project. E.g.

  • your team is synthecising fonts; One person is trying the autoencoders, the other tries GAN.
  • your team is building a neural conversation model; One person optimizes the NN architecture, the other tries out various improved sampling approaches at the decoder (e.g. beam search)

Bounding box regression

  • [vision] [need gpu]

It is said that computer vision begins when you try something harder than image classification.

  • Image classification - "There is a cat on the image"
  • Bounding box prediction - "There is a cat at this rectangle"
  • Image Segmentation - "These specific pixels of image form a cat"

If you feel up to the challenge, you can just as well start from the bounding box prediction.

  • reasonable dataset and benchmark for the job: Pascal 2007
  • RCNN for a start
  • If you're familiar with graphical models, you may also extend your model to pixel-wise image segmentation.

Font generation

  • [vision] [generative]

Yandex recently spent a whole lot of time and effort designing a new font by performing some weird designer stuff beyond human understanding. Can your neural network do that in a few CPU cycles?

Seriously, there's a lot of fonts out there. Look at these for a start. And there also are a few ways to learng to generate new objects given enough samples.

  • various autoencoders, VAE
  • adversarial stuff
  • recurrent stuff
  • RBMs and their extensions
  • all thinkable combinations of such (example)

Isn't it the time to show these insolent designer folk how it's done?

Post/comment generation

  • [nlp] [social networks] [preprocessing]

It is surprising how organic biomass forms large clusters around some primitive piece of content while leaving your obvious genius largely unnoticed.

If humans can't appreciate your art, than so be it, f*ck humans. You sure can raise your audience to appreciate you from the ground up. Literally. Train a neural network that will generate comments for your posts.

  • Huge dataset easily available through youtube/twitter/vk/... api.
  • Recurrent language models as a start
  • Commenter personality embedding
  • Generating conversations?

Conversation model

  • [nlp] [social networks] [need gpu]

Sometimes what you need is for someone to hear you out. Since no human willingly listens to nerds like us, we might as well use chatbots instead.

Domain adaptation in high energy physics

  • [hep]

High energy physicists are weird folk. They train their models on simulated physics and expect them to work well on real world physics. Fortunately, we have a few things that can adapt one domain to the other.

Playing game given raw inputs

  • [rl] [preprocessing]

Many of us have sacrificed our videogame hobbies in favor of scientific or industrial progress. However we can now rejoice, for the recent advances in deep reinforcement learning has allowed us to train pet neural networks to play videogames instead of us.

This idea has many potential applications in read world tasks, but for now why can't we just play a few more games.

Ultimate Continuous RL comparison

  • [rl] [demo]

Playing a game with a few buttons is one thing. Playing games with hundreds of buttons is a bit more respectable. Ultimate pro MLG cool deep networks play games with continuously many actions.

The problem is, each such network claims to be by far the best one and this usually means someone is a bit exaggerating

DNI

  • [demo] [article]

There's this article with a nice idea of learning the gradients for each layer that is yet (by Sep 2016) to uncover it's full potential.

If only one could make a simple demo reproducing the article, a lot of people would surely appreciate that and iterate on. Not to mention that you yourself would get an excelleng opportunity to push science a bit forward.

  • First, reimplement existing DNN demo and basic experiment
  • Would be also great to see the RNN example
  • Super-duper-ideal case - make a user-friendly extension to lasagne/your_favorite_framework where it still isn't implemented and throw a pull-request.

#Sketches

Bug/typo predictor

You know this situation when you make a commit to your github repo to than find out that you messed up with some silly mistake or just made a typo -- and than immediately follow up by a second commit that fixes the thing.

Now wouldn't it be great to have a nice system that predicts such cases and suggests you what you would otherwise fix after breaking the build or at a code review? Thing Google Smart Reply for developers.

Funny part is, you have all data in the world available at github or bitbucket or any other opensource hub.

As a first step you could take commit data and try predicting whether the next commit will be made in under N minutes, change a few words and have the name 'typo' in the commit message.

Personality by image

  • Core idea: predict person's hobbies, ideology, etc. given his photo.
  • This brings you closer to magic glasses that tell you 'dat guy is likely to be a backend dev just like you. He also likes indie Rock bands and plays D&D' -- about a dude you randomly encounter in a pub or something without actually DOXing him.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment