inception module
The Inception module is the repeating building block of the GoogLeNet family, and it embodies a single design philosophy: instead of forcing the network to commit to one filter size at each layer, let it look at the input through several filter sizes in parallel and learn how to combine them. A naive Inception module passes the same input through four branches at once, a 1x1 convolution, a 3x3 convolution, a 5x5 convolution, and a 3x3 max pooling, and then concatenates their outputs along the channel dimension. The intuition is that objects appear at many scales, so a small filter captures fine detail while a larger filter captures broader context, and the network should be free to use whatever mixture each layer needs.
The naive version is too expensive, because running a 5x5 convolution over many input channels is costly and concatenation makes channel counts balloon. The key engineering move is the dimension-reduction Inception module: a 1x1 convolution is placed before each expensive 3x3 and 5x5 branch (and after the pooling branch) to first squeeze the number of channels down, do the spatial convolution on the smaller representation, and thereby cut computation dramatically. These 1x1 convolutions, borrowed directly from Network in Network, act as cheap bottlenecks and are what make the multi-scale idea affordable.
This split-transform-merge pattern, branch the signal, transform each branch differently, then merge, proved both efficient and accurate, and it foreshadows ideas that recur throughout deep learning, including grouped convolutions in ResNeXt and even the multi-head structure of transformer attention. Over successive versions the module was refined: Inception-v2 and v3 factorise the 5x5 into two 3x3 convolutions and further factorise an n-by-n convolution into a 1-by-n followed by an n-by-1, add batch normalization, and use label smoothing; Inception-v4 and Inception-ResNet combine the module with residual connections. The constant across all versions is the philosophy of cheap, parallel, multi-scale feature extraction.
The whimsical name comes from the film Inception and the meme 'we need to go deeper', plus a nod to the earlier Network in Network paper. The 1x1 bottlenecks are not decoration; without them the naive multi-branch concatenation would be computationally prohibitive, so they are the load-bearing trick.