Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Neurons to ensemble connections with interneurons #156

merged 1 commit into from
May 31, 2019


Copy link

@hunse hunse commented Dec 13, 2018

An alternative to #71.

In #71, I feel like I cheated, and specifically implemented neurons->ensemble connections that only have a scalar transform. In that case, the dimensionality of the post-ensemble has to be the same as the pre neurons.

In this PR, I do it in a more general way, by including interneurons in the case when we're connecting from neurons to ensemble. This allows us to put arbitrary transforms in there.

HOWEVER, I did find that for the case where we have neurons->ensemble connections of the first type, with scalar transforms, this new method does not work well. I think that's because each group of interneurons (i.e. each dimension in the interneurons population) is being driven only by one input neuron, so its input is very noisy and it just doesn't perform well. Furthermore, this would only work for small numbers of input neurons (less than 50 or so), since we use 20 interneurons to represent each dimension so for greater numbers of pre neurons we'd just run out of neurons on a single core for the interneurons.

Anyway, I feel like this is not a big limitation, since if you have the encoders for the post population, you can just do a neurons->neurons connection with the encoders as the transform to get behaviour (without interneurons) like I had implemented before. It can be a bit annoying to get the encoders, since essentially it means you have to generate them yourself at model creation time, but this isn't a huge burden.

Also, this is much simpler than #71 was, since there I had to allow for different encoders depending on whether we were connecting from interneurons (i.e. another ensemble) or neurons.

Copy link

Rebased this to current master.

Copy link

@drasmuss drasmuss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

These connections use decode neurons and work well for typical
neuron->ensemble connections that map from high-dimensional
neuron space to low-dimensional ensemble space.

- Added neurons->ensemble test. This test intentionally maps from
  high-dimensional (neuron) space to low-dimensional (ensemble) space
  to limit the number of decode neuron groups. Having a transform that
  maps to high dimensions (e.g. identity transform) does not work
  well, because we need an decode neuron population for each output
  dimension of the transform, and if each population is only
  receiving input from one pre neuron this is very noisy.
@drasmuss drasmuss merged commit b995a31 into master May 31, 2019
@drasmuss drasmuss deleted the neuron-ens-interneuron branch May 31, 2019 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet

Successfully merging this pull request may close these issues.

None yet

3 participants