A substrate that learns its body by being wrong, finds itself in what it sees, and turns toward what it did not expect.
Real hardware. No training data. No labels.
Active Inference.
A system carries priors about the world, predicts what it will sense, and reduces the difference between prediction and arrival. It does this either by changing what it believes, or by moving so the belief becomes right.
Karl Friston's formulation. What follows is a substrate that runs those mechanisms on a physical arm.
A vector, here, is a waveform.
A vector in standard AI is a list of numbers. Here a vector is a waveform: amplitude and phase. Many waveforms interfere, and the interference is the mechanism.
Perception, recognition, memory and orientation are what the field does, not functions called on it.
Biology's structures (retina, cortex, hippocampus) are encoded as waveform configurations at biological density. Not trained. Derived from published neuroscience and built.
Seven capabilities. Real numbers.
It learns its body by being wrong.
The map from joint angles to hand position started at exactly zero.
| starting map | |W| = 0.000000 |
| after 600 real steps | error 101 → 39 mm |
| map norm | 0.000000 → 0.175812 |
| contacts | 0 in 300 steps |
Every element came from a miss.
It finds its own body without being told.
The camera is bolted to the gripper. When the arm moves, everything in view sweeps except the thing attached to the eye. That was the only clue.
| patches it calls its own | 12 of 256 |
| belief in those patches | 0.896 |
| the rest of the scene | 0.046 |
| separation | 19× |
| basin depth over 443 experiences | 1.828 → 18.418 |
| a pattern that never arrives | 0.004 |
| agreement with an independent method | 1 pixel |
It predicts what its own movement will do.
It predicts what its own movement will do to the visual field. What survives the prediction is what its own motion did not cause.
| knowing the movement vs predicting no change | +27.1%, +25.8%, +27.0% |
Three runs. The remainder is parallax, and parallax is depth.
It recognizes, and holds many things at once.
Recognition is all-or-nothing. The field settles into a configuration it has held before, or it does not.
| familiar, cued with 40% | 0.98 |
| never seen | 0.00 |
Memory is what changed a belief. The same place, stored under different surprise:
| surprise | recalled |
|---|---|
| 0.02, already expected | 0.011 |
| 1.00, not expected | 0.982 |
| separation | 94× |
Many things held without blurring, when experience is spaced and consolidated between:
| recall depth · retrievable | |
|---|---|
| written together | 0.155 · 0 |
| spaced, consolidated | 9.222 · 24 |
Same patterns, same substrate, same number of writes. Only the temporal arrangement differs. Simulation.
Replay makes it general.
Held out the far quarter of the workspace, trained on the rest, then replayed the stored episodes. Nothing new was seen.
| before · after | |
|---|---|
| inside the trained region | 64.3 mm · 25.1 mm |
| held out | 138.1 mm · 68.9 mm |
| gap | 73.8 mm · 43.8 mm |
Real arm data. The map got better where it had never been.
It turns toward what it did not expect.
Three blocks of sixty seconds. Empty, an object moving, empty again. The script never knows which is which.
| run | empty · object · empty again |
|---|---|
| 1 | 34% · 62% · 28% |
| 2 | 30% · 62% · 23% |
| 3 | 31% · 62% · 27% |
| 4 | 20% · 58% · 16% |
| 5 | 22% · 55% · 16% |
Five independent runs, same protocol, same shape.
And the drive follows it: interest 0.57 → 1.42 → 0.77, reaching 28% → 48%.
It knows what it cannot do.
Before reaching, it simulates the reach through its own forward model. If the predicted outcome misses, it abandons the goal.
It runs every session and produced the abandonment in every log.
Every constant came from a derivation or from the biology.
Each is checkable.