Imagine receiving a sealed crate labelled “neural model”. Inside are twelve million floating-point numbers. The sender tells you their values, precision and total memory footprint. Nothing else arrives. No tensor shapes. No layer order. No activation functions. No routing rule. No statement of which numbers are multiplied, added, normalised, reused or ignored.
Can you run the model?
You cannot even decide what kind of input it accepts. The numbers might describe a language model, an image classifier, a recurrent controller, an ensemble, a lookup table or meaningless noise. A parameter count tells you how much adjustable storage exists. It does not tell you what transformation is executed.
Now imagine a second crate. It contains only a few hundred lines of architecture code and no learned weights. You still cannot obtain useful predictions, but you can trace the computation. You know where an input enters, how its representation changes, which branches can activate and where an output is produced. One crate contains learned content without an executable grammar. The other contains an executable grammar without learned content. A working model needs both.
The load-bearing claim of this paper is that model behaviour is caused by the composition graph through which parameterised transformations act. Parameters matter inside that graph. They do not replace it. This distinction explains why depth matters, why residual connections alter trainability, why sparse models have several incompatible notions of “size”, and why parameter count is a poor mechanistic explanation even when it remains a useful empirical predictor within a fixed model family.
Part IThe bag of weights that cannot answer
Two teams receive the same list of 64 numbers. Team A arranges them as eight independent dot products. Team B arranges them as four two-stage maps with a rectifier between stages. Team C places some values in a gate that decides which other values participate. All teams possess the same parameter values and count. Do they possess the same model? No. They have different executable relations among those values, so an identical input can follow different causal paths and produce different outputs.
A function is a controlled change
A function is not merely an equation written on paper. It is a rule that associates each permitted input with an output. The notation y = f(x) compresses three commitments: what inputs are allowed, what output space is produced, and what rule connects them. A brightness adjustment maps pixels to pixels. A tokenizer maps text to symbols. A matrix maps one coordinate vector to another. An activation maps each scalar or vector to a transformed state.
Parameters make such a rule adjustable. For a linear map, the matrix entries are parameters. For a small neuron, weights and a bias determine the affine part, while the activation fixes what happens next. Writing fθ says that the function depends on a parameter set θ. It does not say that the function is the parameter set.
x is the incoming representation. Each h is the state handed to the next transformation. The symbol ∘ means “apply the function on the right first”. The equation is valid for a simple chain. Branching, shared state and routing require a graph rather than one line.The intermediate states are crucial. The second map does not act on the original input. It acts on the world made by the first map. If the first map rotates a coordinate system, the second map stretches along the rotated axes. If the first map zeroes a negative activation, later layers cannot recover its precise negative value unless another path preserved it. If attention mixes information from several tokens, the feed-forward sublayer receives a context-dependent representation rather than an isolated token.
Composition creates dependence between stages. A later transformation inherits both the information preserved by earlier maps and the information they destroyed. This is why a layer’s role cannot be inferred from its weights alone. Its input distribution, upstream basis, downstream use and parallel paths all help determine what that layer does in the complete computation.
A legal composition requires more than an arrow between two boxes. The output of one map must have the type, shape and interpretation expected by the next. A map from a sequence of 768-dimensional token states cannot be placed unchanged where the next operation expects one 4,096-dimensional vector. A projection can bridge the mismatch, but that projection is another transformation with its own losses and choices.
This is why tensor shape is not clerical metadata. Width determines which directions can be represented. Sequence axes determine which positions can interact. A reduction over tokens changes a sequence into a summary and discards location-specific detail unless another path preserves it. A reshape may preserve every scalar while changing which coordinates are treated as neighbours. The composition graph therefore carries typed causal commitments. It specifies not only that one stage follows another, but what kind of state crosses the boundary and which relations remain available downstream.
Why “pile of parameters” feels plausible
Parameter count correlates with memory, training cost and often performance. Scaling studies have found smooth loss trends when model size, data and compute change inside controlled model families.9 That empirical success encourages a stronger interpretation: more parameters cause better behaviour because more stored numbers mean more intelligence.
The hidden assumption is additivity. It treats each parameter as if it contributed an independent sliver of capability and the whole model as their sum. Modern networks do not work that way. Parameters interact multiplicatively through matrix products, conditionally through gates, selectively through attention, recursively through repeated blocks and contextually through the states created upstream. The value of one weight can matter only because earlier maps place a feature in its direction and later maps read the result.
A useful analogy is a musical score. Counting notes predicts something about duration and complexity. It cannot identify the melody unless note order, timing, instrumentation and recurrence are known. Yet the model case is stronger than the analogy. In a composition of functions, an early transformation changes the object on which every later transformation acts.
Part IIGeometry made by order
Take a square sheet. Operation A stretches horizontal distances by two. Operation B rotates the sheet by forty-five degrees. Predict the result of A followed by B. Now reverse them. After rotation, “horizontal” refers to a different direction, so the second stretch acts along a different axis. The two results disagree even though both use the same two operations exactly once. The formal statement is A ∘ B ≠ B ∘ A. Most learned transformations do not commute.
The smallest numerical example
Let the input be x = (2, -1). The first layer computes W₁x + b₁ with W₁ = [[1, 1], [-1, 2]] and b₁ = (0, 1). This gives (1, -3). A ReLU then replaces negative coordinates with zero, producing h = (1, 0). The second layer computes the dot product with W₂ = (3, -2), giving y = 3.
Now remove the ReLU while leaving every learned number unchanged. The second layer receives (1, -3) and returns 9. The parameter values did not change. One fixed transformation in the composition did, and the global function changed sharply.
Depth is repeated reuse of changed coordinates
A single hidden layer with enough units can approximate any continuous function on a compact domain under standard conditions.1 That theorem establishes possibility, not economy. It does not say a shallow network will represent a structured function with a practical number of units, learn it from available data or expose a useful internal decomposition.
Depth changes efficiency because a deep network can reuse intermediate constructions. A first layer can form local boundaries. A second layer can recombine the resulting regions. A third acts on that recombination. For piecewise-linear activations, each stage can fold or partition the input space so that later stages operate on many transformed regions at once. Research on linear regions and depth separation formalises versions of this idea.23
Depth is not merely “more parameters arranged vertically”. It is the repeated application of maps to representations already altered by previous maps. The same local rule can create rapidly increasing structural complexity when composed with itself.
Residual composition changes the unit of thought
A plain layer asks a representation to become a new representation: hl+1 = fl(hl). A residual layer asks for an update: hl+1 = hl + gl(hl). The identity path preserves the current state while the learned branch proposes a change. Deep residual networks made this organisation practical at large depth and became foundational across vision and later transformer designs.4
The distinction is compositional. In the plain case, every layer must carry forward whatever later layers may need. In the residual case, the representation persists unless an update changes it. This supplies a direct gradient path during training and gives the forward computation a trajectory-like interpretation. Neural ordinary differential equations take that intuition further by learning a continuous state derivative rather than a fixed stack of discrete layers.7
Insert an invertible map Q between two layers, then insert Q⁻¹ immediately after it. The model now contains extra operations and may contain many extra parameters, yet the pair cancels: Q⁻¹(Q(h)) = h. More generally, internal coordinates can be changed while adjacent weights compensate. Function-preserving network transformations can widen or deepen a network without changing its initial input-output function.6 Parameter count therefore does not uniquely identify the function.
Start with the scalar network F(x) = 3 ReLU(2x + 1). It has one hidden unit. Now duplicate that unit so both copies compute ReLU(2x + 1), and split the outgoing weight into 1.5 and 1.5. The widened network computes F′(x) = 1.5 ReLU(2x + 1) + 1.5 ReLU(2x + 1). For every input, F′(x) = F(x).
The second network stores more learned scalars and executes more local operations, but its input-output function is initially identical. Training may later make the duplicate units diverge, which gives the wider model additional degrees of freedom. At the moment of widening, however, no new behaviour follows from the larger count. The example isolates the claim precisely: parameter count describes one representation of a function, not the function’s identity.
The reverse also holds. Keep a collection of parameter values fixed but change tensor shapes, operation order, activation placement or connectivity. The realised function changes. Together these facts break a tempting one-to-one picture:
Many parameterisations can realise one function. Permuting hidden units with matching downstream changes, inserting identity layers or changing internal basis can preserve behaviour. One parameter inventory can participate in many functions. Rewire, reorder or route the same values differently and the computed map changes. The useful object of explanation is therefore an equivalence class of parameterised computation graphs, not a raw vector of numbers.
Part IIIThe path through a modern block
A transformer token is repeatedly rewritten
Consider one token entering a transformer block. Its vector is first normalised in many transformer designs. From that representation, learned projections create queries, keys and values. The query interacts with keys from other positions. A softmax converts those scores into routing weights. Weighted values are mixed, projected and added back through a residual path. Another normalisation precedes a feed-forward transformation, whose output is again added to the stream. The original transformer established attention-based sequence modelling; its descendants vary details while retaining this compositional pattern.5
No single parameter says “resolve the pronoun using the earlier noun”. The behaviour can arise when upstream features create a useful query, another position creates a matching key, its value contains relevant information, attention routes that value, the residual stream retains it, and later maps convert it into an output preference. The explanation is relational and staged.
Take the sentence “The trophy did not fit in the suitcase because it was too large.” At the pronoun, a useful block might route information from “trophy” and “suitcase”, preserve both candidate features, then let later transformations resolve which size relation is coherent. The exact mechanism in any trained model requires causal analysis. The compositional point is prior to that investigation: attention changes the pronoun representation using other positions, and later maps act on this changed state. Treating the model as a parameter pile erases the route by which context becomes available.
A block’s role depends on its neighbours
Suppose two transformer blocks have identical architecture and even identical weights. Place one near the beginning of a network and the other near the end. They need not play the same global role. The early block receives representations close to token and position encodings. The late block receives states that have already been mixed, filtered and rewritten many times. Its output is also closer to the final readout. Equal local maps, inserted at different points in a composition, therefore define different functions of the original input.
The same caution applies when researchers name a layer “the syntax layer”, “the memory layer” or “the planning layer”. A readable feature at one location may be created upstream, transformed locally or merely preserved for a downstream consumer. Transplanting the block into another position changes its input basis and the maps that interpret its output. A mechanistic claim needs an intervention that respects those relations, such as patching the relevant state, bypassing the block or compensating for the changed basis.
A component’s local rule and its compositional role are different descriptions. The local rule tells us how the component transforms the state it receives. The role tells us why that change matters inside this graph, for this input distribution and this downstream use. Parameter inspection can support the first description. The second requires tracing and intervention across boundaries.
Composition can branch, route and reuse
A chain is the simplest composition. Modern models also contain parallel branches, recurrent state, shared weights and input-dependent routing. In a sparse mixture-of-experts layer, a gate selects a small subset of experts for each token. Total parameter count may be enormous, while the active parameters and computation for one token are much smaller.8 The question “How large is the model?” now has several answers: total stored parameters, active parameters per input, executed floating-point operations, memory traffic and effective depth.
Build a model with one hundred expert functions but route each input to only one. Add another hundred experts whose gates never select them for the population under study. Total parameter count doubles. Does the experienced computation change? Not for those inputs. Now alter the gate so that a previously sleeping expert receives rare medical queries. The same stored parameter inventory has acquired a new functional itinerary for one region of input space. Capacity possession and transformation participation are different properties.
This suggests a practical construct: the functional itinerary of an input. It is the ordered, possibly branching record of transformations that actually participated, together with the intermediate states handed across their boundaries. For a static dense network, many inputs share the same topological route but differ in activations. For routed systems, both the route and activations can differ. For recurrent or iterative systems, the itinerary also includes how many times a map was applied and what state persisted between applications.
x is the input. r records runtime conditions such as routing, cache or iteration count. Each aᵢ names an active transformation and each arrow records its state change. This is a operational synthesis, not a claim that all model mechanisms reduce to a simple list. Parallel and asynchronous systems need a directed acyclic graph or event trace.The itinerary gives model comparison a sharper unit than parameter count. Two models can have similar counts but very different active paths. One model can produce different behaviours by sending different inputs through different experts. A weight can be statistically important in aggregate yet absent from a particular decision. Conversely, a small routing gate can control which millions of downstream parameters participate.
Composition need not appear as a visibly finite stack. A deep equilibrium model defines its representation as a fixed point, such as z* = fθ(z*, x), and uses a solver to find a state that no longer changes materially under the shared map.12 The learned parameters can stay fixed while the number of solver steps changes with tolerance and input difficulty. The functional itinerary must therefore record repeated application and stopping conditions. An implicit model does not escape composition. It makes the composition shared, iterative and partly determined at runtime.
Composition does not guarantee semantic modules
Nested transformations explain how a global function is built from local changes. They do not guarantee that each stage corresponds to a concept a human would name. One layer can participate in many behaviours. One behaviour can depend on features distributed across many layers. Superposition, redundant paths and basis changes can make the same computation look different internally while preserving the output.
Decomposition is also non-unique. The composite map F may be written as g ∘ f, but an invertible change of coordinates gives an alternative factorisation (g ∘ Q⁻¹) ∘ (Q ∘ f). Both compute the same global function while exposing different intermediate coordinates. A convenient decomposition can aid engineering without revealing a uniquely correct ontology of the task.
The composition graph tells us where to intervene and which states mediate later computation. It does not, by itself, tell us what those states mean or whether a proposed feature is causally used. Meaning claims need behavioural tests, controlled state changes and rival explanations. The safe progression is from route, to state, to intervention, and only then to a semantic interpretation.
Where composition fails
Suppose an upstream map produces values from −20 to 20, but the next map applies a sigmoid. Most large positive values become nearly 1 and most large negative values become nearly 0. Many distinct inputs collapse into almost the same representation. Later layers may contain millions of parameters, but they cannot reconstruct distinctions that the bottleneck erased. More downstream capacity does not repair an upstream loss of information unless another path bypasses it.
The composition graph determines how values can flow, but trained behaviour also depends on learned parameter values, data, objective, optimisation history, precision, tokenisation and runtime state. “Composition matters” must not become “architecture alone explains performance”. The claim is narrower: a parameter inventory is causally incomplete because parameters act only through a specified composition.
Part IVThe function-composition lab
The fastest way to acquire the intuition is to manipulate a sheet yourself. The lab below begins with a regular grid and one tracked point. Choose three maps, then inspect the sheet after each stage. Reverse the order while keeping every selected map unchanged. Try inserting an identity map. Try two bends followed by a fold. The visual difference is the global function becoming visible.
Function-composition lab
Build F = f₃ ∘ f₂ ∘ f₁, trace a point and compare the forward order with its reversal. All data are synthetic and computed in your browser.
(0.65, −0.35) → …How to use the lab as an experiment
Begin with shear, bend and fold. Record the tracked point and the visible topology of the grid. Reverse the order. A changed output is a positive result for order sensitivity. It permits the narrow conclusion that the selected maps do not commute on that input and region. It does not prove that depth is universally better or that a trained model uses an analogous mechanism.
Next replace the middle map with identity. If the output is unchanged, the identity correctly demonstrates that adding a stage need not add a new function. This is the smallest model of a function-preserving depth increase. If numerical differences appear, inspect implementation precision rather than declaring a mechanism.
Then choose squash early and stretch late. Observe how the grid compresses before the stretch. Reverse the pair. Stretching before saturation and after saturation produce different recoverable ranges. This shows that a later high-gain map cannot necessarily restore distinctions collapsed by an earlier many-to-one or near-saturating map.
The lab exposes four assumptions often hidden by prose: maps act on intermediate states rather than the untouched input; order may be non-commutative; identity insertion can change the graph without changing the function, and information loss upstream constrains downstream use. A positive result supports only the tested relation. A negative result may mean the maps commute on that point, the intervention is too weak, or the visual measure misses a difference elsewhere in the domain.
Implementation notes, invariants and compact JavaScript
The browser implementation samples a two-dimensional grid. Each selected map accepts and returns a pair of finite numbers. The renderer never mutates the input point. The same map definitions are used for the forward and reverse order tests. These invariants prevent the comparison from being contaminated by different functions or hidden state.
const compose = (...maps) => point =>
maps.reduce((state, map) => map(state), point);
const forward = compose(f1, f2, f3)(input);
const reverse = compose(f3, f2, f1)(input);
const orderSensitive = distance(forward, reverse) > tolerance;
The full runnable implementation is embedded in this page. It requires no library or network request. The visual grid is a sampled diagnostic, so it cannot establish global equivalence between two functions. Exact equivalence needs a proof or exhaustive reasoning over a finite domain.
From pretty picture to composition manifest
A real model needs a machine-readable description of more than layer names. At minimum, record each transformation’s input and output type, parameter reference, activation, normalisation, residual parent, routing condition, state read and state write. The “Copy manifest” button exports the current toy route in that spirit.
| Field | Question it answers | Failure hidden when omitted |
|---|---|---|
| Map identity and version | Which transformation actually ran? | A changed implementation is mistaken for the same model. |
| Input and output state | What representation crossed the boundary? | An upstream collapse or scale shift disappears from the trace. |
| Order and parent edges | Whose output did this map receive? | A parameter list is mistaken for an executable explanation. |
| Route or gate | Why did this branch participate? | Total capacity is confused with active computation. |
| Residual and shared state | What bypassed or persisted? | Preservation is attributed to the transformed branch. |
| Intervention hook | Can the proposed role be tested? | A readable pattern becomes an untested mechanism story. |
Part VThe decision this changes
The strongest counterargument: size predicts surprisingly well
Parameter count should not be discarded. Within a stable transformer family, controlled scaling experiments have found that loss can be predicted from model size, data and compute over wide ranges.9 Compute-optimal work then showed that parameter growth must be matched by sufficient training data, demonstrating that even a strong size relationship is conditional on the training regime.10 For planning memory, compute and approximate performance inside a specified family, count is valuable.
The counterargument becomes too strong only when a family-level predictor is treated as a mechanism or transported across unlike architectures. Recent multi-shape scaling work has shown that fitted prescriptions can be sensitive to width, depth, learning rate, schedule and checkpoint selection.11 Sparse routing further separates total parameters from active parameters. A number that predicts loss in one controlled regime cannot, by itself, explain why a particular input produced a particular answer.
Parameter count is a coarse coordinate, not a causal decomposition. Height predicts some properties of buildings, but it does not tell an engineer which beam carries a load. In the same way, model size can organise empirical curves while leaving the transformation path unexplained.
Established mathematics and experiments: function order can be non-commutative; shallow universal approximation does not imply efficient representation; depth-separation results exist for stated function classes; residual and attention architectures implement explicit compositions. Method proposed here: the functional itinerary and composition manifest offered here. Open question: how well itinerary-level descriptors predict behavioural differences across trained frontier models after controlling for data and optimisation.
A composition audit before you compare models
When someone says “Model A is better because it has more parameters”, ask for the missing bridge. Are both models dense or sparse? Do they have the same depth, width, activation and normalisation pattern? Do they use the same amount of training data? How many parameters are active per token? Is inference repeated, adaptive or routed? Does one architecture retain state that the other recomputes? Which composed transformation is hypothesised to cause the observed gain?
For matched inputs, a distance measure over active transformation itineraries may predict behavioural divergence better than parameter-count difference across architecturally heterogeneous models. Evidence would strengthen the proposal if itinerary differences anticipate output or failure differences after controlling for training loss and task. It would weaken it if count or simple activation summaries predict equally well, or if itinerary definitions prove unstable under harmless reparameterisations. A rival explanation is that both itinerary and behaviour reflect upstream data differences. The smallest useful study would compare small dense, residual and routed models trained on the same synthetic task.
What to do differently tomorrow
When learning a model, draw the state path before counting the parameters. For every stage, ask what enters, what changes, what is preserved, what is discarded and what receives the result. Then run one intervention: swap two maps, bypass a block, clamp an intermediate state, change a route or repeat an update. An explanatory story that predicts none of these changes is still a description.
When designing a model, choose composition according to the structure of the task. Use depth when intermediate reusable structure is plausible. Use residual paths when state preservation and incremental updates matter. Use routing when different inputs genuinely require different transformations and the gate can be evaluated. Avoid bottlenecks that erase distinctions needed later. Treat normalisation and activation placement as architectural decisions, not punctuation.
When procuring or governing a model, request more than a parameter count. Ask for total and active parameters, depth, recurrence or adaptive compute, routing behaviour, state persistence, context mechanism, precision and the configured inference graph. For consequential outputs, retain an execution trace at the granularity needed to test which transformations and routes participated.
Do not infer mechanism from model size. Use parameter count for resource planning and controlled scaling comparisons. Use the composition graph, active itinerary and causal interventions to explain behaviour. The model is not the pile of adjustable numbers. It is the transformation programme those numbers help execute.
That decision changes how the next papers should be read. Sets and logic will specify what objects and claims a model can relate. Calculus will show how local sensitivity moves backwards through this very composition. Transformers will later appear not as magical monoliths, but as carefully arranged maps whose global behaviour must be traced through intermediate states.
The sealed crate can now be diagnosed precisely. Its numbers are necessary but causally mute until an executable structure gives them roles. Open the crate, recover the maps, recover their order and recover the routes. Only then do you have a model whose behaviour can be explained.
Glossary
- Function
- A rule mapping each permitted input to an output.
- Composition
- Applying one function to the output of another, with order explicitly specified.
- Parameterisation
- A choice of adjustable numbers used to define a member of a function family.
- Intermediate state
- The representation produced at one stage and supplied to another.
- Residual path
- A path that preserves a state while a parallel branch computes an update.
- Functional itinerary
- The active transformations and state transitions traversed by an input under stated runtime conditions.
- Function-preserving transform
- An architectural or parameter change that leaves the represented input-output function unchanged.
- Non-commutative
- A relation in which reversing operation order changes the result.
References
Open the source register and extended notes
- Cybenko, G. (1989). Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals and Systems, 2, 303-314.
- Montúfar, G., Pascanu, R., Cho, K., & Bengio, Y. (2014). On the number of linear regions of deep neural networks. NeurIPS 27.
- Telgarsky, M. (2016). Benefits of depth in neural networks. Proceedings of Machine Learning Research, 49, 1517-1539.
- He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. CVPR.
- Vaswani, A., et al. (2017). Attention is all you need. NeurIPS 30.
- Chen, T., Goodfellow, I., & Shlens, J. (2015). Net2Net: Accelerating learning via knowledge transfer.
- Chen, R. T. Q., Rubanova, Y., Bettencourt, J., & Duvenaud, D. (2018). Neural ordinary differential equations. NeurIPS 31.
- Shazeer, N., et al. (2017). Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. ICLR.
- Kaplan, J., et al. (2020). Scaling laws for neural language models.
- Hoffmann, J., et al. (2022). Training compute-optimal large language models. NeurIPS 35.
- McLeish, S., et al. (2025). Gemstones: A model suite for multi-faceted scaling laws.
- Bai, S., Kolter, J. Z., & Koltun, V. (2019). Deep equilibrium models. NeurIPS 32.