WnCC - Seasons of Code
Seasons of Code is a programme launched by WnCC along the lines of the Google Summer of Code. It provides one with an opprtunity to learn and participate in a variety of interesting projects under the mentorship of the very best in our institute.
List of Running Projects
- Browser Based PDF manager
- Resume Script Generator
- Physicc : A Simple Physics Engine
- Image Colorization
- Language Model Based Syntax Autocompletion in a Text Editor
- Computer vision based web app
- Cribbit Cribbit (Open for PGs Only)
- Techster Texter
- Language Detection
- Book Tracker
- ResoBin - Not the bin we deserve but the bin we need!
- Agree to disagree
- Watson (World's smartest assistant in your pocket)
- Meta Learning - Learning to Learn
- Break free of the matrix, by building one!
- Procedurally Generated Infinite Open World
- Introduction to App Development
- PAC MAN
- Introduction to Web Development
- Goal ICPC
- Traffic congestion modelling and rendering
- Tools for Data Science
- Machine Learning Based Metropolitan Air Pollution Estimation
- Audio controlled drone
- NLPlay with Transformers
- DIY FaceApp
- A Deep Dive into CNNs
- Competitive Coding
- Snake AI
- Facial Recognition App
- Gaming meets AI !!!
- R(ea)L Trader
- Computational Geometry
- Deep reinforcement learning - 2048 AI
- Reinforcement Learning to Finance
- Developing Hybrid ANN-Statistical Model for Robust Stock Market Prediction
- Astronomical Data-modelling and Interpretation
- Visual Perception for Self Driving Cars
- Convolutional Neural Networks and Applications
- Quantum Computing Algorithms
- Algorithm Visualizer
- Anime Club IITB Website using Django
- Machine Learning in Browser
This project is aimed towards people who are interested in ML and Neuro-Linguistic Programming; and handles Neural Machine Translation with an unusual approach
Neural Networks are being extensively used for machine translation. While tools like Google Translate might look so practically effective in translation, the accuracy (BLEU scores) of such models on test benchmarks is just in the range of 28-40%! From our initial experiments with such models, we can say that these networks essentially learn to output translations all of which carry the same semantic structure – a different way of referring to the same thing or paraphrasing. There has been some previous work in the domain of learning to align to fixed semantic structure or learning to handle paraphrasing during NMT. We have a simple approach in mind, which we want to try out.
We stick to the standard Encoder-Decoder architecture for Neural Machine Translation(NMT). To give a brief overview, a recurrent neural network (Encoder) takes the input sequence and converts it to an intermediate hidden representation on which another recurrent neural network (Decoder) operates and produces the output sequence. The standard NMT architecture involves a single encoder and decoder mechanism. Here, essentially, we want to have multiple decoders, each of which can capture a different semantic structure of the sequence. Training these multiple decoders will involve not only maximising the likelihood for prediction for each but also producing diverse outputs among themselves. If successfully learned, this model can learn to produce translations which are different ways of saying the same thing.
The motivation for this idea comes from an analogy to generative models like GANs. Often GANs suffer from mode collapse, that is they fail to capture different modes in the space of images, and rotate among different modes. Having a ‘n-way’ mixture (which essentially is implemented by multiple decoders), we can prevent such a problem from arising.
Some (initial) relevant papers:
- Adversarial Example Generation with Syntactically Controlled Paraphrase Networks https://arxiv.org/pdf/1804.06059.pdf
- Diverse Beam Search https://arxiv.org/abs/1610.02424
- Breaking softmax bottleneck (might be interesting to see if their solution captures semantic structures too) https://arxiv.org/abs/1711.03953
Base Code: Tensorflow Official NMT repository https://github.com/tensorflow/nmt
Why should one choose this project?
This project is more on the lines of exploration so active participation is needed from your side not only for the coding part but also for formulating the problem and thus you will have the freedom to test and implement your own ideas as well. This will be an excellent way to venture into the field of Machine Learning (Deep Learning in specific) and can act as a solid starting point for you to pursue more projects/research in DL. This project will also involve active reading of research papers and hence can be a very hands on research experience for you.
Who should choose this project?
A prerequisite for choosing this project is having a basic knowledge of Neural Networks and concepts of Machine Learning (Though this can also be learnt while doing the project if student is motivated and interested to learn). The student should be comfortable coding in Python and should have ability to learn to program in a new environment (Tensorflow). Any prior experience with Keras, Pytorch or Tensorflow is appreciated.
|Week 1 :||Reading Seq2Seq NMT paper and getting familiarized with the code by trying out some simple variations and trying to replicate benchmarks on some datasets|
|Week 2 onwards:||Implementing a multi-decoder module in the NMT code and modifying the loss for training by incorporating cross entropy on the predicted sequence and divergence between different decoder models|
|.||Testing initially on synthetic datasets for proof of concept and use this to tweak the model architecture, loss, etc to improve the prediction scores. If there are signs of the model being able to capture wider semantic structures, we can test the model on bigger datasets.|
This project might be resource intensive. Google Cloud or other Cloud platforms might be required to test full blown models, once the model seems to work on toy data.
If the idea works out and results are encouraging, this might lead to an academic research paper at an NLP/ML conference.