This can be considered the official selection test for the next batch of the Machine Learning group, renamed as the Intelligence Group or (IG), COPS IIT(BHU).
Github Link for the AI-Exercise.
All the resources required for completing the exercise are given in the AI-roadmap. The exercise is made assuming that you have at least completed the Stanford courses on NLP, RL, and CV (here).
The Exercises are structured such that you can either solve any two out of the first seven questions OR do the last question individually. Keep in mind that solving the last question means replicating state-of-the-art results of a paper.
In this question, you will create a neural net in NumPy which either computes the xor or the xnor of two one bit binary numbers depending on the value of a third input. If the third input is 0, the neural net should compute the xor of the two numbers and if the third input is 1, the neural net should compute the xnor of the two numbers.
X1 (first bit) | X2 (2nd bit) | X3 (task) | Y(Result) |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 |
Initialize the network with random parameters. Then, use the above table as the training dataset for your neural network.
Goal: To have a clear understanding of the matrix operations involved in backpropagation. Prerequisites: Neural Networks, back propagation, matrix calculus, numpy Instructions for submission: All submissions to be made as ready-to-run jupyter notebooks, which are directly executable in google colab. |
In this question you will have to study different optimizers (SGD, Adam, Rectified Adam, Adagrad, RMSProp, etc). Create and train a simple neural network (keep your network complex enough to see the difference in optimizer performance e.g. Resnets) and study the convergence of this network using different optimization methods. Write your optimizers from scratch and try to mimic the purpose for which they were created. The idea is to study different optimization methods. Don’t limit yourself to just the optimizers given above, you may also explore different optimization methods given in the http://www.deeplearningbook.org/.
Finally, prepare a small 1-3 page report of your findings, with diagrams
Note: If done properly, this work could form an excellent project or the building blocks of a publication.
Goal: To have a clear understanding of the types of optimizers used in neural networks, and their strengths and weaknesses. Prerequisites: Gradient descent, Backpropagation, types of optimizers. Instructions: All code needs to be either submitted as a zip file, containing clearly named .py files, or as a single jupyter notebook directly executable on google colab |
Download the Large Movie Review Dataset from Stanford [Link]. Extract all the sentences out of the dataset.
After learning the word embeddings (word vectors) visualise the embeddings using manifold learning algorithms. (Hint:t-SNE) You can directly use the algorithm by importing from sklearn or any other library for the visualization task.
You can learn more about word embeddings from Stanford’s 224n [Link] course or from the skymind.ai word2vec tutorial.
Train a generative adversarial network to generate images using the CIFAR10 dataset. There is no limitation to the kind of GAN you train. Report two results: One should be a baseline for your second result, and the second should be an optimisation or training technique which helped in stabilising your training of the GAN and trained it better.
Semantic Segmentation is widely used from self driving cars to robot manipulations. The main baseline architecture used for doing so is U-Nets. We want you to train a UNet for autonomous cars using the Cityscapes dataset [link]. The following link also accompanies many starter codes for you to get started. We expect you to apply the vanilla UNet(But a better architecture is always welcome) and submit a Report describing the insights you gained about the Trained UNet. This should at least contain the following 2 points.
You may lower the number of classes than given in the dataset (minimum is 3 classes, vehicles are compulsory).
The figure below is a popular baseline reinforcement learning algorithm. It uses the policy gradient step to come up with an optimal policy. In almost any reinforcement learning course, you will surely find the following algorithm mentioned.
The goal of this task is to make sure you have a clear understanding of the algorithm, which will form the basis of your understanding of policy gradient approaches in RL.
Hence, we would like you to implement this algorithm (shouldn’t take longer than 100 lines if you use Pytorch), and test it out on the following environments (all are discrete action space):
If you’re attempting this question your task is to implement a deep learning paper. Select any one of the papers published in NeurIPS 2020. First read the abstract and give a rough reading of the paper you have chosen. At this point inform us that you’re attempting to implement the paper and tell us about the paper chosen. Once you get an approval from us you can go ahead and give a thorough reading of the paper and try implementing the paper using pytorch.
We are not expecting you to write a very clean implementation but will be testing you on your understanding of the paper. Your code should be able to replicate results described in the paper.
Remember this task has not been designed for beginners but anyone is welcome to give it a try.
It is preferred if you start working on the tasks along with auditing the AI-roadmap. Here’s a rough timeline we’d like you to follow:
Read the exercise thoroughly, and start auditing either the NLP (CS224n) or the CV (CS231n) stanford course. This will be easier to follow than the RL courses. You can also go through the other resources in the AI-roadmap.
By now, you should have decided the 2 tasks of your choice or the paper you would like to implement. By the end of week 2, we expect that you should have completed at least three-fourths of the NLP/CV stanford course. Hence, you can comfortably begin working on the tasks.
By the end of this week, we expect a submission for one of the tasks. (if you are implementing the paper, you should have read the paper completely, and should have a rough implementation ready).
Try to wrap up the 2nd task, or the paper implementation. Get your reports ready.
All tasks require submissions in the form of code or reports. We will provide clear instructions on how to submit towards the end of the month. However, we encourage you to keep us informed of your progress, especially when you have completed a task.
If you have any questions/suggestions or need guidance on anything, make sure to raise a question in the group. We have also provided our whatsapp numbers for specific doubts regarding the exercise. For technical doubts, just make sure that you have googled your questions before contacting us personally.
(NLP) Aditya: 9783041889 (discord: raven#6436)
(NLP) Shravan: 7975500284 (discord: BAJUKA#5562)
(CV) Saaswath: 7094172606 (discord: 8mann#5607)
(RL, CV, NLP) Yash: 7303260400 (discord: yashsahijwani#3996)
(RL, CV) Ayush: 8777878819 (discord: aksayushx#7751)
(RL, CV) Somnath 7829287795 (discord: Hex-Plex0xff#3408)
(RL, CV) Vikhyath: 8105975839 (discord: RotInHell08#6764)
(RL, CV) Nishant 7665179120 (discord: nishantkr18#1847)