A perceptron with a threshold activation outputs
The first hidden neuron fires when
Scale this up. Vary the thresholds. Multiply each pulse by a different height. Sum them all together.
Each pulse is a sub-network of three neurons. Stack enough pulses side by side, each with its own height, and their sum traces a staircase. Make the pulses narrower and you can follow any curve. In the limit of infinitely many infinitesimally narrow pulses, the staircase converges to the function itself.
This is the pulse-approximation argument. Every pulse is a one-hidden-layer network. Their sum is a single output neuron with no activation — just addition. So a one-hidden-layer MLP with a linear output can approximate any continuous function on a bounded interval to arbitrary precision.
The argument scales to higher dimensions. In two dimensions, the pulse becomes a cylinder — a circle detector that outputs
In
A one-hidden-layer MLP is a universal function approximator.
But again, width is the hidden cost. Approximating a function that varies sharply may require an enormous number of narrow pulses — each demanding its own hidden neurons. A shallow network that tiles a high-dimensional space with hyperspheres can grow exponentially in the input dimension.
MLPs are universal approximators. But the architecture that actually fits is the one with enough layers to compose the function hierarchically, not the one that tiles the input space with an exponential number of bumps. What matters is not that a network can represent a function. It is how many neurons it takes to do so.