SNN系列|编码篇(1)频率编码

Frequency Coding

生物系统中触觉、听觉系统等都有实验表明,神经元的脉冲发放频率与外界刺激成正比,但是有饱和值。生物神经元脉冲一般1~2ms,因此,在编码过程中一般不超过1KHz。

生物能够做到快速识别信息,投射到视网膜接收器上的图像没几毫秒就发生一次变化,而这种编码方法必须要完全运行一整个时间窗才能读出编码信息,这显然是很不方便的。尽管该方法没有考虑时序信息,但因为其简单、易操作,仍然是最常用的方法。

  • 基于脉冲计数的频率编码

SNN系列|编码篇(1)频率编码_第1张图片

该方法将实值在单个神经元上进行编码,保证时间窗内的脉冲发放数与实值相对应。但受脉冲本身特性影响,其脉冲发放频率存在上限。

很容易想到的是,在时长T内等间隔分布脉冲,这样不仅简单而且鲁棒性好,在间隔内的脉冲可以很容易判断为噪声。

  • 基于脉冲密度的频率编码

SNN系列|编码篇(1)频率编码_第2张图片
该方法是解码方法,重复运行多次,对运行次数取平均。一般地, Δ t \Delta t Δt取1ms到几毫秒。

  • 基于群体活动的频率编码

SNN系列|编码篇(1)频率编码_第3张图片

该方法将实值在N个神经元上进行编码,保证时间窗内的所有神经元的脉冲发放数与实值相对应。该方法与基于脉冲计数的方法相比,可以将时间窗设置的非常小,因此可以对动态变化的刺激进行快速响应。但是,这要求群体内的神经元具有同一性,这在生物上是不太现实的。

泊松编码

  • 泊松分布

单位时间内,事物平均发生m次,每次事件发生互相独立,且概率相等,求单位时间内发生k次的概率分布。泊松分布的参数 λ \lambda λ是单位时间内随机事件的平均发生次数。 泊松分布适合于描述单位时间内随机事件发生的次数,这正好与脉冲发放率相对应。
P ( X = k ) = λ k k ! e − λ P(X=k) = \frac{\lambda^k}{k!}e^{-\lambda} P(X=k)=k!λkeλ

对二维图像,持续时间T内,每个像素对应的输入神经元发放的脉冲个数成泊松分布,其中 k k k为激发脉冲的个数, λ \lambda λ为与像素值成正比的激发频率, t t t时间内未产生脉冲的概率为 e − λ t e^{-\lambda t} eλt

  • Brian2实现
input_groups[name+'e'] = b.PoissonGroup(n_input, 0)

'''
class PoissonGroup(Group, SpikeSource):
    '''
    Poisson spike source  
    Parameters
    ----------
    N : int
        Number of neurons
    rates : `Quantity`, str
        Single rate, array of rates of length N, or a string expression
        evaluating to a rate. This string expression will be evaluated at every
        time step, it can therefore be time-dependent (e.g. refer to a
        `TimedArray`).
    dt : `Quantity`, optional
        The time step to be used for the simulation. Cannot be combined with
        the `clock` argument.
    clock : `Clock`, optional
        The update clock to be used. If neither a clock, nor the `dt` argument
        is specified, the `defaultclock` will be used.
    when : str, optional
        When to run within a time step, defaults to the ``'thresholds'`` slot.
    order : int, optional
        The priority of of this group for operations occurring at the same time
        step and in the same scheduling slot. Defaults to 0.
    name : str, optional
        Unique name, or use poissongroup, poissongroup_1, etc.
    '''
'''

在仿真时长T内,每次循环都以脉冲发放率*dt(dt单位为秒)的概率确定是否发放脉冲,最终形成频率编码。

参考

[1] Spiking Neuron Model

[2] Spikes

你可能感兴趣的:(Spiking,Neuron,Network)