translation equivariance
Translation equivariance means: if you slide the input, the output slides the same way. Move a cat two pixels to the right in the image, and every feature map that responded to the cat shifts two pixels to the right too — the responses are the same, just relocated. This is the precise sense in which convolution 'doesn't care where things are': it computes the same local function everywhere, so a pattern's detection travels with the pattern. It is distinct from translation invariance, where the output does not change at all under a shift.
Precisely, an operation f is translation-equivariant if f(shift(x)) = shift(f(x)) for any shift. Convolution has this property because it applies one shared kernel identically at every position (this is exactly what weight sharing buys). The equivariance is what makes CNNs data-efficient: the network does not need to see a cat in every possible location to recognize it everywhere, because a detector learned at one position automatically works at all positions. Pooling and global average pooling then convert this equivariance into approximate invariance at the head, so the final class prediction is stable to where the object sits.
In practice the equivariance is only approximate, and the gaps are instructive. Zero padding breaks it near borders (the boundary is a special location), and any downsampling by stride or pooling breaks it for sub-stride shifts because of aliasing — Azulay and Weiss (2019) showed CNN predictions can flip under a one-pixel shift, and Zhang (2019) restored much of the lost equivariance by inserting anti-aliasing blur before downsampling. Convolution is also only equivariant to translation, not to rotation or scale; achieving those requires special designs (group-equivariant CNNs, steerable filters), and vision transformers have no built-in translation equivariance at all, learning approximate shift-tolerance from data and augmentation instead.
Why it matters: equivariance vs invariance is a frequent confusion. Convolution is equivariant (feature moves with input); the classification head should be invariant (label unchanged under a shift). A good architecture is equivariant in its body and made invariant only at the end — making it invariant too early (e.g. pooling away all position) destroys information needed to locate things.