Embodied Classification / Neural Cellular Automata
8,768 params 95.5% MNIST test 3×3 receptive field 45 steps

Embodied Classification with Neural Cellular Automata

An MNIST digit is placed at the centre of an 80×80 grid. One update rule — 8,768 parameters, applied at every cell, seeing only its own 3×3 neighbourhood — is iterated for 45 steps. Ten circular regions sit on a ring around the digit, and the model is trained so that at the end of the rollout the region belonging to the digit's class has the highest mean activation while the other nine stay dark. The prediction is therefore read off as a location on the grid, not from a classification head: the grid has to change shape until the answer is visible in its form. This reaches 95.5% on the MNIST test set, which is well below what an ordinary small convnet gets. The interest is in the mechanism, not the score — the signal has to travel from the digit to the right region using nothing but local communication.

  1. 01
    The output is a location Ten circles (radius 8) sit at 36° intervals on a ring of radius 27 from the centre. The prediction is whichever circle has the highest mean channel-0 activation. Nothing else reads the state.
  2. 02
    Only local communication A cell sees a 3×3 neighbourhood, so activation has to cross about 27 px of empty grid to get from the digit to a region. That takes many steps, and the grid is visibly changing form the whole way.
  3. 03
    Two standard NCA components hurt here Alive masking and stochastic firing are common in growing-NCA work. In this task both cost a lot of accuracy (see the ablations below). They are designed to keep empty cells empty, which is the opposite of what is needed when signal must cross empty space.

Run it

14fps

80×80 grid · channel 0 step 0
prediction
region activation
each region over the rollout

The leading circle is outlined in white; a dashed green circle marks the true class when the model gets it wrong. “Lead” is the gap between the top region and the runner-up.

Test accuracy during training

champion run · seed 0 · validated every 5k steps

Accuracy sits at chance (11.4%) until roughly step 25,000, then reaches 55% at the next validation point and 84% by step 30,000. Validation runs every 5,000 steps, so the change is only localised to within one interval, and this is a single seed — we did not test whether the timing is consistent across seeds.

Ablations

best test acc, mean of 2 seeds

    Alive masking leaves the model at chance. Lowering the fire rate costs most of the accuracy. Initialisation and loss choice make a few points of difference at most.

    Running past the training horizon

    champion_s0_stable, trained at T=45

      This checkpoint was fine-tuned on a state pool, and holds its answer when the rollout is run 5× longer than it was trained for, losing 0.4 pp. Without that fine-tuning the state drifts and accuracy at T=250 is markedly worse.

      Other datasets

      same rule and geometry, retrained

        Fashion-MNIST holds up. CIFAR-10 reaches 50.5% — better than chance, but routing colour images through 16 channels of local traffic is clearly much harder.

        Setup

        grid
        80×80, toroidal
        state
        16 channels
        rule
        Sobel perception → 128-unit MLP → Δstate
        regions
        10 circles, r=8, ring r=27
        loss
        full-screen MSE, all timesteps
        training
        200k steps, fire rate 1.0, no alive mask