symbolic-ai-002 β€” learners that are symbolic on the inside

No gradients. No learned tensors. A few dozen discrete parameters. CPU only.

This release is the counterpart to jacob-valdez/symbolic-ai-001-3b46de3, which is symbolic at the interface but neural inside. Here the algorithm itself is symbolic, and the two are compared like for like β€” same protocol, same environments, same evaluation harness.

Because the artefacts are programs, not weights, the "models" in this repo are text: models/induced_programs.json contains what was induced. The .pt files are the neural controls, included so the comparison is reproducible.

Provenance

source repository full snapshot in code/
source commit 0469d0a1f3ba052b00f5e19243b1cf87d6ca41c4 (0469d0a)
design note code/docs/symbolic-ai-002.md
neural baseline symbolic-ai-001-3b46de3
hardware symbolic arms: CPU. Neural controls: 1Γ— NVIDIA GB10 (shared)

What was induced

A world's laws, from 21,394 transitions in a 5Γ—5 gridworld, in 0.14 s of CPU β€” 26 discrete parameters:

LEFT   : move(-1, 0)  unless wall(-1, 0)   within [0,size)
RIGHT  : move(+1, 0)  unless wall(+1, 0)   within [0,size)
UP     : move(0, -1)  unless wall(0, -1)   within [0,size)
DOWN   : move(0, +1)  unless wall(0, +1)   within [0,size)
PICKUP : add holds(agent,key); del holds(agent,nothing), at(key, 0, 0)
GOAL   : at(goal, 0, 0) ∧ holds(agent,key)

within [0,size) reads the bound from the observation, so the same operator is correct at any scale.

A policy, from 800 MiniGrid episodes in 11 s β€” 5 parameters, 100% success where the 13.97M transformer trained on the same episodes gets 0.70:

IF see(goal,_,_,>0) THEN forward
IF see(goal,_,<0,_) THEN left
ELSE right

A language, re-acquired every episode (lexicon_induction invents three new words per episode; nothing carries over):

arg0 of obj/5 where arg1 = [arg1 of says/2 where arg0=q1]

"Find the object whose colour is what this word means." 1.00 on symbols, on English, and on English with synonyms never seen in training; the network gets 0.40.

Results

Generalizing a world 16Γ— beyond training (success, 25 held-out episodes)

agent params 5Γ—5 8Γ—8 12Γ—12 20Γ—20
world_model 26 1.00 1.00 1.00 1.00
relational 42 0.84 0.72 0.56 0.56
search (given the true model) 0 0.80 0.24 0.12 0.00
symbolic-ai-001 (transformer) 13,969,152 0.40 0.00 0.00 0.00

A goal nobody trained for β€” same model, re-aimed, no new data

goal achieved
induced goal (key, then goal square) 1.00
new: hold the key 1.00
new: stand on the goal square 1.00
new: stand where the key is 1.00

Rule families held out of training

agent params train families held-out families
seq_synth 0 1.000 1.000
neural specialist 13,969,152 0.975 0.000

The language curriculum (14 lessons)

solved β‰₯0.90 above floor
qsynth 6 / 14 7 / 14
relational 1 / 14 8 / 14
neural, trained on the curriculum 0 / 14 10 / 14

Symbolic induction is bimodal β€” exact when the capability is inside its program space, at the floor when it is not. The network is uniformly mediocre.

Where gradients still win

model fit held-out perplexity
counting model (order-5, 20M tokens) 199 s CPU 179.4
transformer (LM-only) 22 min GPU 51.9

Natural-language modelling is a real loss for the symbolic side, and a 40M-token run exhausted host memory. Reported, not buried.

Files

path what
models/induced_programs.json the induced world model and policy, as text
models/neural-curriculum-control.pt neural control trained on the curriculum
models/neural-seq-control.pt neural control trained on the sequence families
results/*.json every measurement behind the tables above
code/ complete source at the commit

Reproduce

cd code && uv pip install -e .
python -m symbolic.experiments.symbolic_suite     # generalization, novel goals, families, knowledge
python -m symbolic.experiments.curriculum_suite   # the 14-lesson language profile
pytest tests/ -q                                  # 147 tests

License

MIT.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support