I’m having trouble with my implementation of Temporal Memory and I’d like to get some feedback on how to best approach this issue. My example below explains the problem I’m running into, where the first run-through of temporal memory has no previous winner cells, which seems to cause an inefficient sequence recognition issue. My example:
Pattern “A” inputted. Spatial Pooler returns activate column 0. Column has no dendrite segments so it bursts. No matching dendrite segments so cell with least segments chosen at random becomes winner cell, let’s say cell 0. No previous winner cells so no matching segments added.
Pattern "A"
winner cell: [0, 0]
matching segments: []
Pattern “B” inputted. Pooler returns activate column 1. Column has no dendrite segments so it bursts. No matching dendrite segments so cell with least segments chosen at random becomes winner cell, let’s say cell 0. Matching segment added with connections to previous winner cells.
Pattern "B"
winner cell: [1, 0]
matching segments: [ [0, 0] ]
Pattern “A” inputted. Spatial Pooler returns activate column 0. Column has no dendrite segments so it bursts. No matching dendrite segments so cell with least segments chosen at random becomes winner cell, let’s say it’s different from the first run and is cell 1. Matching segment added with connections to previous winner cells.
Pattern "A"
winner cell: [0, 1]
matching segments: [ [1, 0] ]
Pattern “B” inputted. Spatial Pooler returns activate column 1. Column has dendrite segment, but it doesn’t activate with previous cells. Therefore, cell with least segments chosen at random becomes winner cell, let’s say cell 2. Matching segment added with connections to previous winner cells.
Pattern "B"
winner cell: [1, 0]
matching segments: [ [0, 0], [0, 1] ]
…
continues on until all cells in column 0 are handled by column 1’s matching segments.
Am I missing something in the NuPIC algorithms which alleviates this? My only solution that I’ve found is to make all cells in a column winner cells if there’s no previous winner cell, but this doesn’t seem like an elegant solution either…
I’d appreciate the help!
Dave