How can we use population coding to pass data between populations of neurons?

So far we’ve looked at interpreting the activity of a population of neurons, such as decoding encoded values to an imaginary readout node. But neurons send their output to other neurons.

Suppose we want to encode the same value encoded in population . Can we just copy the neural activities? No, because and might have different numbers of neurons.

The correct approach is to decode the value from and then re-encode it using ‘s encoders.

Step by step transformation process

Encode into population

Decode from :

Re-encode into population :

where .

  • ,

(Optional) Decode from:

Application

The reason we connect populations of neurons is because connections can perform transformations on the data.

For example, given , we want to build a network that computes .

The decoder is trained by:

Low-Dimensional Bottleneck

Even though we can form a full connection matrix from the product , it is actually a low-rank matrix.

In the example above,

This might seem like a limitation, but it actually makes things more efficient.

How many FLOPs for AW?

How many FLOPs for ?

This is why using low-rank representations (like ) is not only compact but computationally efficient.