Conflict monitoring

I am currently working on Media Prefrontal Cortex modeling in the decision-making process. I came across an article by T. Bekolay et al. “A spiking neural integrator model of the adaptive control of action by the medial prefrontal cortex”, however that model performs a different function (reaction-time task) and, moreover, the repository is not up-to-date (Python 2, old nengo etc). In my case, there are two alternatives as an input to the model and the final decision is made by the Basal Ganglia class (directly taken from nengo). However, I want to include in the model the population that will implement the ACC functions in the decision-making process, in particular - conflict monitoring. However, I cannot find in the nengo documentation or here on the forum how to simulate such a task. My first idea was to draw the difference between the alternatives - the smaller, the more active ACC is. Do any of you have an idea or source that I could inspire? Highlights in the context of nengo implementation? Thank you in advance for your help.

Hi @bartekkrol96, and welcome to the Nengo forums!

Your post sort of asks two questions:

  1. Is there any existing work that can inform your design process.
  2. How do you simulate tasks.

I’ll address each of these points separately.

Is there any existing work that can inform your design process?
Like all research topics, the task you are describing (conflict monitoring) is pretty niche, so I doubt you’ll be able to find any publications of Nengo models doing said task. There are, however, more publications describing decision making tasks (in Nengo) in general. I’d advise you to check out the CNRG lab’s publications page for these publications. The publications by Terrance Stewart, Peter Duggins, Peter Blouw, and myself (Xuan Choo) may be of interest to you.

While most of these publications don’t include the Nengo model, part of the Nengo design philosophy is being able to take a high-level model description (e.g., a block diagram) and turning that into a neural network through the use of reusable components (sub-networks – both built-in and user designed).

In addition to the “vanilla” Nengo, you may want to look into NengoSPA, a library that adds on semantic / symbolic integration into the regular Nengo networks. This library is useful for more “cognitive” models where the models are intended to perform tasks involving concepts (i.e., ideas) rather than just real-valued signals (i.e., input currents and waveforms).

How do you simulate tasks?
This question is typically left up to the model designer to answer. In Nengo, models are typically set up to receive some sort of input(s) and produce some output(s). These inputs and outputs can be in the form of signals, or, using the NengoSPA library, symbolic concepts. By combining multiple networks (e.g., one for vision processing, and one for motor control), Nengo networks can even be constructed to take as input a visual image (presented to the visual system as signals), and control an arm (using signals as control values) as an output. This is what was done with the Spaun and Spaun2 models.

Because networks within Nengo models typically have well defined inputs and outputs (e.g., the output of a “Product” network would be the product of the network inputs), it’s typically not necessary to build models requiring full end-to-end (e.g., vision-to-motor) information processing. Rather, the model designer can make assumptions as to what inputs the model can receive, and make assumptions on how the model outputs are interpreted by “the rest of the brain”. If you look at the NengoSPA examples, this is the case in the more advanced examples. For those examples, the model assumes some area of the brain contains some conceptual information, which is processed by the model that then updates other brain areas with changes.

Designing a model from scratch is not an easy task. My advice to you is to start small. Identify a simpler version of the task you are trying to replicate (e.g., get the model to decide which of two values is bigger?), then slowly add complexity when the desired performance for the simpler model is achieved. This is the process I used to design the Spaun models. E.g.,

  • Get the visual system to work
  • Get vision-to-motor (one visual stimulus mapped to one motor command) to work
  • Add memory to the vision-motor system (get the system to remember the visual system before generating the motor command)
  • Add a decision making system to enable the system to do more tasks
  • And so forth…

Hello @bartekkrol96!

My PhD is focused on decision making, and a few years ago I put together a model of DM that involved the interaction of cortex, subcortical structures, and the basal ganglia. If you’d like to check out the paper, it’s here, and the code can be found here. Our model is focused around “conflict monitoring” in the form of adapting the behavior of the network based on signals representing the “uncertainty” between choice alternatives and the “urgency” with which a decision must be made. Though we don’t explicitly model the ACC in our network, several populations which we label OFC and IFC are involved: the extent to which any population in this kind of model should be labeled as particular brain areas is up for debate, so perhaps the ACC would be a better label.

Happy to chat about this project, or what you’re working on :slight_smile:
Peter

Dear @xchoo,

first of all, I would like to thank you very much for your comprehensive answer.

  1. Of course, I will be happy to get to know the publications you suggest. Yes, you are right - everything indicates that I have hit a niche where I will not find a direct answer to the question asked, but I will try to adopt the strategy you are talking about (path from diagram to model). However, it is a pity that there are so few public models written in line with the Nengo philosophy!

  2. Of course, I have already familiarized myself with the Spaun and Spaun2 projects, and I am also supplementing my knowledge with the book by C. Eliasmith “How to Build a Brain” and you may be right that I took on too much of a topic at once. I will try to break down the stages into smaller pieces, just like you did when designing Spaun! I think I’m even on the right track - I have successfully implemented some of the tasks you mentioned.

Thank you very much for your help once again. Your answer lifted my spirits :slight_smile:

P.S. I think the second part of your answer should be found somewhere in the nengo documentation - I missed it when I started!

1 Like

Hello @psipeter!

Thank you very much for your answer! I will surprise you but I know this model very well :smiley: my PhD supervisor is one of the co-authors :wink: Your code allowed me to enter the world of nengo as a python developer with more ML and DL background. One of the elements in my decision making model will be the conflict detection which I got a bit stuck on and that’s why I ended up on the forum.

I am happy to contact you by e-mail as soon as I clarify potential questions: D

Bartek

I think it’s not relevant to this discussion, but if anyone does want an up-to-date version of the double integrator model from that mPFC paper, it’s here in the reusable network docs.

1 Like