After we understand the basic physiology of the neuron, we can look at ways to model networks of neurons. We will build a simple nervous system which simulates perception of heat and cold. It will also simulate the parlor trick in which a blindfolded person briefly touches a very cold object and reports a sensation of heat.
Neurotransmitters arrive at the depicted neuron from efferent axons. These neurotransmitters are either excitatory or inhibitory. The excitatory neurotransmitters tend to depolarize the neuron from its resting potential of around -70 millivolts. The inhibitory ones hyperpolarize the neuron. The cell body integrates all the depolarizing and hyperpolarizing impulses of the neurotransmitters. Once the electrical potential of the neuron falls above a threshold of around -40 or -50 millivolts, an action potential occurs. This action potential travels along the axon and results in the firing of a neurotransmitter at the end of the axon.
Chapter 8 of the Herod, Shonkwiler and Yeargers text explain in detail the mechanism involved in the creation of an action potential.
In[1]:=
Ena = 55;
Ek = -82;
El = -59;
gkbar = 24.34;
gnabar = 70.7;
gl = 0.3;
vrest = -70;
Cm = 0.001;
alphan[v_] :=
0.01*(10 - (v - vrest))/(Exp[0.1*(10 - (v - vrest))] - 1)
betan[v_] := 0.125*Exp[-(v - vrest)/80]
alpham[v_] :=
0.1*(25 - (v - vrest))/(Exp[0.1*(25 - (v - vrest))] - 1)
betam[v_] := 4*Exp[-(v - vrest)/18]
alphah[v_] := 0.07*Exp[-0.05*(v - vrest)]
betah[v_] := 1/(Exp[0.1*(30 - (v - vrest))] + 1)
pulse[t_] := -10*(Sign[t - 0.001] - Sign[t - .002])
In[2]:=
solution =
NDSolve[
{ v'[t] == -(gnabar*m[t]^3*h[t]*(v[t] - Ena) +
gkbar*n[t]^4*(v[t] - Ek) +
gl*(v[t] - El) + pulse[t])/Cm,
n'[t] == 1000*(alphan[v[t]]*(1 - n[t]) - betan[v[t]]*n[t]),
m'[t] == 1000*(alpham[v[t]]*(1 - m[t]) - betam[v[t]]*m[t]),
h'[t] == 1000*(alphah[v[t]]*(1 - h[t]) - betah[v[t]]*h[t]),
v[0] == vrest,
n[0] == 0.315,
m[0] == 0.042,
h[0] == 0.608
},
{v[t],n[t],m[t],h[t]},
{t,0,0.02},
MaxSteps->1000
]
Out[2]=
{{v[t] -> InterpolatingFunction[{0., 0.02}, <>][t], n[t] -> InterpolatingFunction[{0., 0.02}, <>][t], m[t] -> InterpolatingFunction[{0., 0.02}, <>][t], h[t] -> InterpolatingFunction[{0., 0.02}, <>][t]}}
In[3]:=
Plot[Evaluate[v[t] /. solution],
{t,0,.02},
GridLines->Automatic,
Frame->True,
PlotLabel->
FontForm[
"A Simulated Action Potential",{"Helvetica-Bold",20}
]
]
Out[4]=
-Graphics-
We will represent a neural network as a weighted, directed graph where the vertices are the neurons (TLUs), the edge weights are the values of the neurotransmitters, and the vertex weights are the threshhold values. For a first example, we c
[font = postscript; PICT; formatAsPICT; output; inactive; preserveAspect;
pictureLeft = 0; pictureWidth = 450; pictureHeight = 353; pictureID = 131]
In[5]:=
rho = 1;
Sigmoid[t_] := 1 / ( 1 + Exp[-t/rho])
Plot[Sigmoid[t],{t,-5,5}]
Out[6]=
-Graphics-
We can also view the threshhold of an individual neuron as a random variable with a Gaussian distribution. The probablility of the neuron firing then is the probablility that the potential is greater than this threshhold. The cumulative distribution
In[7]:=
Plot[
NIntegrate[
(1/Sqrt[Pi])*Exp[-x^2],
{x,-Infinity,t}
],
{t,-5,5}
]
Out[8]=
-Graphics-