FeedForward neural computation of a maximum
To implement HMAX (and many other algorithms), we need to compute the maximum across a set of inputs. For example, in the HMAX connections between S1 and C1, we need to take the output of 32 identically oriented gabor filters at different locations and scales (S1 cells) to generate a spatialinvariant and scaleinvariant representation of that oriented gabor at the C1 level.
In computer vision applications, this maximum is simply computed. However, it is unclear how real neurons can perform this operation. Many suggestions exist, including using shunting inhibition and winnertakeall recurrent circuits to allow the system to stabilize at a particular maximum.
In this project, we present an alternate approach that is purely feedforward and uses standard LIF neurons. This is meant to demonstrate that the maximum can be computed without postulating extra neural complexity.
The basic idea is to use the NEF to solve for the set of linear connection weights that will approximate the maximum function. To do this, we consider a set of 2250 highly heterogeneous S1 neurons, each one with a gaborshaped receptive field at a random location and orientation (tiling a 30x30 input space). As is realistic, these neurons have widely varying gains and background firing rates. Given this input, we can consider a single C1 cell that should be tuned to respond to a gabor at any location across the upperleft corner of the input space. Traditionally, this would be done by directly connecting it to the S1 cells with that same gabor. Instead, here we allow it to connect to all of the S1 neurons, and use the NEF to solve for the set of connection weights that would best approximate the max computation from those few particular inputs.
To solve for these connection weights, we sampled over 50 natural images.
Results
The images below show that the max operation can be computed in a purely feedforward manner. The C1 cell responds strongly when the input is an oriented gabor in the upper left portion of the input space, and does not respond elsewhere.
Attachments

inside1.png
(69.1 KB)  added by tstewart
6 years ago.
response for input in topleft (inside C1 receptive field)

inside2.png
(69.0 KB)  added by tstewart
6 years ago.
response for input in topmiddle (inside C1 receptive field)

outside1.png
(68.8 KB)  added by tstewart
6 years ago.
response for input in topmiddle (outside C1 receptive field)

hmax.py
(2.1 KB)  added by tstewart
6 years ago.
source code

HmaxGabors.csv
(8.0 MB)  added by tstewart
6 years ago.
2250 gabors to use for S1

RandImages.csv
(7.1 MB)  added by tstewart
6 years ago.
natural images for training/optimization