# Why neural and convolutional neural network detect edges first?

There are many filters doing different tasks for us like edge filters, bar filters. Major filter banks are

The Leung-Malik (LM) Filter Bank

The Schmid (S) Filter Bank

The Maximum Response (MR) Filter Banks

We can use these filters for feature extraction, after that we can apply max pooling and other things. The basic thing is that these filters are hand crafted, so they cannot learn weights because we are using fixed filter banks.
Contrary to above said techniques for feature extraction, we also have deep learning techniques like neural networks and convolutional networks which learns weights or features over the time. In deep learning we dont tell which features are important rather our network learns itself over the time.
Question:
In deep learning when we dont tell anything then why is that so that layers closer to input learn the features to detect edges or bars? Why is that so that later layers learn to detect finer details?
We did not tell our network to learn edges first, we did not tell our network to learn finer details later. How our network gets to know that it has to learn edge filters in upper layers and other filters in lower layers? Am i missing some basic thing to understand neural networks? Plz correct me.

• This is an open problem. The mathematical theory of why NNs act the way they act is only poorly understood. Go for it. If you can solve it, you might become the new god of Deep Learning – Richard Teubner Sep 8 '17 at 18:18

Convolution operation have close relationship to the frequency domain. See Convolution Theorem for details.

What makes edge an edge? Sudden changes / high frequency changes on the value. Intuitively this is why convolution can detect edges.

For example, Think about the following 1D toy data.

000000000000111111111111

For the homogeneous part the frequency is 0.

One thing that makes neural networks so interesting is that every subset of layers can be thought of as a neural network itself. So, after the first layer transforms its input, the second-through-last layers can be thought of as a network of their own.

So, in an optimized network, the goal of the first layer is to transform the input so that the later layers can classify it as well as possible. This means turning the input into something that's easier to work with. Hence, edges. Edges are complex pixel patterns that can be linearly combined in later layers to form even more complex features, that are even easier for the rest of the network (which itself is a sequence of networks) to classify with.