In today's world data collection is a big part of almost all companies for increasing their work efficiency, profits and maintaining quality of their product etc. This data(known as Big Data) is drawn from various sources like social media, e-commerce in an enormous amount from every region of world.
Deep Learning works with this huge and unstructured data which is nearly impossible at human level. But if our machine works on each and every feature of this data, it would need lots of time and money. So, what are the options?
Pooling helps in this by reducing the features dimensionality extracted and keeping the actual meaning intact. Let's try to understand this with two examples:
You went to visit a botanical garden and saw various types of plants and flowers. Now, you want to make a portfolio of all flowers you snapped. What will you do? Will you mention all types of each flower, in which case, It will become a huge portfolio. The better way is to only pick one flower of each category and put a list together. It will still give you all the required data and deleting redundancies. Something like this:
2. If I show you an outlined image like this
Can you guess what kind of animal is this? You guessed it right, Its a Cat. We reduce the number of features in this image but gave you a rough sketch of real image which is:
This is exactly what Pooling does in Deep Learning, it reduces the size of the actual image by choosing selective pixels of a feature instead of traversing through each and every element of a feature.
The function of pooling is to progressively reduce the spatial size of the actual data and reduce the amount of parameters and computation in the network. Pooling divides the input's width and height by the pool size (the size of filter we are using to the feature map).
Here, we took a 4 * 4 matrix as an example input and used max pooling and average pooling with the pool size of 2 * 2 matrix.
Max Pooling - It is a way of carrying forward only the largest information in the selected area.
Average Pooling - Selecting only average of all information.
Pooling also helps in making features invariant of small changes meaning the pooled output will not change with respect to small changes (like re-cropping, rotation, shifting) in input.