CNN architectures sequentially consist of convolution layers and pooling layers. I just wonder if it is possible to change the sequence of convolution layers and pooling layers. If not, could you explain the reasons why a convolution layer precedes to a pooling layer?
In crude terms, a single convolution layer tries to capture to what degree certain feature is present in given region of figure. Max pooling layer is a downsampling strategy: instead of capturing presence of certain feature to a very fine-grained degree, the layer downsamples to certain classes like almost present, almost not present. (In crude terms because what exactly each layer learns is highly specific to dataset and network architecture used).
If you think of convolution as signal extraction and max pooling as a downsampling/smoothing strategy, it makes sense to use smoothing after signal extraction and not before.
Besides to what our friend has referred to, I want to add something which is somehow relevant. It is customary to convolve the inputs in the convolution layer, then they would be passed to the non-linearity and after that max-pooling is usually employed. I have experienced an alternative solution which can reduce the number of calculations for the activation function. Try to use filters, pass the outputs to the max-pooling layer, finally add the non-linearity, activation function, after exploiting max-pooling layer. It reduces the number of calculations without any changes to the outputs of the previous sequence of layers.