What are the differences between a convolutional neural network and a recurrent neural network?
When should I apply which of the two models?
Convolutional neural nets apply a convolution to the data before using it in fully connected layers.
They are best used in cases where you want positional invariance, that is to say, you want features to be captured regardless of where they are in the input sample.
Think of a picture with all sorts of animals in it. If you apply a convolutional neural net to classify whether there is a cat in the picture, it will identify the cat no matter what position in the picture the cat is (at the top, the bottom, left or right). This is very useful for image classification.
Recurrent neural nets are neural networks that keep state between input samples. They remember previous input samples and use those to help classify the current input sample.
They are mostly useful when the order of your data is important. So for instance in speech (previous words do help identify the current word), video (frames are ordered) and also text processing.
Generally speaking, problems related to time-series data (data with a timestamp on them) are good candidates to be solved well with recurrent neural nets.