Moving an internal discussion about this topic into the public mailing
list. See below for details and please continue this discussion here.
--
Matt Taylor
OS Community Flag-Bearer
Numenta
-------- Original Message --------
Subject: Re: New design for spatial pooler
Date: Sat, 13 Jul 2013 17:53:27 -0700
From: Subutai Ahmad <[email protected]>
To: Rahul Agarwal <[email protected]>, Scott Purdy
<[email protected]>
CC: Gil Shotan <[email protected]>, Engineering
<[email protected]>
I'm a bit confused here. My understanding was also similar to Scott's,
in that the base class would handle arbitrary topologies. A flat spatial
pooler is simply a parameter setting such that the receptive fields of
columns include the whole input space and there is no specific potential
field for the synapses. Global inhibition as we have it today would
automatically work since "local" includes everything. As such there is
no code for a "flat spatial pooler" to implement and (I believe) there
is no real efficiency loss. What would this class contain?
Similarly, what would the "topology spatial pooler" implement that is
different from the base class?
In addition, I don't think we should spend time implementing cloning
right now.
So, why do we need more than one class right now??
-- Subutai
From: Rahul Agarwal <[email protected]
<mailto:[email protected]>>
Date: Friday, July 12, 2013 4:35 PM
To: Scott Purdy <[email protected] <mailto:[email protected]>>
Cc: Gil Shotan <[email protected]
<mailto:[email protected]>>, Engineering
<[email protected] <mailto:[email protected]>>
Subject: Re: New design for spatial pooler
Oh ok, then that was a misunderstanding I had.
If that is the case, however, then we should re-think where the
"CloningSpatialPooler" would fall in the hierarchy. I don't think the
cloning functionality is specific to vision use cases. It was a
technique for speeding up learning, and it could be used in multiple use
cases that have topology built in.
-Rahul
From: Scott Purdy <[email protected]
<mailto:[email protected]>>
Date: Friday, July 12, 2013 4:14 PM
To: Rahul Agarwal <[email protected]
<mailto:[email protected]>>
Cc: Gil Shotan <[email protected]
<mailto:[email protected]>>, Engineering
<[email protected] <mailto:[email protected]>>
Subject: Re: New design for spatial pooler
Rahul, my impression was that the "SpatialPooler" base class would be
designed for arbitrary topologies. Then "FlatSpatialPooler" would
specifically implement our current topology and "VisionSpatialPooler"
would have a 2D topology and potentially other vision-specific changes.
On Fri, Jul 12, 2013 at 3:48 PM, Rahul Agarwal
<[email protected] <mailto:[email protected]>> wrote:
Gil,
That breakdown looks good. The only suggestion I would have would be
to rename the "VisionSpatialPooler" to the "TopologySpatialPooler".
This would more accurate reflect the real difference between it and
the FlatSpatialPooler, and make it clear that it's uses are not
restricted to vision use cases.
-Rahul
From: Gil Shotan <[email protected]
<mailto:[email protected]>>
Date: Friday, July 12, 2013 10:32 AM
To: Engineering <[email protected]
<mailto:[email protected]>>
Subject: New design for spatial pooler
Hey Guys,
For those of you who are interested, here is the design I came up
with for the spatial pooler (see image attached). Basically there
will be one common ancestor class called SpatialPooler that will
handle the implementation. It will handle all the calls to the
Sparse Matrix functions.
The FlatSpatialPooler will include only the bare functionality that
we currently use, I.e. No topology and global inhibition.
The VisionSpatialPooler will include local inhibition, a 2D
topology, Gaussian-initialized permanence option, etc.
The ClonedVisionSpatialPooler will include cloning functionality.
This design will tease apart all these separate functionalities,
while under the hood use a fast and efficient implementation using a
sparse matrix. It would also allow us to change the underlying
implementation (the SpatialPooler class) without affecting the
public interface exposed through the FlatSpatialPooler class.
If you have any questions or comments please send them my way!
Gil.
_______________________________________________
nupic mailing list
[email protected]
http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org