The Hierarchical Temporal Memory Cortical Learning Algorithm (HTM CLA) is an algorithm inspired by the biological functioning of the neocortex, which combines spatial pattern recognition and temporal sequence learning. It organizes neurons in layers of column-like units built from many neurons such that the units are connected into structures called regions (areas). Layers can be hierarchically organized and can further be connected into more complex networks, which would allow to implement higher cognitive capabilities like invariant representations. However, a complex topology and a potentially high number of neurons would require more computing power than a single machine even with multiple cores or a GPU could provide. This paper aims to improve the HTM CLA by enabling it to run on multiple nodes in a highly distributed system of processors; to achieve this we use the Actor Programming Model. The proposed concept also makes use of existing cloud and server less technology and it enables easy setup and operation of cortical algorithms in a distributed environment. The proposed model is based on a mathematical theory and computation model, which targets massive concurrency. Using this model drives different reasoning about concurrent execution and should enable flexible distribution of cortical computation logic across multiple physical nodes.
This work is the first one about the parallel HTM Spatial Pooler on multiple nodes with named computational model. With the increasing popularity of cloud computing and serverless architectures, this work is the first step towards proposing interconnected independent HTM CLA units in an elastic cognitive network. Thereby it can provide an alternative to deep neuronal networks, with theoretically unlimited scale in a distributed cloud environment. This paper specifically targets the redesign of a single Spatial Pooler unit.
The cluster is built with the lightweight Actor Model framework based on top of the Azure Service Bus technology.
Paper URL: https://aircconline.com/csit/abstract/v10n6/csit100606.html
Spatial Pooler in C#/.NET Core: https://github.com/ddobric/neocortexapi