HTM theory clearly articulates the biological existence and computational utility of apical connections, yet these are absent from the nupic core - both absent from the core Temporal Memory, and (I believe) absent from the way the network API implements links. I have found in the numenta research code two temporal memory algorithms with apical inputs: this one, and this one. But I cannot find:
any projects/examples using these (or other) apical TMs
any “research code” which extends the network API to cater for apical connections.
Given the obvious importance of apical connections to HTM I am confused as to why code implementing apical connections does not seem to be used much, or discussed much in the HTM forum - am I missing something?
You should take a look at the review paper discussed in this thread:
As well as some of the other papers by Larkum, who has spent a considerable amount of time researching apical dendrites. Larkum finds that apical dendrites are not simply basal dendrite which point in a different direction, there are some crucial differences…
Thanks for your reply but it does not appear to address the main thrust of my question which was about executable nupic research code that implements apical feedback - are people in your community using it? What is their experience - where are they talking about it?
PS I am also not clear where the paragraph you have quoted (entitled feedback) comes from or what it is talking about … it sounds like a description of an implemented algorithm - if so where is the code for it?
I followed your “columns paper” link. As far as I can tell the code referenced there is a simulation, not actually an implementation of a HTM with apical feedback?
PS In that paper (and the video), the 3 upper regions which hold encodings of different objects that might be sensed are shown to communicate laterally to decide which is the most likely object given the multiplicity (union) of predictions from each column (connected to each finger). How does this lateral communication work (a vote?) and is such a mechanism actually implemented in any TM python classes (other than as a simulation)?
Many thanks that helps a lot. Good to see that you are using complex networks that include apical connections.
I can see now that the linking mechanism does cater for apical links as per the snippet below:
# Link L2 feedback to L4
network.link(L2Name, L4Name, "UniformLink", "",
srcOutput="feedForwardOutput", destInput="apicalInput",
propagationDelay=1)
And I can see that the layer 4 TM is defined as being one with apical inputs:
196 "L4RegionType": "py.ApicalTMPairRegion",
I get it now. Thanks.
However I have not yet fathomed out whether this code includes the answer to my other question, which was (quote): “… in that paper (and the video), the 3 upper regions which hold encodings of different objects that might be sensed are shown to communicate laterally to decide which is the most likely object given the multiplicity (union) of predictions from each column (connected to each finger). How does this lateral communication work (a vote?) and is such a mechanism actually implemented in any TM python classes”