<h2>Why is filter shape the same?</h2>

<p>First, the kernel shape is the same merely to speed up computation. This allows to apply the convolution in a batch, for example using col2im transformation and matrix multiplication. This also makes it convenient to store all the weights in one multidimensional array. Though mathematically one can imagine using several filters of different shape. </p>

<p>Some architectures, such as Inception network, use this idea and apply different convolutional layers (with different kernels) in parallel and in the end stack up the feature maps. This turned out to be very useful.</p>

<h2>Why isn't one filter enough?</h2>

<p>Because each filter is going to learn <em>exactly one</em> pattern that will excite it, e.g., Gabor-like vertical line. A single filter <em>can't be equally excited</em> by a horizontal and a vertical line. So to recognize an object, one such filter is not enough.</p>

<p>For example, in order to recognize a cat, a neural network might need to recognize the eyes, the tail, ... of all which are composed of different lines and edges. The network can be confident about the object on the image if it can recognize a whole variety of different shapes and patterns in the image. This will be true even for a simple data set like MNIST.</p>

<h2>Why do filters learn different patterns?</h2>

<p>A simple analogy: imagine a linear regression network with one hidden layer. Each neuron in the hidden layer is connected to each input feature, so they are all symmetrical. But after some training, different neurons are going to learn different high-level features, which are useful to make a correct prediction.</p>

<p>There's a catch: if the network is initialized with zeros, it's going to suffer from <a href="https://stackoverflow.com/q/20027598/712995">symmetry issues</a> and in general won't converge to the target distribution. So it's essential to create asymmetry in the neurons from the very beginning and let different neurons get excited differently from the same input data. This in turn leads to different gradients getting applied to the weights, usually increasing the asymmetry even more. That's why different neurons are trained differently.</p>

<p>It's important to mention another issue that is still possible with random init called <em>co-adaptation</em>: when different neurons learn to adapt and depend on each other. This problem has been solved by a <a href="https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf" rel="nofollow noreferrer">dropout technique</a> and later by <a href="https://arxiv.org/abs/1502.03167" rel="nofollow noreferrer">batch normalization</a>, essentially by adding noise to the training process, in various ways. Combining it together, neurons are much more likely to learn different latent representations of the data.</p>

<h2>Further links</h2>

<p>Highly recommend to read <a href="http://cs231n.github.io/convolutional-networks/" rel="nofollow noreferrer">CS231n tutorial by Stanford</a> to gain better intuition about convolutional neural networks.</p>
What is the advantage of using multiples of the same filter in convolutional networks in deep learning
<p>What is the advantage of using multiples of the same filter in convolutional networks in deep learning?</p>

<p>For example:
We use 6 filter of size [5,5] at the first layer to scan the image data, which is a matrix of size [28,28].
The question is why do we not use only a single filter of size [5,5] but use 6 or more of them. In the end they will scan the exact same pixels. I can see that the random weight might be different but DL model will adjust to it anyway.</p>

<p>So, specifically what is the main advantage and purpose of using multiple filters of the same shape then in convnets?</p>