# Best (And Free) Resources to Understand the Nuts and Bolts of Deep Learning

# Best (And Free) Resources to Understand the Nuts and Bolts of Deep Learning

### This is a list of resources that might help you get to know what happens inside the hood when you, say, put a conv2d layer or call T.grad in Theano.

Join the DZone community and get the full member experience.

Join For FreeThe internet is filled with tutorials to get started with Deep Learning. You can choose to get started with the superb Stanford courses CS221 or CS224, Fast AI courses or Deep Learning AI courses if you are an absolute beginner. All except Deep Learning AI are free and accessible from the comfort of your home. All you need is a good computer (preferably with a Nvidia GPU) and you are good to take your first steps into Deep Learning.

This article, however, is not addressing the absolute beginner. Once you have a bit of intuition about how Deep Learning algorithms work, you might want to understand how things work below the hood. While most work in Deep Learning (the 10% apart from Data Munging viz 90% of total work) is adding layers like Conv2d, changing hyperparameters in different types of optimization strategies like ADAM or using batch norm and other techniques just by writing one line commands in Python (thanks to the awesome frameworks available), a lot of the people might feel a deep desire to know what happens behind the scenes. This is the list of resources which might help you get to know what happens inside the hood when you, say, put a conv2d layer or call T.grad in Theano.

## General Treatise

Deep Learning Book is, of course, the most famous and well-known resource. Other good resources are Professor Charniak’s course and paper, which are technical introductions to Deep Learning. There are other resources as well, which you might want to take up if you want to understand things from a particular perspective. For example, the tutorial was written from point of applied mathematicians, and if you just want to start coding without going into any theory, then read here. One more recommended resource is a Deep Learning course in PyTorch, here. This course talks about things bottom up and help you grab a bigger perspective.

## Issues about Backpropagation

There are many times when people are not sure about “How is gradient descent and backpropagation the same thing?” or, “What exactly is the chain rule and backpropagation?” To understand the basics, we might choose to read the original paper by Rumelhart, Hinton, and Williams where it all started. The paper is located here and is a very simple to understand document.

Some other very useful resources one can read on top of this are Karpathy’s blog on backward prop derivation and this video explaining backprop’s derivation.

## Linear Algebra and Other Maths

Anyone would redirect someone aspiring to learn Linear Algebra to go to Prof. Strang’s course. This is probably the best resource on Linear Algebra on the planet. Similar is the case with the Optimization course of Prof. Boyd, here, or Calculus on Manifolds book for vector calculus (you can find a pdf when you Google “Calculus on Manifolds”). However, one doesn’t need to go through the depth at which these resources look at their subjects to jump into Deep learning. A very quick way to get started is to take the quick refresher on all prerequisite Calculus for Deep Learning, which is available here. There is also this very good set of lecture notes to just look at convex optimization used in Deep Learning. Another good resource is Sebastian Reuder’s paper, here. I also like these lecture notes to understand derivatives on tensors.

## Automatic Differentiation and Deep Learning Libraries

Automatic Differentiation isn’t something that you absolutely need to know when you are doing Deep Learning. Most frameworks like Torch, Theano, or Tensorflow do it for you automatically. In most cases, you don’t even have to know how the differentiation is being done. That said, if you are determined to understand how Deep Learning frameworks work, you might want to understand how automatic differentiation works here. Other good resources to understand how Deep Learning libraries function can be found in this blog and video.

## Convolutional Neural Networks

The most useful things you might need after you have done some courses that enable you to use basic convents is to understand how convolutions work on images. “What is output shape after you apply a certain type of convolutions on an input?” “How does stride affect convolutions?" “What is Batch Normalization?” The two best resources I have seen for these type of applied questions are the tutorial here and Ian Goodfellow’s talk here. A more thorough review on Convnets is here if you want to get an idea. This review on object detection is a very good resource on the topic.

## Deep Learning in NLP

The Stanford 224 course I pointed out earlier in the article is a very good starting point and you should be good enough for almost everything. There is also a course on youtube by Graham Neubig (which uses dynet) here. There is also an NLP book by Yoav Goldberg that you might like. Newer advances of NLP after this book was written are reviewed here. There is also a very common question about whether or not to use ConvNets or RNNs (LSTMs/GRUs) on text. A good overview is here.

## Reinforcement Learning

Sutton and Barto is a great way to get started with these methods. The book is free and is available here. A very good review of recent Deep Reinforcement Learning methods is available here. There is also this very interesting tutorial on Reinforcement Learning here.

A good review of Monte Carlo Tree Search (which is a part of AlphaGo algorithm by Deepmind apart from Deep Reinforcement Learning techniques) is here. I, however, used this quick tutorial to learn about them.

## Some Other Good Reviews/Tutorials

A good tutorial about GANs (Generative Adversarial Networks) and generative models in general is what Goodfellow gave in ICLR 2016. It can be found here. Neural Networks have been used to transfer art (for example in Prisma app), a detailed survey of methods to do that can be found here. Another good survey on Multi-Task Learning (combining multiple tasks by same neural network) by Reuder is here**.**

## Criticisms

Although Deep Learning works amazingly well on multiple problems, we know there will always be some places where they have not reached yet. Some good criticisms to read are Failures of gradient-based learning by Shalev-Shwartz et al. , this talk by Hinton which lists some difficulties for ConvNets and how ConvNets cannot decipher negatives of images they train on. Another criticism that went viral/controversial a few days back is this. There is also this extensive report on the malicious use of Deep Learning.

## Adversarial Examples

This is a huge field of making artificial/real data points that can fool ConvNets. I could have put it in in criticism sections but didn’t because:

1) they are not a technical challenge for all applications

2) I am not very well read on them. One very cool case to get started and interested is here, where they generate “adversarial objects” to fool neural networks.

You can also read about Machine Learning algorithms you should know to become a Data Scientist here.

We hope you liked this article. You can read the original article here.

Opinions expressed by DZone contributors are their own.

## {{ parent.title || parent.header.title}}

{{ parent.tldr }}

## {{ parent.linkDescription }}

{{ parent.urlSource.name }}