---
title: "Neuron Interpretability, Polysemanticity, and Superposition"
subtitle: "A mathematical reading of Goodfire’s ‘Neural Networks Are Already Clean’"
date: 2026-10-15
jupyter: python3
keep-ipynb: true
execute:
  cache: false
  freeze: false
  warning: false
  error: false
format:
  html:
    theme: cosmo
    toc: true
    toc-depth: 2
    number-sections: true
    html-math-method: katex
    self-contained-math: true
    embed-resources: true
    code-fold: false
    output-file: index.html
    include-in-header:
      text: |
        <style>
        main {max-width:960px;min-width:0}
        main a {overflow-wrap:anywhere}
        .katex-display,.cell-output-display {max-width:100%;overflow-x:auto}
        .katex-display {overflow-y:hidden}
        pre {overflow-x:auto}
        main img {max-width:100%;height:auto}
        table {font-size:.91rem}
        </style>
  typst:
    output-file: neuron-interpretability.pdf
    execute:
      echo: false
    papersize: a4
    fontsize: 10.5pt
    margin:
      x: 20mm
      y: 20mm
    number-sections: true
    toc: false
---

::: {.content-visible when-format="html"}
[PDF](neuron-interpretability.pdf) · [Quarto source](notes.qmd) ·
[Executed notebook](notes.ipynb) · [Source bundle](neuron-interpretability-source.zip)
:::

## What is the contribution?

Nick Cammarata’s [*Neural Networks Are Already Clean*](https://already-clean.goodfire.com/)
is a research essay presenting experiments, neuron studies, and a working
hypothesis. The version inspected on 15 October 2026 describes a technical
language-model companion paper as forthcoming.

Its strongest contribution is **an empirical reassessment of how much can be
understood directly from a network’s existing neurons**. Several apparently
incoherent activation patterns become intelligible after changing the analysis:
inspect both signs, condition on the activation’s computational regime, look
beyond the highest-activating examples, and test explanations on new inputs.
Some resulting explanations also predict the effects of intervening on neurons.

The advance has three components:

1. **Corrections to influential examples.** A neuron associated with cats and
   cars is reinterpreted as detecting a shared shape. Other examples change
   interpretation after examining the circuit that produces the activation.
2. **A more demanding measurement procedure.** The essay combines activation
   inspection with generated positive and near-miss examples, training
   trajectories, and interventions on native units. It documents specific
   failures of common visualization and labeling procedures.
3. **A developmental hypothesis.** “Recursive generalization” proposes that
   neurons acquire related uses successively during training. The accumulated
   response set can look heterogeneous when described using an unsuitable
   taxonomy.

The practical conclusion is that **native-neuron analysis deserves a strong
baseline in interpretability research**. The evidence for a general claim that
large networks have little superposition is substantially weaker. That claim
depends on the definition of a feature, the definition of superposition, and
how the inspected cases represent the rest of the network.

The novelty is chiefly in the reanalyses and empirical demonstrations. The
underlying ideas of sparse coding, conjoined features, and causal ablation have
substantial prior work.

The equations below formalize these distinctions. The operational definitions
and formalization of recursive generalization are introduced for this analysis.
Reported neural-network results are attributed to the essay; the small
coding example in Section 4 is an independent mathematical illustration.

## Define the object being interpreted

Fix a trained network $F_\theta$ and an input distribution $X\sim P$. Write
$r_\ell(X)\in\mathbb R^d$ for a layer representation, and $h_j(X)$ for a
specified scalar hidden-unit activation. For a language model, the input
includes the context and the token position at which the unit is measured.

Three objects need separate definitions:

- A **feature** is an input property $z_k(X)$, such as curvature, a grammatical
  relation, or the presence of a particular entity. A feature can be continuous.
- A **neuron** is a scalar variable in the implemented computation. Its
  relationship to features is an empirical question.
- A **circuit** is a selected set of variables and computational dependencies
  proposed to account for an output behavior. Describing its units individually
  supplies only part of a circuit explanation.

The hidden coordinates of a coordinatewise nonlinear MLP have an architectural
role that arbitrary coordinates of an embedding need not have. Rotating hidden
activations generally changes their relationship to the nonlinearities.
Consequently, a useful native-neuron interpretation can coexist with a different,
distributed description of the residual representation.

### Polysemanticity needs an ontology and a distribution

Informally, a polysemantic neuron responds to several unrelated properties.
The word “unrelated” carries the main difficulty.

Here is one explicit operational definition. Fix a partition of test inputs
into semantic categories $C_1,\ldots,C_K$, and an independently specified
semantic distance $d_{\mathcal C}(k,m)$. For a positive activation threshold
$\tau$, define

$$
A_j^+(\tau)=\{x:h_j(x)>\tau\},\qquad
A_j^-(\tau)=\{x:h_j(x)<-\tau\}.
$$

Analyze either event $A_j$ separately. Assuming $P(A_j)>0$ and $P(C_k)>0$,
define activation lift and the composition of the activation set:

$$
L_{jk}=\frac{P(A_j\mid X\in C_k)}{P(A_j)},\qquad
p_{jk}=P(X\in C_k\mid A_j).
$$

For declared constants $\lambda>1$, $\epsilon>0$, and $\delta>0$, call the
unit **polysemantic relative to this measurement specification** if there
exist categories $k\ne m$ such that

$$
\min(L_{jk},L_{jm})\ge\lambda,\qquad
\min(p_{jk},p_{jm})\ge\epsilon,\qquad
d_{\mathcal C}(k,m)>\delta.
$$

The lift condition rules out a unit that fires indiscriminately. The mass
condition requires both categories to account for a non-negligible share of
activations. The distance condition encodes the chosen meaning of “unrelated.”
The definition applies separately to each activation sign and, where relevant,
each gating regime.

For a single prespecified binary property $C$, a simple monosemanticity
criterion would instead be $P(A_j\mathbin{\triangle}C)\le\epsilon$, with
precision and recall reported separately when $C$ is rare. Continuous features
require an analogous predictive-error criterion.

**None of these is an ontology-free property of a scalar function.** Under an
object-label taxonomy, cats and cars are distant. Under a shape description,
both can contain a V-shaped contour. Cammarata’s reanalysis of InceptionV1
unit 4e:55 proposes the latter property and tests additional objects with that
shape ([source](https://already-clean.goodfire.com/#cars-and-animals)).

A shared-property model can be written

$$
h_j(X)=f_j(s(X))+u_j(X),\qquad
\mathbb E[u_j(X)^2]\ \text{small},
$$

where $s$ is a specified, low-complexity property and $f_j$ belongs to a
restricted function class. New objects sharing $s$ should activate the neuron;
objects preserving the category label while removing $s$ should respond less.
Allowing $s$ to be any post hoc union of activating examples makes the claim
vacuous. Its content comes from complexity restrictions and successful held-out
predictions, preferably including controlled changes to $s$.

## Superposition is a different claim

The standard linear-feature formulation is

$$
r(X)=D z(X)+e(X),\qquad
D=[d_1,\ldots,d_K]\in\mathbb R^{d\times K},
$$

where $z(X)$ contains meaningful latent feature intensities, $D$ contains their
encoding directions, and $e$ is approximation error. The feature system must
have substantive restrictions: arbitrary relabelings of the same property
cannot be counted as additional independently meaningful features.

In [*Toy Models of Superposition*](https://transformer-circuits.pub/2022/toy_model/index.html),
superposition concerns representing features whose encoding directions are
linearly dependent: $\operatorname{rank}(D)<K$, in particular when $K>d$.
The toy experiments specify the features through the data-generating process,
which makes this claim measurable.

For unit-norm columns, a matched-filter readout gives

$$
D^\top r=z+(D^\top D-I)z+D^\top e.
$$

The second term is interference. Sparse $z$, suitable encoding directions,
and nonlinear decoding can make interference tolerable. This connects the
problem to sparse coding and compressed sensing. Merely distributing one
feature across several coordinates establishes neither linear dependence nor
overcompleteness.

**Cammarata uses a narrower, causal description:** neurons acquire unrelated
uses because those uses rarely interfere. His
[terminology appendix](https://already-clean.goodfire.com/#superposition-note)
explicitly distinguishes this from counting more features than dimensions.
That changes the hypothesis being assessed. It adds a claim about *why the
representation developed* to a claim about its final structure.

The distinctions matter:

- A coherent description of a neuron does not determine the number of latent
  factors represented by the network.
- A representation with $K>d$ does not identify the training mechanism that
  produced it.
- A neuron can generalize across related inputs while also participating in
  an overcomplete code for other features.

Composition and superposition can coexist. The earlier
[Olah (2023) note](https://transformer-circuits.pub/2023/superposition-composition/index.html)
already discusses this coexistence and the constraints imposed by how often
features occur together. Thus some disagreement here concerns empirical
prevalence and explanatory emphasis; some concerns terminology.

### The econometric identification issue

From observations of $r(X)$ alone, the factorization $Dz(X)$ generally lacks
uniqueness. For example, for any invertible $A\in\mathbb R^{K\times K}$,

$$
Dz(X)=(DA)(A^{-1}z(X)).
$$

Restrictions on sparsity, support, dependence, dictionaries, and
measurement functions can improve identification. Assigning natural-language
labels to one fitted decomposition supplies additional hypotheses to test.
This equivalence concerns descriptive factorizations; the actual network’s
nonlinearities and weights still constrain interventions on its native units.

The developmental claim is still less identified. Several training histories
can produce similar final response functions. Discriminating explanations
requires training-time observations or interventions on the learning problem.
This is the familiar distinction between fitting a latent-variable measurement
model and identifying the mechanism that generated it.

## An exact example: three features in two coordinates

Take three independently meaningful binary features $z_k$ and encode them using
three unit vectors separated by $120^\circ$:

$$
D=\begin{pmatrix}
1&-1/2&-1/2\\
0&\sqrt{3}/2&-\sqrt{3}/2
\end{pmatrix},\qquad
r=Dz,\qquad
\widehat z=\operatorname{ReLU}(D^\top r).
$$

If at most one feature is present, $\widehat z=z$ exactly. Each feature has an
explicit direction and an exact detector on that restricted support, although
three directions occupy two coordinates. If two features are present, this
particular decoder returns $1/2$ for each. If all three are present, $r=0$:
that state is indistinguishable from the state with no features.

For independent $z_k\sim\operatorname{Bernoulli}(p)$, the decoder’s mean squared
error per feature is

$$
R(p)=\frac13\mathbb E\sum_{k=1}^3(\widehat z_k-z_k)^2
=\frac13\left[3p^2(1-p)\frac12+3p^3\right]
=\frac12p^2(1+p).
$$

For comparison, assigning the two coordinates to two features and always
predicting zero for the third gives risk $p/3$. This is a specified
dedicated-coordinate baseline; optimizing all possible encoders and decoders
would be a separate problem. The construction makes the sparsity advantage
precise without a training experiment.

```{python}
import itertools
import numpy as np

D = np.array([[1, -.5, -.5], [0, np.sqrt(3)/2, -np.sqrt(3)/2]])
states = np.array(list(itertools.product([0., 1.], repeat=3)))
decoded = np.maximum(states @ D.T @ D, 0)
loss = ((decoded - states)**2).mean(axis=1)
count = states.sum(axis=1)
p = np.linspace(0.001, 1, 300)
mass = p[:, None]**count * (1 - p[:, None])**(3 - count)
risk = mass @ loss

np.testing.assert_allclose(decoded[count <= 1], states[count <= 1], atol=1e-15)
np.testing.assert_allclose(risk, .5 * p**2 * (1 + p), atol=1e-15)
```

```{python}
#| label: fig-superposition
#| fig-cap: "An explicit overcomplete code. Left: feature directions and the encoded states with two active features. Right: exact reconstruction risk, summing over all eight binary states. This is an independently constructed example."
#| code-fold: true
#| code-summary: "Draw the encoding and exact risks"
#| fig-width: 9
#| fig-height: 3.6
#| fig-dpi: 170
import matplotlib.pyplot as plt

plt.rcParams.update({"font.size": 10, "axes.spines.top": False,
                     "axes.spines.right": False})
fig, axes = plt.subplots(1, 2, figsize=(9, 3.6), layout="constrained")
colors = ["#216d87", "#b34d35", "#725c93"]
for k, color in enumerate(colors):
    x, y = D[:, k]
    axes[0].arrow(0, 0, x, y, color=color, width=.012,
                  length_includes_head=True, head_width=.09)
    axes[0].text(1.13*x, 1.13*y, f"$d_{k+1}$", color=color,
                 ha="center", va="center")
pairs = states[count == 2] @ D.T
axes[0].scatter(*pairs.T, marker="x", color="#555555", label="Two active features")
axes[0].scatter(0, 0, color="black", s=18)
axes[0].set(xlim=(-1.35, 1.35), ylim=(-1.3, 1.3), aspect="equal",
            xlabel="$r_1$", ylabel="$r_2$", title="Three directions; two coordinates")
axes[0].legend(loc="lower center", fontsize=8, frameon=False)
axes[1].plot(p, risk, color=colors[0], label="Overcomplete code + ReLU readout")
axes[1].plot(p, p/3, color=colors[1], linestyle="--", label="Store two; omit the third")
axes[1].set(xlabel="Feature activation probability $p$",
            ylabel="MSE per feature", title="Interference grows with co-activation")
axes[1].legend(fontsize=8, frameon=False)
plt.show()
```

Readable feature directions and sparse-data recovery therefore coexist with
superposition in a fully specified example. The phenomenon’s prevalence in
trained language models remains an empirical question.

## “Recursive generalization” as a testable hypothesis

Let $\theta_t$ be a training checkpoint and
$S_{j,t}(\tau)=\{x:h_j(x;\theta_t)>\tau\}$ a response set. The essay proposes
that a neuron’s response set often develops by extending existing uses to
related cases. Iterated extensions can connect semantically distant endpoints.
An example is expansion from a spelling fragment to “DIY” and then to
“do it yourself.”

A possible formalization requires a fixed external similarity metric
$d_\kappa$ on inputs and a declared threshold convention across checkpoints.
Let $B_{j,t}=S_{j,t+1}\setminus S_{j,t}$ be the newly acquired response set.
A local-expansion hypothesis predicts, when $P(B_{j,t})>0$,

$$
P\left(d_\kappa(X,S_{j,t})>\eta
\;\middle|\;X\in B_{j,t}\right)\ \text{is small}.
$$

This permits previously active inputs to drop out. It also requires tracking
the same computational unit and accounting for activation rescaling. Choosing
the metric after seeing the trajectory can make the hypothesis unfalsifiable.

The essay supplies suggestive trajectories and related examples. A sharper
mechanism test would remove intermediate “bridge” examples during training,
vary co-occurrence while holding marginal frequencies fixed, and vary width
at matched task quality. These manipulations yield predictions about what
gets grouped together under generalization and capacity-sharing accounts.
Both processes could respond to the same manipulation, so the predictions
must be specified before fitting.

The idea has an acknowledged antecedent in the “conjoined features” discussion
of [Goh et al. (2021)](https://distill.pub/2021/multimodal-neurons/).
Cammarata’s extension is its proposed importance across models and its use as
a developmental explanation. A quantified model of representation learning
would require a specified similarity structure, an update mechanism, and
out-of-sample predictions for training trajectories.

## What the experiments actually establish

### Predicting activations from explanations

The most informative explanation test is in
[“Explanations That Could Lose”](https://already-clean.goodfire.com/#near-miss-test).
An agent saw explanations of 200 random neurons from the gallery and generated
five positive examples and five near misses for each, before activations were
measured. The reported summary covers the **183 explanations describing the
positive side**:

- **76%** of positive examples exceeded the strong-response threshold.
- **11%** of near misses exceeded it.
- Strong meant at least **30% of that neuron’s strongest corpus activation**.

These are estimates of

$$
P_{Q_+}(A_j),\qquad P_{Q_-}(A_j),
$$

averaged over the selected neurons, where $Q_+$ and $Q_-$ are the agent’s
explanation-conditioned example distributions. The contrast is useful evidence
that explanations predict responses. It is not an estimate of precision or
recall under the model’s ordinary input distribution $P$. Generated examples
are clustered within neurons, which matters for any uncertainty calculation.

The same procedure generated examples for a deliberately distant concept:
about 1% activated strongly, with no such activation for 179 of 183 neurons.
Five sampled examples of one distant concept per neuron leave most possible
alternative meanings untested. The experiment establishes specificity against
those controls; semantic exhaustiveness would require substantially broader
coverage.

### The principal quantitative claims

| Experiment | Reported result | Scope of the inference |
|:--|:--|:--|
| Weak-activation deletion, medium ConvNeXt, all 18 blocks | Removing the weakest 75% changes top-1 accuracy from about 72% to 71%; roughly 10% of predictions change. Removing the strongest 7%, with matched total activation magnitude, reduces accuracy to about 4%. | Strong activations dominate this aggregate task metric. Residual bypasses remain intact. |
| Retrained InceptionV1 bottleneck | Reducing mixed3b from 480 to 10 spatial channels, with no bypass, gives 58.35% top-1 accuracy on 50,000 ImageNet validation images. Units appear coarser. | Useful coarse representations survive a severe channel bottleneck. Spatial locations remain available. |
| SAE on that squeezed representation | A 640-feature TopK SAE, with 2 active features per position, explains 82% of held-out activation variance. Substitution reduces top-1 accuracy from 58.8% to 43.0% on a separate 10,000-image evaluation. | Reconstruction variance explained is insufficient to guarantee preservation of the model’s function. |
| Qwen3-32B “Santa” intervention | Removing 8 identified negative-pole neurons gives reported $P(\mathrm{Santa})=0.059$; removing the same number of neurons from the same layers at random gives 0.997. | The selected neurons have a large causal effect on this prompt’s output under this ablation. |

Sources: [weak activations](https://already-clean.goodfire.com/#do-weak-activations-matter),
[measurement controls](https://already-clean.goodfire.com/#weak-activation-controls),
[bottleneck and SAE](https://already-clean.goodfire.com/#image-models),
[language-model circuits](https://already-clean.goodfire.com/#language-models).

Three qualifications affect interpretation of these numbers.

**Aggregate accuracy can conceal important changes.** Let $c(X)$ and
$\widetilde c(X)$ be predictions before and after an intervention. Then

$$
\Delta\mathrm{Acc}
=P(\widetilde c(X)=Y,\ c(X)\ne Y)
-P(c(X)=Y,\ \widetilde c(X)\ne Y).
$$

Improvements and deteriorations can offset. A one-point accuracy change,
alongside 10% prediction disagreement, provides limited information about
rare behaviors, subgroups, probability calibration, or robustness.

**Ten spatial channels still yield many scalar variables.** A tensor with
shape $10\times H\times W$ has $10HW$ entries. Retraining can also discard
fine distinctions. The bottleneck experiment supports a coarsening account
for the cases studied; it does not identify the total number of represented
features. Failure of a particular SAE to recover a feature provides limited
evidence of absence when substitution substantially degrades task performance.

**“Cleanliness” percentages depend on the rubric.** The essay reports roughly
90% of inspected language neurons as having one main job and describes
near-complete readability in some modern vision models. The denominator,
activation sign, corpus, explanation granularity, and judgment procedure
determine what those percentages mean. Architecture, training, and analysis
tools also change together in several comparisons. These are useful exploratory
assessments, with limited identification of which change caused the improvement.

## A concrete diagnostic: SwiGLU has two positive regimes

One practically useful observation follows directly from the activation
algebra. For a SwiGLU unit, write

$$
g_j=w_{g,j}^\top r+b_{g,j},\qquad
v_j=w_{v,j}^\top r+b_{v,j},\qquad
h_j=\operatorname{SiLU}(g_j)v_j
=g_j\sigma(g_j)v_j.
$$

Bias terms may be absent in a particular architecture. Since
$\sigma(g_j)>0$, a positive product has two possible regimes:

$$
\{h_j>0\}
=\{g_j>0,v_j>0\}\ \cup\ \{g_j<0,v_j<0\}.
$$

A positive-activation ranking mixes them. An explanation fitted to the
double-negative branch can misdescribe the unit’s large responses in the
other branch or on its negative side. Cammarata documents examples where
this changes an automatic label substantially, including a unit initially
labeled by biblical references whose stronger negative responses concern
Russian text ([source](https://already-clean.goodfire.com/#language-models)).

The diagnostic is to examine response distributions conditional on
$(\operatorname{sign}g_j,\operatorname{sign}v_j)$, along with their magnitudes
and downstream effects. The algebra is elementary; its value here lies in
identifying a measurement failure and demonstrating consequential examples.
The sign of $h_j$ alone also does not determine whether it increases an
output: downstream weights and nonlinear computations determine that effect.

## From a readable unit to an identified mechanism

### Predictability, causal effect, and explanatory coverage

A probe showing that $z_k(X)$ is predictable from $h(X)$ establishes available
information. To assess use, define an output functional $T$, such as a logit
contrast, and an intervention replacing a set of activations $h_S$ by a
specified baseline $b_S$. Its average effect is

$$
\tau_S(P;b)
=\mathbb E_{X\sim P}\left[
T(F_\theta(X))-T(F_\theta^{\operatorname{do}(h_S\leftarrow b_S)}(X))
\right].
$$

This estimand depends on the input distribution, selected variables, baseline,
and output. A large effect supports a functional role under that intervention.
It leaves open whether the proposed semantic description covers all uses of
the unit. A small effect can reflect redundancy or compensation. Setting a
unit to zero may produce activation combinations rarely seen during ordinary
operation; matched-input activation replacement offers another estimand.

The essay itself includes a useful distinction: three social-security-number
detectors are predictive, while their ablation produces only a small average
next-target log-probability change (about $-0.004$ nats in the reported test).
See [the appendix](https://already-clean.goodfire.com/#social-security-appendix).
This is evidence that detection and an effect on the tested output can differ.

Likewise, a selected circuit can explain a particular response while leaving
other pathways unaccounted for. The Santa intervention is stronger evidence
than a plausible neuron label. Its one-prompt effect still requires replication
over a defined prompt distribution before supporting a population claim.

### What native circuits avoid, and what they still require

A sparse autoencoder approximates activations by a learned representation:

$$
\widehat r=D_{\mathrm{SAE}} f_\phi(r),\qquad
\min_{D_{\mathrm{SAE}},\phi}
\mathbb E\sum_{i=1}^d(r_i-\widehat r_i)^2
+\lambda\mathbb E\sum_k|f_{\phi,k}(r)|,
$$

with hard TopK sparsity as another formulation. Dictionary learning can expose
useful features, as in [Bricken et al. (2023)](https://transformer-circuits.pub/2023/monosemantic-features/index.html).
Its features depend on the reconstruction objective, dictionary size, and
sparsity constraint. They require independent validation.

Studying native units avoids inserting this learned approximation into the
network. A circuit assembled from native units still needs tests of omitted
paths, attribution approximations, and its semantic explanations. In either
approach, **functional fidelity** can be measured on held-out inputs by

$$
\mathcal F
=\mathbb E_{X\sim P}
\operatorname{KL}\left(p_\theta(\cdot\mid X)
\,\|\,p_{\mathrm{approx}}(\cdot\mid X)\right),
$$

supplemented by agreement on interventions of interest. The reported SAE
substitution loss illustrates why low activation reconstruction error alone
is inadequate. Native-versus-transcoder examples drawn from different
language models also leave the comparative method effect unidentified.

## Assessment and the next decisive tests

The work provides useful evidence for **better native-neuron measurement and
case-specific causal explanations**. It also weakens some prominent examples
previously used to motivate a particular account of polysemanticity.
Recursive generalization is a plausible developmental hypothesis with a clear
need for stronger operationalization.

The broad conclusions require three further kinds of evidence:

1. **A defined prevalence estimand.** Sample layers, neurons, signs, and inputs
   using a published rule; fix the semantic rubric; report failures and
   uncertainty. This would turn “most neurons are interpretable” into a
   reproducible statistical statement.
2. **Matched-model comparisons.** Compare native units, learned dictionaries,
   and circuit approximations on the same network, input distribution,
   functional-fidelity targets, intervention tasks, and analysis budget.
3. **Training-time discrimination.** Prespecify how width, feature
   co-occurrence, and bridge-example removal should change response sets under
   competing developmental explanations, then test those predictions across
   training seeds.

For an ML or econometrics reader, the main lesson is a measurement one:
**semantic coherence, representation rank, and causal explanatory coverage
are distinct estimands**. Progress on the first two can make circuit analysis
easier. Claims about comprehensive model understanding or safety require
evidence about the third, including rare and shifted input distributions.

## References and scope {.unnumbered}

- Cammarata, N. (2026). [*Neural Networks Are Already Clean*](https://already-clean.goodfire.com/).
  Primary source, inspected 15 October 2026. Section-specific links above
  identify the reported experiments and the author’s qualifications.
- Elhage, N., et al. (2022). [*Toy Models of Superposition*](https://transformer-circuits.pub/2022/toy_model/index.html).
  Controlled examples with specified latent features and sparse inputs.
- Olah, C. (2023). [*Distributed Representations: Composition & Superposition*](https://transformer-circuits.pub/2023/superposition-composition/index.html).
  Distinguishes and combines the two coding strategies.
- Goh, G., et al. (2021). [*Multimodal Neurons in Artificial Neural Networks*](https://distill.pub/2021/multimodal-neurons/).
  Earlier observations of multimodal and conjoined features.
- Bricken, T., et al. (2023). [*Towards Monosemanticity: Decomposing Language Models With Dictionary Learning*](https://transformer-circuits.pub/2023/monosemantic-features/index.html).
  Sparse dictionary learning for language-model representations.

The neural-network measurements above are source-reported results. Only the
eight-state mathematical illustration is computed here; all of its code is
contained in this document.
