I replaced the neural network in a word-embedding model with a physics-style attractor system, no MLP, no attention, no output layer. It hits SimLex-999 ρ=0.36 on 7.5% of Wikipedia. Honest writeup.

Posting the honest version. This is one instance of a general mechanism I've been building (a "vector collapse" engine); word embeddings just turned out to be a clean way to test whether the mechanism actually learns meaning on its own. Real numbers, and a "what it is NOT" section at the bottom so the comments don't have to.

The idea. Standard embedding models (word2vec/GloVe) and everything since lean on either a learned network or a big matrix factorization. I wanted to know how far you get with only a dynamical system. So the entire model is:

  • one 256-d vector per word (a "well"),
  • a start state,
  • two scalars: a pull strength and a readout temperature.

That's it. No MLP, no attention, no output layer, no pretrained anything. ~25.6M numbers total, ~99% of which are just the word table.

How it "reads." One update rule, applied once per context word, pulls a moving state toward that word's well:

h  ←  h − strength · (1 − cos(h, W)) · norm(h − W)

The strength is learned and ends up weak (~0.11), so no single word yanks the state onto itself, the final position is a compromise shaped by the whole ordered context. Because it's a trajectory, not a bag, word order is physically encoded (reversing a sentence moves the endpoint to cosine 0.07 vs the original, where mean-pooling gives 1.00). Meaning is then read straight out of the geometry: the same wells that pull the state are the vectors you look up as embeddings. There is no separate decoder.

Training. CBOW-style fill-in-the-blank, executed by the collapse dynamics instead of a network: for every noun occurrence, collapse a state through its ±5-word context and make the endpoint point at the missing noun (sampled-softmax cross-entropy over nouns). Gradient descent only reshapes the wells.

  • Data: English Wikipedia, ~5M lines (~7.5% of the corpus, ~300M tokens).
  • Signal: 94.75M noun occurrences, single streaming pass.
  • Vocab: 100k context words, 23,758 noun targets (WordNet noun lexicon).
  • Compute: ~3.2 hours on an M-series MacBook (MPS). No cluster.

Quality — SimLex-999 (similarity, not association; coffee/cup scores LOW):

model data SimLex-999 ρ (nouns)
pure collapse (this) 7.5% of Wikipedia, noun-only 0.362 (662/666 pairs)
word2vec / GloVe (published) full Wikipedia+Gigaword, billions of tokens ~0.37–0.44
PPMI+SVD (reference) full corpus ~0.38

So it lands inside the classic word2vec/GloVe band, on a fraction of the data, with no neural network in the loop.

What the neighborhoods look like (nearest nouns by cosine):

physics   -> chemistry mathematics astronomy quantum mechanics astrophysics
chemistry -> physics biology biochemistry nobel organic pharmacology
pakistan  -> karachi punjab lahore peshawar bangladesh india afghanistan
france    -> belgium vichy britain italy marseille spain germany
cat       -> tabby dog pet felis mouse stray feline
apple     -> macintosh ipod blackberry android pc cherry laptop

Synonyms, hypernyms, sibling terms, geographic manifolds none of it hand-specified.

Speed (M-series MacBook, noun_bench.py**):**

batch CPU words/s MPS words/s
1 43,863 5,174
1024 1,464,201 2,311,023
  • Embed one 10-word context: 0.23 ms on CPU real-time, no GPU needed.
  • Bulk: 2.3M words/s on GPU at batch 1024.
  • Nearest-noun query vs 23,758 wells: 0.48 ms.

Same crossover as everything tiny: CPU wins single items (the collapse math is so small the run is launch-bound), GPU runs away in bulk past ~batch 256. The 10-step sequential walk amortizes to ~4 µs/window under batching.

What it is NOT (saving you the comment):

  • Similarity, not logic. It learns cat and animal are close, not that a cat is an animal. No facts, no hierarchy, no negation. It's a meaning substrate, not a reasoner.
  • One vector per word = dominant sense wins. "apple" collapsed to the company (macintosh, ipod, android) because Wikipedia talks about the company more than the fruit "cherry" is the only fruit neighbor. No sense disambiguation.
  • Frequency-bound. Common nouns have sharp neighborhoods; rare ones barely leave their random init.
  • 7.5% of Wikipedia, single pass, fixed LR, no schedule. This is the honest first number, not a tuned ceiling there's obvious headroom.
  • Whole-word vocab, no subwords: OOV words have no vector.
  • The apples-to-apples baseline (PPMI+SVD on the same 5M lines) is still running; comparing to published word2vec is suggestive, not a controlled win.

Why I think it's interesting anyway: it's a fully inspectable alternative to attention for the "compress a sequence into meaning" job a contraction toward learned point-attractors, with a directional Lyapunov energy you can actually measure (the state provably descends toward the wells on ~100% of sampled steps). It's the embedding-layer instance; the same engine also does NLI and text generation in the repo.

Code, model card, benchmark, and the standalone loader: https://github.com/chetanxpatil/livnium/tree/main/chat

Model on the Hub (loads in 3 lines of torch): https://huggingface.co/chetanxpatil/noun-collapse

Two things I'd genuinely like input on: (1) has anyone gotten point-attractor / Hopfield-style dynamics to beat a plain PMI factorization on intrinsic similarity at matched data, or does the count-based method always win there? (2) cheapest honest way to add polysemy (multi-sense wells) without bolting on a full network and losing the "it's just geometry" property?

reddit.com
u/chetanxpatil — 2 days ago

I replaced the neural network in a word-embedding model with a physics-style attractor system, no MLP, no attention, no output layer. It hits SimLex-999 ρ=0.36 on 7.5% of Wikipedia. Honest writeup.

Posting the honest version. This is one instance of a general mechanism I've been building (a "vector collapse" engine); word embeddings just turned out to be a clean way to test whether the mechanism actually learns meaning on its own. Real numbers, and a "what it is NOT" section at the bottom so the comments don't have to.

The idea. Standard embedding models (word2vec/GloVe) and everything since lean on either a learned network or a big matrix factorization. I wanted to know how far you get with only a dynamical system. So the entire model is:

  • one 256-d vector per word (a "well"),
  • a start state,
  • two scalars: a pull strength and a readout temperature.

That's it. No MLP, no attention, no output layer, no pretrained anything. ~25.6M numbers total, ~99% of which are just the word table.

How it "reads." One update rule, applied once per context word, pulls a moving state toward that word's well:

h  ←  h − strength · (1 − cos(h, W)) · norm(h − W)

The strength is learned and ends up weak (~0.11), so no single word yanks the state onto itself, the final position is a compromise shaped by the whole ordered context. Because it's a trajectory, not a bag, word order is physically encoded (reversing a sentence moves the endpoint to cosine 0.07 vs the original, where mean-pooling gives 1.00). Meaning is then read straight out of the geometry: the same wells that pull the state are the vectors you look up as embeddings. There is no separate decoder.

Training. CBOW-style fill-in-the-blank, executed by the collapse dynamics instead of a network: for every noun occurrence, collapse a state through its ±5-word context and make the endpoint point at the missing noun (sampled-softmax cross-entropy over nouns). Gradient descent only reshapes the wells.

  • Data: English Wikipedia, ~5M lines (~7.5% of the corpus, ~300M tokens).
  • Signal: 94.75M noun occurrences, single streaming pass.
  • Vocab: 100k context words, 23,758 noun targets (WordNet noun lexicon).
  • Compute: ~3.2 hours on an M-series MacBook (MPS). No cluster.

Quality — SimLex-999 (similarity, not association; coffee/cup scores LOW):

model data SimLex-999 ρ (nouns)
pure collapse (this) 7.5% of Wikipedia, noun-only 0.362 (662/666 pairs)
word2vec / GloVe (published) full Wikipedia+Gigaword, billions of tokens ~0.37–0.44
PPMI+SVD (reference) full corpus ~0.38

So it lands inside the classic word2vec/GloVe band, on a fraction of the data, with no neural network in the loop.

What the neighborhoods look like (nearest nouns by cosine):

physics   -> chemistry mathematics astronomy quantum mechanics astrophysics
chemistry -> physics biology biochemistry nobel organic pharmacology
india   -> mumbai gujarat nepal sikkim delhi bombay punjab bengal
france    -> belgium vichy britain italy marseille spain germany
cat       -> tabby dog pet felis mouse stray feline
apple     -> macintosh ipod blackberry android pc cherry laptop

Synonyms, hypernyms, sibling terms, geographic manifolds none of it hand-specified.

Speed (M-series MacBook, noun_bench.py**):**

batch CPU words/s MPS words/s
1 43,863 5,174
1024 1,464,201 2,311,023
  • Embed one 10-word context: 0.23 ms on CPU real-time, no GPU needed.
  • Bulk: 2.3M words/s on GPU at batch 1024.
  • Nearest-noun query vs 23,758 wells: 0.48 ms.

Same crossover as everything tiny: CPU wins single items (the collapse math is so small the run is launch-bound), GPU runs away in bulk past ~batch 256. The 10-step sequential walk amortizes to ~4 µs/window under batching.

What it is NOT (saving you the comment):

  • Similarity, not logic. It learns cat and animal are close, not that a cat is an animal. No facts, no hierarchy, no negation. It's a meaning substrate, not a reasoner.
  • One vector per word = dominant sense wins. "apple" collapsed to the company (macintosh, ipod, android) because Wikipedia talks about the company more than the fruit "cherry" is the only fruit neighbor. No sense disambiguation.
  • Frequency-bound. Common nouns have sharp neighborhoods; rare ones barely leave their random init.
  • 7.5% of Wikipedia, single pass, fixed LR, no schedule. This is the honest first number, not a tuned ceiling there's obvious headroom.
  • Whole-word vocab, no subwords: OOV words have no vector.
  • The apples-to-apples baseline (PPMI+SVD on the same 5M lines) is still running; comparing to published word2vec is suggestive, not a controlled win.

Why I think it's interesting anyway: it's a fully inspectable alternative to attention for the "compress a sequence into meaning" job a contraction toward learned point-attractors, with a directional Lyapunov energy you can actually measure (the state provably descends toward the wells on ~100% of sampled steps). It's the embedding-layer instance; the same engine also does NLI and text generation in the repo.

Code, model card, benchmark, and the standalone loader: https://github.com/chetanxpatil/livnium/tree/main/chat

Model on the Hub (loads in 3 lines of torch): https://huggingface.co/chetanxpatil/noun-collapse

Two things I'd genuinely like input on: (1) has anyone gotten point-attractor / Hopfield-style dynamics to beat a plain PMI factorization on intrinsic similarity at matched data, or does the count-based method always win there? (2) cheapest honest way to add polysemy (multi-sense wells) without bolting on a full network and losing the "it's just geometry" property?

reddit.com
u/chetanxpatil — 2 days ago

I trained a tiny (6M-param) attention-free model you can chat with, generates a sentence in ~5 ms on CPU, no GPU, no pretrained embeddings. Honest writeup.

Posting the honest version of a small project, what it does, the real numbers, and what it definitely isn't.

What it is. A 5.98M-param sequence model trained only on SNLI, with no pretrained embeddings and no attention/transformer. It runs an interactive loop: you type a hypothesis, pick a label (entailment / neutral / contradiction), and it generates a premise under that label. Under the hood it's a learned "collapse" decoder, difference vectors pulled toward learned point-attractors, plus a light cross-sentence alignment step, instead of attention.

What talking to it looks like:

you > is the girl standing
ai  > a girl in a pink shirt standing in a doorway.   [neutral]

you > two men are playing football
ai  > two men in a soccer game are running after the ball.   [neutral]

The numbers (measured, not vibes):

  • Generative-classifier accuracy: ~53% how often the premise it generates actually matches the requested label (3-way; chance is 33%). The sibling classifier version of the same engine hits 66.1% mean-pool / 72.7% with alignment on SNLI dev, no pretrained embeddings.
  • Speed (interactive generate() path, M-series MacBook, 40 replies of ~9 tokens):
device median latency / reply throughput
MPS (GPU) 13.1 ms 591 tok/s
CPU 5.3 ms 1,630 tok/s

The bit I found genuinely interesting: CPU beats the GPU by ~2.5x. The decode is a handful of tiny sequential steps, so it's launch-bound, not compute-bound, the GPU's per-op kernel-launch/sync overhead costs more than its math saves. So this thing runs best with no accelerator at all: ~5 ms to a full reply, faster than the network round-trip you'd pay just to reach a hosted LLM API.

What it is NOT (so the comments don't have to tell me):

  • Not a general chatbot, no understanding, no "awareness." Trained only on ~570k image-caption-style sentences, it can only produce SNLI-shaped sentences, ask it anything off-distribution and you get a caption about a person in a shirt. Fluent grammar emerges fast because grammar is local/regular; that is not reasoning.
  • The accuracy ceiling is a mechanism limit (cross-sentence word interaction), not a training-time one, more epochs plateau. The honest fair-footing baseline (SNLI-only, no embeddings) is a lexical-feature classifier at 78.2%, and it's still under that.
  • The speed is a consequence of being tiny. Scale params up and it becomes compute-bound and needs a GPU, you can't keep "5 ms on CPU" at billions of params.

Code + runnable chat demo + the benchmark script: https://github.com/chetanxpatil/livnium/tree/main/chat

Curious what people think about two things: (1) is there a real niche for sub-10ms, CPU-only, attention-free text models (on-device, embedded, high-throughput filtering), or is the narrow capability a dealbreaker? (2) cheapest way you'd add cross-sentence interaction to a pooling encoder without going full attention?

reddit.com
u/chetanxpatil — 13 days ago

I trained a tiny (6M-param) attention-free model you can chat with, generates a sentence in ~5 ms on CPU, no GPU, no pretrained embeddings. Honest writeup.

Posting the honest version of a small project, what it does, the real numbers, and what it definitely isn't.

What it is. A 5.98M-param sequence model trained only on SNLI, with no pretrained embeddings and no attention/transformer. It runs an interactive loop: you type a hypothesis, pick a label (entailment / neutral / contradiction), and it generates a premise under that label. Under the hood it's a learned "collapse" decoder, difference vectors pulled toward learned point-attractors, plus a light cross-sentence alignment step, instead of attention.

What talking to it looks like:

you > is the girl standing
ai  > a girl in a pink shirt standing in a doorway.   [neutral]

you > two men are playing football
ai  > two men in a soccer game are running after the ball.   [neutral]

The numbers (measured, not vibes):

  • Generative-classifier accuracy: ~53% how often the premise it generates actually matches the requested label (3-way; chance is 33%). The sibling classifier version of the same engine hits 66.1% mean-pool / 72.7% with alignment on SNLI dev, no pretrained embeddings.
  • Speed (interactive generate() path, M-series MacBook, 40 replies of ~9 tokens):
device median latency / reply throughput
MPS (GPU) 13.1 ms 591 tok/s
CPU 5.3 ms 1,630 tok/s

The bit I found genuinely interesting: CPU beats the GPU by ~2.5x. The decode is a handful of tiny sequential steps, so it's launch-bound, not compute-bound, the GPU's per-op kernel-launch/sync overhead costs more than its math saves. So this thing runs best with no accelerator at all: ~5 ms to a full reply, faster than the network round-trip you'd pay just to reach a hosted LLM API.

What it is NOT (so the comments don't have to tell me):

  • Not a general chatbot, no understanding, no "awareness." Trained only on ~570k image-caption-style sentences, it can only produce SNLI-shaped sentences, ask it anything off-distribution and you get a caption about a person in a shirt. Fluent grammar emerges fast because grammar is local/regular; that is not reasoning.
  • The accuracy ceiling is a mechanism limit (cross-sentence word interaction), not a training-time one, more epochs plateau. The honest fair-footing baseline (SNLI-only, no embeddings) is a lexical-feature classifier at 78.2%, and it's still under that.
  • The speed is a consequence of being tiny. Scale params up and it becomes compute-bound and needs a GPU, you can't keep "5 ms on CPU" at billions of params.

Code + runnable chat demo + the benchmark script: https://github.com/chetanxpatil/livnium/tree/main/chat

Curious what people think about two things: (1) is there a real niche for sub-10ms, CPU-only, attention-free text models (on-device, embedded, high-throughput filtering), or is the narrow capability a dealbreaker? (2) cheapest way you'd add cross-sentence interaction to a pooling encoder without going full attention?

reddit.com
u/chetanxpatil — 13 days ago

I trained a tiny (6M-param) attention-free model you can chat with, generates a sentence in ~5 ms on CPU, no GPU, no pretrained embeddings. Honest writeup.

Posting the honest version of a small project, what it does, the real numbers, and what it definitely isn't.

What it is. A 5.98M-param sequence model trained only on SNLI, with no pretrained embeddings and no attention/transformer. It runs an interactive loop: you type a hypothesis, pick a label (entailment / neutral / contradiction), and it generates a premise under that label. Under the hood it's a learned "collapse" decoder, difference vectors pulled toward learned point-attractors, plus a light cross-sentence alignment step, instead of attention.

What talking to it looks like:

you > is the girl standing
ai  > a girl in a pink shirt standing in a doorway.   [neutral]

you > two men are playing football
ai  > two men in a soccer game are running after the ball.   [neutral]

The numbers (measured, not vibes):

  • Generative-classifier accuracy: ~53% how often the premise it generates actually matches the requested label (3-way; chance is 33%). The sibling classifier version of the same engine hits 66.1% mean-pool / 72.7% with alignment on SNLI dev, no pretrained embeddings.
  • Speed (interactive generate() path, M-series MacBook, 40 replies of ~9 tokens):
device median latency / reply throughput
MPS (GPU) 13.1 ms 591 tok/s
CPU 5.3 ms 1,630 tok/s

The bit I found genuinely interesting: CPU beats the GPU by ~2.5x. The decode is a handful of tiny sequential steps, so it's launch-bound, not compute-bound, the GPU's per-op kernel-launch/sync overhead costs more than its math saves. So this thing runs best with no accelerator at all: ~5 ms to a full reply, faster than the network round-trip you'd pay just to reach a hosted LLM API.

What it is NOT (so the comments don't have to tell me):

  • Not a general chatbot, no understanding, no "awareness." Trained only on ~570k image-caption-style sentences, it can only produce SNLI-shaped sentences, ask it anything off-distribution and you get a caption about a person in a shirt. Fluent grammar emerges fast because grammar is local/regular; that is not reasoning.
  • The accuracy ceiling is a mechanism limit (cross-sentence word interaction), not a training-time one, more epochs plateau. The honest fair-footing baseline (SNLI-only, no embeddings) is a lexical-feature classifier at 78.2%, and it's still under that.
  • The speed is a consequence of being tiny. Scale params up and it becomes compute-bound and needs a GPU, you can't keep "5 ms on CPU" at billions of params.

Code + runnable chat demo + the benchmark script: https://github.com/chetanxpatil/livnium/tree/main/chat

Curious what people think about two things: (1) is there a real niche for sub-10ms, CPU-only, attention-free text models (on-device, embedded, high-throughput filtering), or is the narrow capability a dealbreaker? (2) cheapest way you'd add cross-sentence interaction to a pooling encoder without going full attention?

reddit.com
u/chetanxpatil — 13 days ago

I trained a tiny (6M-param) attention-free model you can chat with, generates a sentence in ~5 ms on CPU, no GPU, no pretrained embeddings. Honest writeup.

Posting the honest version of a small project, what it does, the real numbers, and what it definitely isn't.

What it is. A 5.98M-param sequence model trained only on SNLI, with no pretrained embeddings and no attention/transformer. It runs an interactive loop: you type a hypothesis, pick a label (entailment / neutral / contradiction), and it generates a premise under that label. Under the hood it's a learned "collapse" decoder, difference vectors pulled toward learned point-attractors, plus a light cross-sentence alignment step, instead of attention.

What talking to it looks like:

you > is the girl standing
ai  > a girl in a pink shirt standing in a doorway.   [neutral]

you > two men are playing football
ai  > two men in a soccer game are running after the ball.   [neutral]

The numbers (measured, not vibes):

  • Generative-classifier accuracy: ~53% how often the premise it generates actually matches the requested label (3-way; chance is 33%). The sibling classifier version of the same engine hits 66.1% mean-pool / 72.7% with alignment on SNLI dev, no pretrained embeddings.
  • Speed (interactive generate() path, M-series MacBook, 40 replies of ~9 tokens):
device median latency / reply throughput
MPS (GPU) 13.1 ms 591 tok/s
CPU 5.3 ms 1,630 tok/s

The bit I found genuinely interesting: CPU beats the GPU by ~2.5x. The decode is a handful of tiny sequential steps, so it's launch-bound, not compute-bound, the GPU's per-op kernel-launch/sync overhead costs more than its math saves. So this thing runs best with no accelerator at all: ~5 ms to a full reply, faster than the network round-trip you'd pay just to reach a hosted LLM API.

What it is NOT (so the comments don't have to tell me):

  • Not a general chatbot, no understanding, no "awareness." Trained only on ~570k image-caption-style sentences, it can only produce SNLI-shaped sentences, ask it anything off-distribution and you get a caption about a person in a shirt. Fluent grammar emerges fast because grammar is local/regular; that is not reasoning.
  • The accuracy ceiling is a mechanism limit (cross-sentence word interaction), not a training-time one, more epochs plateau. The honest fair-footing baseline (SNLI-only, no embeddings) is a lexical-feature classifier at 78.2%, and it's still under that.
  • The speed is a consequence of being tiny. Scale params up and it becomes compute-bound and needs a GPU, you can't keep "5 ms on CPU" at billions of params.

Code + runnable chat demo + the benchmark script: https://github.com/chetanxpatil/livnium/tree/main/chat

Curious what people think about two things: (1) is there a real niche for sub-10ms, CPU-only, attention-free text models (on-device, embedded, high-throughput filtering), or is the narrow capability a dealbreaker? (2) cheapest way you'd add cross-sentence interaction to a pooling encoder without going full attention?

reddit.com
u/chetanxpatil — 13 days ago
▲ 65 r/huggingface+2 crossposts

I trained a tiny (6M-param) attention-free model you can chat with, generates a sentence in ~5 ms on CPU, no GPU, no pretrained embeddings. Honest writeup.

Posting the honest version of a small project, what it does, the real numbers, and what it definitely isn't.

What it is. A 5.98M-param sequence model trained only on SNLI, with no pretrained embeddings and no attention/transformer. It runs an interactive loop: you type a hypothesis, pick a label (entailment / neutral / contradiction), and it generates a premise under that label. Under the hood it's a learned "collapse" decoder, difference vectors pulled toward learned point-attractors, plus a light cross-sentence alignment step, instead of attention.

What talking to it looks like:

you > is the girl standing
ai  > a girl in a pink shirt standing in a doorway.   [neutral]

you > two men are playing football
ai  > two men in a soccer game are running after the ball.   [neutral]

The numbers (measured, not vibes):

  • Generative-classifier accuracy: ~53% how often the premise it generates actually matches the requested label (3-way; chance is 33%). The sibling classifier version of the same engine hits 66.1% mean-pool / 72.7% with alignment on SNLI dev, no pretrained embeddings.
  • Speed (interactive generate() path, M-series MacBook, 40 replies of ~9 tokens):
device median latency / reply throughput
MPS (GPU) 13.1 ms 591 tok/s
CPU 5.3 ms 1,630 tok/s

The bit I found genuinely interesting: CPU beats the GPU by ~2.5x. The decode is a handful of tiny sequential steps, so it's launch-bound, not compute-bound, the GPU's per-op kernel-launch/sync overhead costs more than its math saves. So this thing runs best with no accelerator at all: ~5 ms to a full reply, faster than the network round-trip you'd pay just to reach a hosted LLM API.

What it is NOT (so the comments don't have to tell me):

  • Not a general chatbot, no understanding, no "awareness." Trained only on ~570k image-caption-style sentences, it can only produce SNLI-shaped sentences, ask it anything off-distribution and you get a caption about a person in a shirt. Fluent grammar emerges fast because grammar is local/regular; that is not reasoning.
  • The accuracy ceiling is a mechanism limit (cross-sentence word interaction), not a training-time one, more epochs plateau. The honest fair-footing baseline (SNLI-only, no embeddings) is a lexical-feature classifier at 78.2%, and it's still under that.
  • The speed is a consequence of being tiny. Scale params up and it becomes compute-bound and needs a GPU, you can't keep "5 ms on CPU" at billions of params.

Code + runnable chat demo + the benchmark script: https://github.com/chetanxpatil/livnium/tree/main/chat

Curious what people think about two things: (1) is there a real niche for sub-10ms, CPU-only, attention-free text models (on-device, embedded, high-throughput filtering), or is the narrow capability a dealbreaker? (2) cheapest way you'd add cross-sentence interaction to a pooling encoder without going full attention?

reddit.com
u/chetanxpatil — 12 days ago
▲ 32 r/neuralnetworks+6 crossposts

[P] I built a lossless geometric ML representation for a year. It failed, but the point-attractor model survived.

Hey r/deeplearning,

I wanted to share a project I’ve been working on for about a year called Livnium.

It started as a solo obsession with Rubik’s cubes, group theory, and the idea that a perfectly conserved geometric representation might outperform normal ML feature learning. For a while, I genuinely thought the “lossless” part was the key.

After a lot of benchmarking, ablations, and cold-water testing, I was wrong about that.

But the project did leave behind something useful: a fast supervised point-attractor collapse model for NLI that actually clears several honest baselines.

I’m sharing this because I think we need more honest post-mortems in ML, especially around ideas that are mathematically beautiful but don’t survive baseline testing.

1. The lossless core: the math works

The original system, Livnium Core, is a conserved geometric state space.

Imagine a 3×3×3 cube with 27 cells. Each cell maps to a character in a 27-symbol alphabet:

0abcdefghijklmnopqrstuvwxyz

Here, 0 is the center cell and a-z are the 26 outer cells.

Each cell has an exposure class:

f ∈ {0, 1, 2, 3}

representing:

core, face-center, edge, corner

Then each cell gets a symbolic weight:

SW = 9f

When you rotate the cube, the cells permute. But because the 3D cube rotation group has 24 orientations and is isomorphic to S4, the total symbolic weight stays conserved:

Σ SW is invariant across all 24 rotations

So the core is reversible, finite, symmetric, and lossless.

I also implemented base-27 carry math, for example:

z + a = a0

because:

26 + 1 = 27

So as a mathematical object, the system works. It behaves like a conserved geometric numeral system.

The mistake was assuming this would automatically help representation learning.

2. The cold water: lossless is not the same as useful for ML

My original hypothesis was:

>If the representation never loses information, maybe the model can reason better.

So I tested Livnium on Natural Language Inference using the same train/dev/test splits against basic baselines like bag-of-words and GloVe-style representations.

The results were humbling.

On SNLI:

Char-level Livnium encoding:        43.2%
Word-level Livnium encoding:        ~60%
Geometry-only, no word identity:    38.0%
Chance:                             ~33%

The char-level version did better than chance, but mostly learned spelling patterns.

The word-level version jumped to around bag-of-words performance because, functionally, it had become a bag-of-words index.

The geometry-only version was near chance.

Then I tested on ANLI, which is much more adversarial and much less artifact-friendly.

Everything collapsed toward chance:

ANLI: ~33%

That was the real lesson:

>A lossless container is not the same thing as a learned representation.

Representation learning needs abstraction.

Abstraction means throwing away irrelevant information.

You need to forget spelling noise, surface variation, and irrelevant positional detail while preserving semantic signal.

A perfectly reversible system cannot naturally do that.

That was the boundary I had to accept:

Livnium Core:
    useful as a lossless symbolic/geometric container

Pure Livnium for semantic learning:
    failed

3. What survived: supervised point-attractor collapse

After accepting that the pure lossless geometry was not enough, I tested a different idea:

>What if geometry is useful only after we allow learnable warping?

So I built a small supervised model called the Vector Collapse Engine.

The setup is simple:

  1. Map words to learned 256-dimensional embeddings.
  2. Mean-pool the premise into vector u.
  3. Mean-pool the hypothesis into vector v.
  4. Construct the pair vector:

​

pair = u - v

Then a 4-layer collapse engine warps this vector toward three learned point-attractors:

Entailment
Neutral
Contradiction

The loss combines cross-entropy with anchor separation, so the model is encouraged to form distinct attractor basins instead of just memorizing labels.

On SNLI, this reached:

68.92% test accuracy

That matters because it cleared my honest internal baselines, including the hypothesis-only artifact baseline at around:

61.5%

4. Ablations

To avoid fooling myself again, I ran ablations.

Full Collapse Engine:                         68.92%
Linear head on frozen u - v:                  64.06%
2-layer MLP head on frozen u - v:             70.13%
Random-anchor control:                        32.44%

The interpretation:

The collapse model beats a simple linear probe by about:

+4.86 points

So the point-attractor warping is doing something real beyond a linear readout.

But the MLP still beats it slightly, which is important.

So I would not claim the collapse engine is “better than neural networks.” It is not.

The more honest claim is:

>Point-attractor dynamics are a viable supervised geometric mechanism, but not magic. They provide an interpretable warping structure that competes with small neural heads, while still needing learned embeddings and supervision.

That is much more grounded than my original claim.

5. Speed

One nice property is that the model has no attention layers.

In my local benchmark:

Single-pair CPU latency:       ~0.33 ms
Batch throughput on MPS:       215k+ pairs/sec at batch size 1024+

So it is extremely fast for this kind of lightweight NLI classification.

6. What I learned

The biggest lesson was not technical. It was methodological.

I learned that it is very easy to fall in love with a beautiful mathematical structure and accidentally interpret every small signal as proof that the whole theory is working.

The only cure is boring controls:

majority baseline
bag-of-words baseline
hypothesis-only baseline
linear probe
MLP probe
random anchors
shuffled labels
ANLI-style adversarial testing

Those controls killed the original claim.

But they also showed me where the system still had life.

My current view is:

Livnium Core:
    useful as a lossless symbolic/geometric container

Pure Livnium for semantic learning:
    failed

Supervised Vector Collapse:
    works as a fast point-attractor classifier

Future direction:
    compression, symbolic state tracking, lightweight geometric classifiers

I’m sharing this because I think failed theories can still produce useful tools if we are honest about where they failed.

If you’re interested in group theory, representation learning, geometric classifiers, or just want to look through the repo and criticize it, I’d genuinely love feedback.

Repo:

https://github.com/chetanxpatil/livnium

I’m especially curious what people think about the point-attractor collapse model, and whether this kind of geometry has a better home in compression, routing, or interpretable lightweight classifiers rather than “beating ML.”

u/chetanxpatil — 17 days ago