背景
Population Vector Algorithm(PVA)是运动神经解码领域很常见的一种解码方法。主要是基于运动神经学领域的一个发现:神经元的发放率和当前的运动方向之间存在余弦调制的关系,即tuning curve[1]。基于这一简单的线性关系,于是有了PVA算法。
算法推导:
- 信号预处理 这里的算法推导主要针对神经元集群解码,因为PVA的主要应用还是在神经元解码中 首先,采集到的spike信号是以发放次数的方式存储的,这里需要先转换成发放率的形式,即: fr[n]=spk[n]Δt(1)fr[n]=\frac{spk[n]}{\Delta t} \tag{1}fr[n]=Δtspk[n](1)
- 其中,fr[n]fr[n]fr[n]表示nnn时刻神经元的发放率,Δt\Delta tΔt表示一个bin的长度,通常的取值为20ms,30ms,50ms,1000ms等。spk[n]spk[n]spk[n]表示神经元在第nnn个bin中发放的次数。 然后,对发放率做一个FIR滤波,主要目的是平滑发放率曲线,计算公式如下:
s[n]=∑i=1W−1fr[n−i]h[i](2)s[n]=\sum_{i=1}^{W-1}{fr[n-i]h[i]} \tag{2}s[n]=i=1∑W−1fr[n−i]h[i](2)
其中,h[i]h[i]h[i]表示滤波器的卷积函数,可以根据需求选取,WWW表示滤波器的阶数,可以根据实际需要选择。
PVA算法的提出,主要是根据实验中观察到的现象。在猴子将手臂移动向不同的方向时,不同的神经元发放的率产生了变化,我们由此假设,神经元的发放率跟运动方向是有关系的,所以我们想到,用余弦曲线的方式,去拟合神经元的发放率与运动方向之间的关系。首先,我们假设每个神经元都有一个自己的偏好方向θPD\theta_{PD}θPD,假设此时,猴子手臂的运动方向为θ\thetaθ,那么此时神经元的发放率为: f=m∗cos(θ−θPD)+b0(3)f=m*cos(\theta-\theta_{PD})+b_0 \tag{3}f=m∗cos(θ−θPD)+b0(3)
其中,mmm为表征神经元活泼性的参数,即有的神经元可能表征的偏好方向一样,但是在偏好方向上的发放率变化是不一样的。