Hot questions for Using Neural networks in neuron simulator

Question:

AND logic and OR logic can be solved by just 1 neuron. However, XOR logic needs a neural network of 3 neurons in 2 layers:

(neuron1)\
          \
           +----- (neuron3)
          /
(neuron2)/

Consider this form of neural network:

(neuron1) ------- (neuron2)

Is this kind of neural network with just 2 neurons connecting to each other able to solve anything better than just 1 single neuron?


Answer:

2 neurons can be more powerful than 1 neuron.

For example consider two neurons with the standard rectifier nonlinearity max(0,x).

Let the input be x.

The first neuron computes y=max(0,x)

The second neuron computes z=max(0,1-y)

The picture plots y (green),1-y (red),z (blue) against x.

This shows how two neurons both using a simple rectifier can construct a more complicated saturating nonlinearity (represented by the blue line).

There is no way to produce the blue line with a single rectifying neuron operating on a single output (because all such outputs have at most two linear segments, and our z output has three linear segments).

Question:

In NEURON simulator, is there an easier way to list properties of a section other than iterating over each property individually?


Answer:

If you are using the NEURON gui, you could also find section properties in the NEURON's control menu:

Tools-> Model View

This's will open a ModelView window which has section and segment details such as:

  • Type of cells: real cells/ artificial cells
  • NetCon objects
  • LinearMechanisms objects
  • Density Mechanisms
  • Point Processes

If you click on each property, a drop-down menu appears showing the details of the property selected

You could also view the structure of the model if you click on the cell type (real/artificial cells)

Question:

In what order do the commands in NEURON .MOD/NMODL file sections get executed? Specifically, within these blocks: DERIVATIVE, BREAKPOINT and NET_RECEIVE.


Answer:

For every time-step, the order of execution is as follows:

  1. NET_RECEIVE: If there is net_send() an event that targets this mechanism, lines here are executed first. Skipped otherwise.
  2. Lines in BREAKPOINT: The SOLVE ... METHOD line is ignored. All lines after SOLVE are executed. With a printf() statement, you would see two calls. However, one of the calls does not actually set any state variables. It is used to compute the derivatives.
  3. Finally, the DERIVATIVE block: The values for the derivatives (X' = ...) are computed. Keep in mind, to get the value by which the state variable actually changes, multiply by dt.