SNN系列|编码篇(2)时序编码


Tempotral Coding

选择编码方法是要根据编码对象以及模型如何处理编码信息进行选择,如下是一种时序信息的编码对比:

Threshold-based encoding

又称为tempotral contrast,该方法可以用于编解码一段序列,当差值超过阈值时发放脉冲,阈值是根据编码的序列自适应变化的。

使用该编码方法时,实值序列最好是沿时间变化的,因为在根据差分决定是否发放脉冲后,脉冲的顺序与差分顺序有关。

Time-to-first spike coding

该编码方法将信息用神经元首次脉冲的发放时间来表示,假设神经元只产生一个脉冲,产生脉冲后神经元处于抑制状态直到下一个刺激到来,产生脉冲的时刻与模拟量的值成正比,这表明,在接收刺激后产生的第一个脉冲的时间包含了刺激的所有信息。

使用该编码方法的理论是有学者认为,大脑没有时间在每个进程中处理一个以上的脉冲,该方法能够解释视觉刺激快速编码与处理,但是由于每个神经元只能发放一个脉冲,限制了神经元的计算能力。

(对刺激强度进行解读的话,可以与注意力机制结合,将刺激强度与显著性结合而不是仅仅与像素强度。)

一种可行的方案是余弦平方时间编码

Fij=Tcos?2(pijpmax)
F_{ij} = T\cos ^2(\frac{p_{ij}}{p_{max}})

Fij?=Tcos2(pmax?pij??)

在此基础上,可以加上延迟差异,针对感受野距离设置延迟时间。

Rank order Coding

信息通过神经元之间发放脉冲的相对次序进行编码,而抛弃精确的时间信息,因为这样更容易实现。比如使用6个神经元进行编码,

C>E>D>A>BC>E>D>A>B

C>E>D>A>B

使用N个神经元进行编码,其信息容量为

log?2(N!)\log_2(N!)

log2?(N!)。

Population Rank Order Coding

详见GRF。

单个输入变量被编码成多个神经元的脉冲序列,这些神经元具有重叠的高斯感受野,按照其对应的值的大小决定脉冲发放顺序,值越大,脉冲发放时间越早。

Latency Coding

神经元发放脉冲的特性是脉冲的形式是固定的,只有数量和时间上的区别,接受越强的刺激,脉冲生成得越早,因此,可以使用单调递减函数将实值强度与脉冲发放时间的早晚相结合。

使用N个神经元在T时间内编码,其信息容量为

log?2(TN)\log_2(T^N)

log2?(TN)。

Phase Coding

相位编码的一般思路是,在大脑区域(例如theta(4-8Hz)或γ(40-80Hz)频带)内会发生一些背景振荡,并且各个神经元的尖峰时间相对于背景种群振荡编码某种类型的信息。

相位编码的最著名示例是海马体中的“相位进动”。大鼠海马中有神经元,称为“位置细胞”,仅在动物靠近特定的熟悉位置时才会发射。这些位置细胞的神经尖峰相对于海马背景theta振荡的时机编码了动物与该位置的物理距离。

脉冲相位编码的思想可以用于随时间变化的模拟量的编码,一个时间周期内的模拟量的值可以用一个脉冲时间表示,将所有时间周期连接起来得到的脉冲序列就可以表示整个时间过程中模拟量的变化。

Latency Phase Coding

见latency phase coding总结

BSA

使用有限脉冲响应滤波器,因此适合编码高频信号(待日后详看)

Step Forward Encoding

类似于threshold-based编码,设给定信号序列

S(t)S(t)

S(t),定义基准

B(t)B(t)

B(t),并令

B(1)=S(1)B(1)=S(1)

B(1)=S(1),如果

S(t1)>B(t1?1)+ThS(t_1)>B(t_1-1)+ Th

S(t1?)>B(t1??1)+Th,则发放正脉冲,并且

B(t1)=B(t1?1)+ThB(t_1)=B(t_1-1)+Th

B(t1?)=B(t1??1)+Th;如果

S(t1)<B(t1?1)?ThS(t_1)

S(t1?)B(t1)=B(t1?1)?ThB(t_1)=B(t_1-1)-Th

B(t1?)=B(t1??1)?Th,其他情况不发放脉冲,且

B(t1)=B(t1?1)B(t_1) = B(t_1-1)

B(t1?)=B(t1??1)。

Moving Window Spike Encoding

对上述方法的改进为

B(t)B(t)

B(t)定义为过去时间窗口T内的信号强度的均值。