AOgmaNeo » Blog

3 weeks ago
Hi all,

So this last month there were two major developments for AOgmaNeo.

First, there is a new interactive demo hosted on the Ogma website that you can try. I compiled AOgmaNeo with Emscripten (WebAssembly), and it runs pretty nicely in the browser. The demo is a real robot that was then turned into an web demo by learning a "simulator" for it with AOgmaNeo (simply by observing its response to motor commands through a camera). It's a fun demo that showcases the world-modeling capabilities of AOgmaNeo, give it a try! I called it "real2sim", a reversal of the more ... Read More →

1 month, 3 weeks ago

Since the last post we have been performing tons of experiments with various improvements to the dual-encoder setup.
Most didn't work, but some made it into the upcoming version of AOgmaNeo.

Importantly, there is now a guide in the AOgmaNeo repository, that provides a brief overview of what AOgmaNeo is and what it does.
It doesn't have code usage yet though, instead it is describes the algorithm. For code usage, the examples are still the main resource at the moment.

We also trained reinforcement learning (RL) agents in the DonkeyCar simulator (Website), which drove around the track ... Read More →

2 months, 3 weeks ago

Since the last post, AOgmaNeo has had several important updates - most notably, it now uses a dual-encoder setup.
This means that each layer in the hierarchy contains two encoders, one that is updated by minimizing reconstruction error w.r.t. the input (this one is generative), and another that is updated to minimize prediction errors (this one is discriminative).

Individually these encoders both had problems - when one improved upon some task, the other would fail. So, I decided to just combine these two seemingly complementary encoders, into the new dual-encoder setup.

It is a bit slower than it was ... Read More →

3 months, 3 weeks ago

Recently I have been really buckling down on getting error-driven encoder/decoder pairs to work. There are currently two variants that seem promising - one that is similar to what I already had but with some minor (but important) modifications, and the other that uses feedback alignment (paper here).

Error-driven encoders/decoders promise much better compression than the older ones, as they only compress what is needed instead of everything.

With respect to AOgmaNeo as a whole, some minor changes include slightly reduced memory consumption (useful for embedded devices) by changing the way the receptive fields of columns project ... Read More →

4 months, 2 weeks ago

Time for another update!

Since the last blog post, we have performed many new experiments with different encoders, decoders, recurrent versions, and flatter hierarchies. Out of these, the best new systems are:

- New encoder - single-byte weights for ESR (exponential sparse reconstruction) encoder using a few re-scaling tricks. Great for Arduino!
- New reinforcement learning decoder that performs conservative Q learning.

The latter in particular is quite nice to have. Previously, we used a type of ACLA algorithm (Actor-Critic Learning Automaton) to perform reinforcement learning. It worked well, but it had some downsides. For instance, the "passive learning" ... Read More →

5 months, 3 weeks ago

Time for another update!

We have added a new feature to the master branch of AOgmaNeo - the ability to supply "do not use" inputs.
These are supplied by just setting a column index to -1. They signal to the hierarchy that you do not want to learn or activate from the input. The hierarchy will however still provide a prediction for this column.

This new feature can be used for cases where data is missing or known to be useless, and also allows AOgmaNeo to predict what those "missing" values should be.

We have also added new serialization ... Read More →

6 months, 3 weeks ago
Here is our first update!

We have been working on some demos for AOgmaNeo. The two currently of most interest to us are:

- A new version of the "learning to walk faster" demo with a different (custom) quadruped robot with brushless motors (and of course the latest version of AOgmaNeo)
- A robotic rat that must solve classic rat maze tasks (made of cardboard). Here we are using a new version of our "smallest self-driving car" as the "rat"

These are progressing well. We are also of course experimenting with new things w.r.t. the AOgmaNeo software itself. For instance, ... Read More →