Winner-take-all (WTA) mechanisms are an important component of many cognitive models. For example, they are often used to decide between multiple choices or to selectively direct attention. Here we compare two biologically plausible, spiking neural WTA mechanisms. We first provide a novel spiking implementation of the well-known leaky, competing accumulator (LCA) model, by mapping the dynamics onto a population-level representation. We then propose a two-layer spiking independent accumulator (IA) model, and compare its performance against the LCA network on a variety of WTA benchmarks. Our findings suggest that while the LCA network can rapidly adapt to new winners, the IA network is better suited for stable decision making in the presence of noise.
- See
doc/paper
for the uncompiled LaTeX paper. - See
doc/supplementary/supplementary.pdf
for the supplementary analysis PDF.
- See
cogsci17_decide/networks.py
for the network implementations. - See
cogsci17_decide/trials.py
for the benchmark implementations.
- Data presented in the paper is stored in the file
data/decision.npz
. - Data with number of choices increased to 20 is stored in the file
data/more_d.npz
Data files can be loaded with numpy.load
.
The notebooks
directory contains Jupyter notebooks with
source code for data analysis and plotting.
- Clone this repository:
git clone https://github.com/ctn-waterloo/cogsci17-decide.git
- Install as Python package:
cd cogsci17-decide && pip install .
Single simulations can be run by invoking pytry cogsci_decide/trial.py
. There
are various command line arguments to set network parameters. For example,
pytry cogsci_decide/trial.py --network IA
runs the independent accumulator
network instead of the leaky, competing accumulator model. A full list of
possible arguments can be printed with pytry cogsci_decide/trial.py --help
.
The networks can be run in Nengo GUI to inspect and plot different neural
populations with the --gui
option. Note that this requires
Nengo GUI to be installed.
- To run simulations in batch to collect data, install Psyrun (commit 659307a3).
psy-doit decision
will generate the data presented in the paper;psy-doit more_d
will generate data with 20 dimensions instead of 10. Use the-n <number>
flag to specify how many CPU cores to use. This can cut down the simulation time significantly (still expect a few hours on a modern computer).- Afterwards, data can be found in
psy-work/decision/result.npz
orpsy-work/more_d/result.npz
.
Version numbers state the versions used to generate the data, newer and older versions might work as well, but have not been tested.
- Jupyter
- jupyter 1.0.0
- jupyter-client 4.4.0
- jupyter-core 4.2.1
- notebook 4.2.3
- Matplotlib 1.5.2
- Pandas 0.18.1
- Seaborn 0.7.1