I have not been able to wrap my brain around this.

If I create an ensemble_A, and don’t give it any input, it’s default value is 0, and the neurons in the assembly whose tuning curves tuned to 0 will fire. However, if I then create an inhibitory assembly and connect it to ensemble_A with each neuron within A receiving a negative transform, none of the neurons within A will fire, yet it’s value is still 0 and not NA; this suggesting that there is a 2:1 mapping from neuronal state to value for values around 0 ??

Obviously the same is true of state objects. Without inhibiting the state object, input of ‘0’ as opposed to ‘CIRCLE’ elicits neurons tuned to 0 to fire. Yet if I inhibit all of the neurons within the state object from firing, the value of each dimension is still around 0.

There are many ways to represent zero, and many ways to represent any value, actually.

The decoders are a matrix that maps from neuron space to decoded space (or “state” space). The nullspace of the decoders is the space of all values that will map to zero. For a one-dimensional ensemble, the dimensionality of this space is actually the number of neurons minus one. So if you’ve got a 100-neuron ensemble, there’s a 99-dimensional space of neuron values that all map to zero.

This is similar for other values, too (zero is not special). One way to prove this to yourself is if you’ve got some neuron activities that decode to zero, increasing the activity of any neuron with a positive decoder will increase the decoded value. If you increase it enough, you can hit any positive value you want. And since there are infinite combinations that decode to zero, you can do this with any of them, making a lot of ways to get any value.

In practice, though, an ensemble typically only represents each value in one way. This is because we control the activities of neurons collectively through the encoders. Unless you do something more interesting like inhibiting all the neurons, like you suggested.