This page describes one of the possible project options for assignment 2; please read the general project description first before looking at this specific project option.
Nearly all long-range (e.g. centimeter) connections in the brain are excitatory, including those from the eye to the LGN, and from the LGN to V1. However, in all three of these regions there are local inhibitory cells, and the long-range excitatory projections have been found to target both inhibitory and excitatory cells in V1. The inhibitory cells in turn connect to other local cells, thus implementing disynaptic inhibition. This "feedforward inhibition" has not been studied nearly as well as feedforward excitation, and it is not yet clear how important it is for visual function. Some researchers have suggested that feedforward inhibition works in a "push/pull" configuration with feedforward excitation, with complementary receptive field shapes and opposite signs that can help achieve higher selectivity and contrast-invariant tuning. For instance, with only feedforward excitation, a cell may be excited by ON cells in part of the RF, and by OFF cells in the other part of the RF. In a push/pull configuration, the cell would be excited by ON cell activation and inhibited by OFF cell activation in that part of the RF, and vice versa for the other part. For more background, see the CMVC book section 17.1.2, Troyer, et al. J. Neurosci (1989), Kayser and Miller (2002), or hopefully some more recent papers as well.
In GCAL and LISSOM, the RGC/LGN cells (assumed primarily to be constructed in the retina) are hardwired to a Difference of Gaussians shape, which effectively gives them feedforward inhibition (as either the center or the surround has negative weights). But the cells that have plasticity currently include only feedforward excitation, because the Hebbian rule alone would not develop suitable push/pull weights -- using Hebbian learning on a single pair of activity patterns, the "pull" weights would simply be a copy of the "push" weights, while they need to be complementary to have a useful push/pull effect.
Hebb (1949) did not discuss inhibitory cells, and various
researchers have proposed different "anti-Hebbian" learning rules.
Some researchers call the inhibitory learning rule in LISSOM and GCAL
"anti-Hebbian", but we argue that it makes more sense to consider it
truly Hebbian, because neurons that covary still get a larger
(inhibitory) weight magnitude in those models. Here we will instead
consider a learning rule to be anti-Hebbian if correlated activities
lead to weaker weights. I've now added a new learning
function in topo/learningfn/__init__.py
AntiHebbian
, which is identical to Hebbian apart from the
sign of the weight change. This function isn't highly optimized like
the standard Hebbian one we use elsewhere, but that shouldn't much
matter since the learning step is only a small fraction of the
computation time.
There is also now an example model using this rule, in
/group/teaching/cnv/topographica/pushpull.ty
, and an
example notebook in
/group/teaching/cnv/topographica/pushpull.ipynb
.
The output of this notebook is temporarily available
here.
The difference between pushpull.ty
and
examples/gcal_oo_or.ty
(described in
Stevens
et al., 2013) is simply to make the cortex a bit
smaller to be faster):
$ diff pushpull.ty examples/gcal_oo_or.ty 53c70 < cortex_density=param.Number(default=30.0,bounds=(0,None), > cortex_density=param.Number(default=48.0,bounds=(0,None),and to add two new projections:
63,65d79 < anti_strength=param.Number(default=0.0,bounds=(0.0,None),doc=""" < Overall strength of the anti-Hebbian projections to V1."""), < 192,212d205 < < topo.sim.connect( < 'LGNOn','V1',delay=0.05,strength=-1.0*p.anti_strength,name='LGNOnAntiAfferent', < dest_port=('Activity','JointNormalize','AntiAfferent'), < connection_type=projection.CFProjection,learning_rate=p.aff_lr, < nominal_bounds_template=sheet.BoundingBox(radius=0.27083), < weights_generator=pattern.random.GaussianCloud(gaussian_size=2*0.27083), < weights_output_fns=[transferfn.optimized.CFPOF_DivisiveNormalizeL1()], < learning_fn=learningfn.projfn.CFPLF_Plugin(single_cf_fn=learningfn.AntiHebbian())) < < < topo.sim.connect( < 'LGNOff','V1',delay=0.05,strength=-1.0*p.anti_strength,name='LGNOffAntiAfferent', < dest_port=('Activity','JointNormalize','AntiAfferent'), < connection_type=projection.CFProjection,learning_rate=p.aff_lr, < nominal_bounds_template=sheet.BoundingBox(radius=0.27083), < weights_generator=pattern.random.GaussianCloud(gaussian_size=2*0.27083), < weights_output_fns=[transferfn.optimized.CFPOF_DivisiveNormalizeL1()], < learning_fn=learningfn.projfn.CFPLF_Plugin(single_cf_fn=learningfn.AntiHebbian()))
(be sure to do a diff yourself to make sure!).
Here the two new projections have been set to have zero strength
for now, so that they have no effect on self-organization. They
simply learn alongside the feedforward excitation, without affecting
how the network activates or develops. This allows you to see how
they work in the final organized network (by setting their strength to
a non-zero value), before worrying about how they might affect the
developing network. Note that p.anti_strength
is a local
variable, and only affects how those projections are defined;
pushpull.ipynb
shows how to change their strengths at any
later time.
Also note that I have joint-normalized these two projections
together, but separately from the feedforward excitation. That's my
best guess, but you can remove the dest_port
if you want
them independent from each other, or change AntiAfferent
to Afferent
if you want them normalized together with the
existing afferent excitatory projections.
pushpull.ipynb
already shows that the anti-Hebbian
rule does develop complementary RFs. It's up to you to figure out
what do to with those -- Do they do anything useful? Does this
mechanism seem plausible, based on a literature review? Does it make
clear predictions?
You'll first need to find a good balance of afferent strength and
inhibitory strength, starting with the possibilities listed in
pushpull.ipynb
-- pick a parameter regime where the
feedforward inhibition might have some effect (i.e., at least where it
is nonzero and the resulting activation is nonzero!).
Possible questions you could then consider investigating:
How does the feedforward inhibition affect self-organization?
You'll need to uncomment the bit labeled Force rebuild
to make sure you organize the network fully rather than loading the
previously saved snapshot, if you change anything that affects
development.
Does the feedforward inhibition do anything useful? How would you show that? Is it realistic? How would you show that? You could e.g. consider contrast invariant orientation tuning -- measure some tuning curves for regular GCAL, then see if they change when you enable feedforward inhibition. Can you now get contrast-invariant tuning without the LGN's gain control mechanism (which in GCAL is based on inhibition at the LGN level)?
How does this compare to Miller's simulations? Here we're using an extremely simple configuration, with a single population of V1 cells compared to his reciprocally connected separate inhibitory and excitatory cells. Is our approach basically still doing the same thing? Or do they make different predictions, or require different anatomy?
Can you take pushpull.ipynb
as an example, delete
the new projections, and instead build the LGN using this approach?
You could even delete V1 altogether and focus on whether you can
learn the LGN difference-of-Gaussian RF shapes, as in Linsker
(1989). Does this let you have a single architecture (same
activation function, same learning rules, etc.) for both the
LGN and V1? Is it plausible? What constraints do you have to put
in to get difference-of-Gaussian RFs out?
Are there other better ways of implementing push/pull connectivity beyond the simple anti-Hebbian rule suggested here?
Anything else scientifically interesting is also fine; it's completely open. You should be able to use HoloViews to visualize the results in any of these cases, as in the previous tutorials, and you may want to use Lancet if you are exploring parameter spaces.
Whether the results you find were as expected or not, you should think about your network, observe the patterns of activity and connectivity, and decide if you believe it is an appropriate model for what you're looking at. Basically, you're trying to (a) build a decent model that includes the mechanisms that at least might result in the phenomenon you're investigating, (b) determine whether it does so, and (c) analyse what those results depend on -- why they occur.
Whatever you end up investigating, in your report, you'll need to make it clear what question(s) you were addressing, demonstrate that the model was a reasonable first approach to investigating those questions, explain how the model's mechanisms relate to processes in animal V1, and explain why the results you observe (whether they match previous data or not) occur. Once you're ready, you can report and submit your results as outlined in the general project description.
Last update: assignment2pushpull.html,v 1.2 2015/03/05 11:16:58 jbednar Exp
Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk Please contact our webadmin with any comments or corrections. Logging and Cookies Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh |