What order should I learn about Neural Networks? I'm interested in learning about Neural Networks and implementing them. I'm particularly interested in GANs and LSTM networks.

I understand perceptrons and basic Neural Network configuration (sigmoid activation, weights, hidden layers etc). But what topics do I need to learn in order, to get to the point where I can implement GAN or LSTM.

I intend to make an implementation of each in C++ to prove to myself that I understand. I haven't got a particularly good math background, but I understand most math-things when they are explained.

For example, I understand backpropagation, but I don't really understand it. I understand how reinforced learning is used with backpropagation, but not fully how you can have things like training without datasets (like tD-backgammon). I don't quite understand CNNs, especially why you might make a particular architecture.

If for each "topic" there was a book or website or something for each it would be great.
I think, once you are covered with the common stuff, you can probably go on and study all kinds of neural network variants. 



The common stuff:

a) An undergraduate level Linear Algebra course -- covering matrix calculus. You might find this useful.

b) An undergraduate level study in statistical inference. Concepts from this topic will come up most of the time and you might have hard time getting around even though you understand the rest of the math. I would recommend this.

c) A starter book on neural networks. Ex- Neural networks by Raul Rojas.



After all these are covered you will certainly be ready for learning the variants of neural networks with ease. For LSTM I would recommend Alex Graves.