Hey Everyone,
I am a long term Numenta follower even before the Thousand Brains Theory, I have been following Numenta since the cortical Learning algorithm whitepaper days. Today I wanted to share my passion project that I have been working on the sidelines for quite some time now , it is comparatively complete , can do few tricks but most importantly these are all Numenta Inspired HTM Neurons using Sparse Distributed representation for inter communication, uses Depolarization to classify and Predict , Uses Sensory Motor Inference, Grid Cells , so on and so forth. Most importantly this is extensible to create the motor model as well, there is no support for Motor Learning currently and I have plans of implementing that in the project.
Video Link : Passion Project Update for TBT Agent : Hentul - 1/22/2024
Neural Architecture:
There are 4 different Components to the Neural Architecture: there are 3 different Neuronal Layers composed of HTM Neurons that implement Sequence Memory and there is HC-EC Complex which helps associating locations of the agent with the corresponding sensations being sensed. Among the 3 layers there is one First Order Memory Layer similar to Layer 4 in cortex and 2 Second Order Memory layers which are similar to Layer 3A and Layer 3B also in the cortex. The HC-EC complex is the key component in the architecture which is responsible for classification and interpreting agent locations in different places in the agentic universe.
Project Environment : In this project I am using my current Desktop itself as the agents universe and the agent directly controls the mouse cursor via output motor vectors on the screen , whenever the agent wants to make a movement it sends out a movement signal vector and the motor cortex performs that action moving the cursor to the exact position and sensory cortex kick into action once the cursor is moved there by reading all the pixel values in the location to update its internal state of the agent w.r.t to the screen. There are different modes the agent is currently supported to run in first “LEARNING” mode & “PREDICTION” mode, each of these modes helps the agent to learn new objects and classify new object into its known categories, make predictions to classify object or even on how the new position is supposed to feel like on known objects.
Future Work:
1.I am still yet to implement Sensory Motor Integration; I am currently in the process of completing Sensory Inference.
2.Support for Color Processing and Orientation Processing.
Algorithms:
- Reference Frame Based Object Classification. [Implemented]
- Burst Prevention Pooling Algo. [Implemented]
- Sequence Memory. [Implemented]
- Sensory Motor Integration [Needs work]
- Sensory Motor Inference [Needs Work]
- Slow Potentiated Short Term Remembrance Algorithm[NOT Implemented]
- Model Based Path Integration. [NOT Implemented]
- Action Based Path Integration. [NOT Implemented]
- Spatial Pooler. [NOT Implemented]
Code: GitHub - deric18/Hentul at SOMBranch
Link :
The blogs are raw and are a work in progress, I have worded them in layman terms for easy understanding.
There are more blog on the website. www.decision-machines.com
6 Likes
Very cool! It sounds like this was inspired by Numenta’s stuff, prior TBP? So HTM neurons, SDR, and that sort of thing?
I know you had that one post regarding hippocampal/EC functioning. I’d be really curious to know how you went about implementing that!
Either way, very exciting projects! I’m going to take a closer look at this tomorrow and see if I don’t have any questions.
1 Like
I’m delighted to see that both Monty and your code are covered by the MIT License. Here’s hoping that any other folks that contribute code use the same (or at least compatible) licensing terms.
4 Likes
Yes , I initially started working on it before TBT , but as i was building it , Numenta made the announcement of TBT and things started making more sense to me to incorporate it to my project as well , though there are core functional requirement that are still conflicting , like for instance TBT says one cortical column that has completely learned an object has all the information it needs to manipulate that object using path integration in the object local reference frame, but how does that work in global reference frame with ego centric location where the agent needs to move from one place to another , The agent would also have to collaborate multiple motor senses to perform such actions efficiently which is a different problem but also plays into to the global reference frame concept , I always believed that global and local reference frames all were tracked under Hippocampal - Entorhinal complex but as per TBT it seems like Object centric frames are handled purely in the neo-cortex and global reference frames in non neo-cortical parts.
Ramy here, one of the research scientists at TBP
Very cool work! Thanks for sharing it with the community, @deric.pinto
To your point on egocentric vs. allocentric reference frames: we do not assume that any allocentric location (in the reference frame of the object) is stored outside the cortical column where the object model is learned. We assume the brain performs reference frame transformations between egocentric locations and allocentric locations, as well as between allocentric locations of different cortical columns to perform voting. We speculated that the thalamus would be a good place for learning these transformations, but this is still an in-progress research topic. The point is, while traditional grid cells and place cells in the HC-EC complex are helping an agent navigate an environment (in the environment’s reference frame), a similar mechanism in the cortical column is helping the sensor navigate in the object’s reference frame.
To your point on burst prevention: during matching, Monty can accumulate evidence on different objects (and hypotheses) at the same time. So, for example, it can accumulate evidence for an apple, but later switches to a pear if it sees more sensory evidence for a pear. After recognition, it will go into an exploratory phase to improve the recognized object’s model and prevent sensory observations from changing Monty’s decision. If I understand burst prevention correctly, I believe the switch from matching to exploration in Monty would be analogous to the burst prevention approach you took.
I liked the demo very much, and thought I’d suggest some more cool experiments:
- What happens when you add some noise to the apple image only during inference? I suspect the sparsity of SDRs would make it very tolerant to noise, but how much can it tolerate?
- Can the agent start from a different location during inference? Would the grid cells re-anchor in the apple’s reference frame as Hentul recognizes the apple?
4 Likes