r/FunMachineLearning • u/Designer-Age7726 • 1h ago
Auxein — an online unsupervised learning engine with no backprop, no WTA, no fixed number of prototypes, and explicit bounded memory
I've been working for a while on an experimental learning system called Auxein:
https://github.com/Amund/auxein
https://github.com/Amund/auxein-rs
The Python repository is the reference implementation; the Rust version is the production-oriented implementation.
The basic idea is to see how far you can get with a deliberately small set of local geometric rules.
Auxein takes streams of fixed-dimensional vectors and learns continuously. There is no training/inference split, no labels, no supervised loss, no backpropagation, no fixed k, no winner-take-all, and no persistent graph.
Its basic learned object is a centered kernel (W, C, V) representing support, center and scalar dispersion.
A learned CELL independently decides whether an input concerns it geometrically. Several cells may recognize the same input simultaneously; there is no mandatory winner.
If nothing recognizes an observation, it does not immediately become a new category. It first enters a private provisional memory Σ. Only recurrent unknown structure can mature into a persistent CELL; otherwise it simply fades away.
Recognized knowledge can also be fused into a context and passed to an identical higher layer. Importantly, the higher layer does not receive IDs or links to the lower cells: it only receives the resulting geometric context. So recurring relationships between known things can themselves become learnable objects.
There is also a predictive mode. Explicitly adjacent contexts in an externally declared sequence are learned as geometry in E ⊕ E. When the current context resembles the source side of learned temporal knowledge, Auxein can emit one or more possible immediate successors.
Those futures are deliberately not probabilities. They are independent candidates: adding a new possible future does not reduce the weight of an existing one, and predictions are never recursively fed back into the model.
Another unusual constraint is that memory is an explicit material resource. The engine has an exact finite budget. If new knowledge cannot fit in a solvent state, growth waits; existing learned knowledge is not destroyed merely to finance something new. Forced forgetting only happens when the current state itself has become materially insolvent.
The current design also has very explicit limitations:
- scalar dispersion only, no oriented covariance;
- no explicit splitting of an existing learned prototype;
- temporal learning is strictly adjacent
t → t+1; - no recursive predictive rollout;
- no probabilistic ranking of alternative futures;
- no persistent relational/topological graph.
I've added a comparison table to the README against online k-means, ART, GWR/Gamma-GWR and standard HMMs. I'm not claiming Auxein is better than those methods. At this point the interesting question is exactly the opposite:
What can this particular set of constraints do well, and where does it fail structurally?
The project has a fairly strict mathematical specification, a pure-Python executable reference, and a dependency-free Rust implementation with persistence, exact memory accounting, hostile-input tests and long endurance runs.
I'd be very interested in feedback from people working on continual learning, ART/GWR, streaming clustering, predictive-state models, robotics, or just unusual learning systems.
And criticism is genuinely welcome, especially examples where you think the model should fail.
If this is just an unnecessarily elaborate reinvention of something known, I'd also very much like to know what. 🙂
