Как сопоставить «результат логического пика» с «входным текущим значением с плавающей запятой» в пиковой нейронной сети? - PullRequest
0 голосов
/ 19 октября 2018

Мой вопрос касается всплеска нейронных сетей.Вход типичного всплескового нейрона обычно представляет собой некоторое значение с плавающей запятой, представляющее его ток притока, обычно выражаемый в мА или аналогичных единицах, как в следующем простом примере:

static const float 
      dt = 1.0/1000,  // sampling period
      gL = 0.999,     // leak conductance
      vT = 30.0;      // spiking voltage threshold
float mV = 0;         // membrane voltage

// Leaky integrate-and-fire neuron model step
bool step_lif_neuron(float I) { // given input current "I", returns "true" if neuron had spiked
    mV += (I - mV*gL)*dt;
    if( mV > vT ) { // reset? heaviside function is non-differentiable and discontinuous
        mV = 0;
        return true;
    }
    return false;
}

Это хорошо, если его цельопределить отношение входного изображения к какому-либо классу или включить или выключить двигатель или лампу. Но здесь возникает главная проблема: модель не описывает взаимосвязь нейронов.Мы не можем подключить нейрон к следующему нейрону, как это обычно происходит внутри мозга.

Как один преобразовывает bool isSpiked значение предшествующего нейрона в float I входное значение следующего нейрона?

1 Ответ

0 голосов
/ 22 октября 2018

Это не типичный вопрос SO, но вот ответ.

Конечно, ваша модель не отвечает на ваш вопрос, так как это модель нейрона.Для соединений (синапсов в мозге или где-либо еще) вам нужна модель для синапсов.В биологии пресинаптический скачок (то есть «входной скачок» в синапс) вызывает зависящее от времени изменение проводимости постсинаптической мембраны.Форма этого изменения проводимости в биологическом приближении имеет так называемую двойную экспоненциальную форму:

image

where the presynaptic spike occured at time 0.

This conductance change leads to a (time-dependent) current into the postsynaptic neuron (i.e. the neuron receiving the input). For simplicity, many models model the input current directly. The common shapes are

  • double exponential (realistic)
  • alpha (similar to double exponential)
  • exponential (simpler and still captures the most important property)
  • rectangular (simpler, and convenient for theoretical models)
  • delta shaped (simplest, just a single pulse for one time step).

Here's a comparison scaled for same height at max:

image

and scaled for same overall current (so integral over the time course):

image

So how does a spike lead to an input current in another neuron in spiking NN models?

Assuming you model currents directly, you need to make a choice of the time course of the current which you want to use in your model. Then, every time a neuron spikes, you inject a current of the shape you chose into the connected neuron.

As an example, using exponential currents: the postsynaptic neuron has a variable I_syn which gives the synaptic input, each time a presynaptic neuron spikes, it is incremented by the weight of the connection, in all other time steps it decays exponentially with time constant of the synapse (the decay of the exponential).

Pseudocode:

// processing at time step t
I_syn *= exp(-delta_t / tau_synapse)  // delta_t is your simulation time step

foreach presynaptic_spike of neuron j:
   I_syn += weight_of_connection(j)

The topic isn't answered with a plot or two, or with a single equation. I just wanted to point out the main concepts. You can find more details the Compuational Neuroscience textbook of your choice, e.g. in Нейрональная динамика Герстнера (доступна на веб-сайте) .

...