HTM-scheme can now run some of the experiments reported in the draft paper Untangling Sequences: Behavior vs. External Causes (Ahmad & Hawkins 2017); example output :
The core algorithm code in HTM-scheme is a direct translation from htmresearch apical_tiebreak_temporal_memory.py and column_pooler.py, with the aim of reproducing the Numenta algorithms exactly. No external libraries are used – sparse matrices are replaced by scheme vectors with a compact synapse representation (slower, but 4 bytes/synapse). Multiple cortical column processing as well as multiple layers can be constructed, so the combined_sequences.ss project can also reproduce the experiments reported in figure 3 of the “Columns paper”.
[plot edited 11/1/18]
Wow, this is really cool! I know you’ve posted your work on the forum before, but I did not realize at the time that this may be the first LISP HTM? Is that right?
Yes (?) Scheme is a Lisp descendant, simpler but more systematic than Common Lisp. HTM-scheme is pure Scheme (no low-level code or non-standard libraries). The algorithm code is not idiomatic Scheme, because it’s modelled on Numenta python code using a similar breakdown into functions with similar function and variable names (if reading it, it’s best to have the corresponding python open alongside). The experiment computation was run in Chez Scheme for its compiler, with results transferred to Racket for its plot package.
(Adding plots of an HTM-scheme replication of figure 3B/C from the “Columns paper”)
B One cortical column C Three cortical columns
(produced with the combined_sequences.ss code, which now multi-threads for parallel computation of cortical columns )
(plot edited 11/4/18)