计算神经学–甲2–神经激活与神经响应

之前讨论了神经元的基本性质, 今天进入正题, 顺便说一下, 由于一章的内容较多, 因此一般在标题中以以天干来表示章节, 甲表示第一章, 乙表示第二章, 以此类推.
第一章主要讨论基本的神经编码模型, 也就是放电速率和脉冲统计.

神经元脉冲的探测技术.

在神经科学中, 最基本的也是最重要的就是动作电位(action potential), 而探测动作电位就是使用探针(eletrode)或者阵列探针(patch of eletrodes)插入神经元中来探测动作电位的技术.

探针是一根中空的玻璃针, 中间充满导电电解质, 一般在探测时放置在指定位置来进行探测.

根据神经元的解剖结构, 探针也一般放在不同的部位. 同时, 因为神经元不同结构大小及复杂度不同, 所以探针放置的难易程度也不一样, 一般来说, 放置在细胞核中是最常见的, 操作起来也最简单, 因为细胞核比较大嘛. 但是在细胞核中的探针所受到的干扰也最多, 所以细胞核中产生的脉冲并不一定能够超过形成动作电位的必须阈值. 如下图所见, 只有几条比较长的竖线真正形成了动作电位, 而其他的都在阈值之下, 因此其传导长度和持续时间都比较弱.

细胞核的探针放置

同时也可以将探针放置在神经元细胞之外, 由于真正形成动作电位的电位差比较大, 因此在细胞外也能够探测到微弱的脉冲, 但幅度比较弱, 往往小于0.1mv, 好处是这样做不需要侵入细胞体.

细胞外的探针放置

最后是最有效方法, 就是在轴突中放置探针, 不过轴突比较细比较小, 在这里放置技术难度比较大, 书中提到说在成书日(2010年), 在轴突中放置探针仍然比较少见. 在这里进行探测, 得到的动作电位干扰小, 准确度高, 区分效果好. 让我们来等待技术进步吧.

轴突的探针放置

对于细胞外的探测而言, 一般都进行活体实验, 往往是在动物的大脑中插入这种电极, 来进行电位的记录, 而对于细胞内的探测, 相对困难一些, 所以用神经组织切片来进行实验的比较多.

让我们来再看一下这三种放置方式的对比, 以及其动作电位的映射关系图.

探针的记录示例

从刺激到响应

神经活动是非常复杂多变的, 这种复杂性体现在对于神经脉冲而言, 就是即使接受的是同一个重复的信号, 但是不同时间的神经活动却会出现不同的响应, 这是因为神经活动时刻处在动态变化中, 一次神经响应即反映了刺激信号的时空信息, 同时也反映了神经元的内在的不同动态过程. 具体来说, 神经活动的这种多变性可能有如下三种原因导致:

  1. 不同的刺激强度和不同的注意程度.
    想想假如一只猫被按在这里盯着眼前的一块白板做视皮层的感受野实验, 这只猫心里是多么的狂躁, 虽然每次的光照都会大猫的大脑中进行神经激活, 但是它眨眼与否, 是不疲劳, 以及在探测时注意力有没有在这块白板上, 多少都会构成随机性影响神经元的情况.

探针的记录示例

  1. 生理过程的内在随机性.
    在身体的内循环过程, 时刻要进行酸碱平衡, 电荷平衡等等的调节, 这些调节是由各个子系统独自完成的, 每个子系统都会存在一定的随机波动.

  2. 其他的认知过程.
    还以光照为例, 猫心里正在思念另一只母猫时的神经脉冲和正在思念一条鱼时可能会有所不同.

在这三种扰动的原因中, 事实上可以看到其尺度是不同的, 或者第一条和第三条其实都会通过第二条来发挥作用(我觉得).

正是因为如此, 所以事实上我们无法预测在某一个时刻到底是否会一个动作电位出现. 与之相反, 我们所寻求的模型, 并不关注某一个时间点, 动作电位的有与无, 而是关注在一段时间脉冲的统计情况, 并通过这种统计指标来找到一个模式, 使用这种模式来确定神经元的编码.

放电速率与脉冲统计

虽然动作电位存在着持续时间, 电位幅度大小, 以及形状的不同的, 但是它是研究神经活动的基本单元, 也被视为一个独立的基本事件来对待.
在这个基础上, 我们就可以定义动作电位序列(action potential sequence), 顾名思义, 就是发生在一段时间0T内的, 一段连续的动作电位t_{0}, t_{1}...t_{0}. 其中T表示结束时间, t_{i}表示动作电位发生的时刻.

用狄拉克函数对动作电位建模

一个动作电位是在某一个时刻的脉冲, 那么使用狄拉克函数来对其建模显然再好不过(其实我第一次知道狄拉克函数), 狄拉克函数的数学定义似乎比较复杂, 简单的理解, 它是定义在x轴上的一个连续函数, 但是其只在x=0时有值, 且其值趋向正无穷, 而当x!=0时, 狄拉克函数处处皆零. 由于这个函数的函数图形与坐标轴重合, 所以很难进行绘制, 它大概长这样:

高斯函数的极限

但是这样进行理解, 假设将一个高斯分布从两侧进行压缩, 也就是将方差减小趋向于零, 最后得到的极限就是狄拉克函数.

    \[\delta (t)=\lim _{ \Delta t\rightarrow0 }{ \frac { 1 }{ \sqrt { 2\pi  } \Delta t } exp[-\frac { 1 }{ 2 }  } { (\frac { t }{ \Delta t } ) }^{ 2 }]\]

或者一个动态图会看得更清楚.

高斯函数的极限

狄拉克函数有一个重要的性质, 在之后的推导中会经常用到:

(1.1)   \[\int{d\tau \delta (t-\tau ) h(\tau)} = h(t) \]

在这条性质中, h(t)在左侧的积分的定义区间处处连续, 那么在积分区间, 直观的理解, 狄拉克函数仅当t=\tau时取极限值(而且只要积分区间包含这个点, 其积分结果为1), 而在其他值处为零, 则相乘之后函数中的狄拉克的部分仅当t=\tau时为1(乘于连续函数值后等于其本身), 其他部分为零(乘以连续函数值后为零), 最后的积分结果就是h(t).

神经响应函数与尖峰计数率

在理解狄拉克函数的基础上, 可以想象一个动作电位序列, 就是从0时刻到T时刻的所有的瞬时脉冲, 由于我们已经将一次脉冲表示成狄拉克函数, 因此可知, 动作电位序列就可以使用如下的公式进行表示:

(1.2)   \[\rho (t)=\sum <em>{i=1}^{n}{\delta (t-t</em>{i})} \]

在上式中\delta {(t-t_{i})}是在x轴位移为t_{i}的神经脉冲, 也就是发生在t_{i}时刻的动作电位, i1n取值, 代表在这次实验中的从0T一共发放了n次动作电位, 由此\rho (t)就表示整个时间段的神经元的响应, 故而此函数也称为神经响应函数(neural response function).

有了神经响应函数, 我们就可以开始讨论放电速率了, 如前所述, 事实上对于神经活动是无法使用单次的放电来进行编解码的, 因此我们需要使用一段时间内的放电统计指标来对该神经活动进行分析. 具体来说, 我们可以这么做:
1. 把一只猫绑在一个特制的仪器上.
2. 使用前述的神经探针来对其神经元的的放电情况来进行记录.
3. 记录6秒之内某一神经元的活动. 如下图所示:
探针的记录示例
4. 这样我们就是得到了第一个指标, 尖峰计数率(spike count rate). 也就是在单位时间内动作电位的计数, 将这个计数做为神经元的放电速率.

其公式如下:

(1.3)   \[r=\frac{n}{T}=\frac{1}{T}\int_{0}^{T}{d\tau\rho(\tau)} \]

其中n/T是直接计算, 后面的积分是使用神经响应函数通过狄拉克建模进行表示的形式.

尖峰计数率是一个最简单的指标, 而且只需要一次实验就可以计算这个指标, 但是显然, 这样的计算误差也比较大, 像前面这个例子, 我们必须有6秒的时间才能计算尖峰计数率, 这样的时间分辨率太粗了, 如果我们关注更细的时间尺度的脉冲变化的话, 那么通过单次实验来计算就变得不再可行. 而解决方法就是进行多次实验, 然后再取平均.

时间依存放电速率

于是我们有了第二个指标, 也就是时间依存放电速率(time dependent firing rate), 这个指标主要是为了取得更好的时间分率率(time resolusion), 我们在t\Delta t这个短时间区间来计算出现了多少次神经脉冲, 那么更小的区间长度\Delta t, 就代表更高的时间分率率, 同时很显然, 当\Delta t足够小的情况下, 在这个短时间区间内要么就只有一次神经脉冲, 要么就没有, 它只可能有两个取值, 因此我们还需要多次实验, 取得多次\Delta t的值, 然后再进行平均. 于是我们得到了时间依存放电速率的公式:

(1.4)   \[r(t) = \frac{1}{\Delta t}\int_{t}^{t+\Delta t}{d\tau\left<\rho(\tau)\right>} \]

比较1.3式和1.4式, 首先我们从整个实验的时间区间T, 变成了短时间区间\Delta t, 同时变化了积分定义域, 另外积分对象从\rho(\tau)变成了\left<\rho(\tau)\right>, \left<\right>表示求平均的符号, 此后的文章中在表示平均时都将使用这一符号.

有了精细时间尺度的脉冲表示公式之后, 我们又可以得到精细时间尺度下的脉冲计数r(t)\Delta t. 有意思的是, 这个脉冲计数事实上也是时刻t的脉冲发生概率, 想一想, 时间依存放电速率公式1.4已经求了平均了, 也就是说这个放电速率其实就已经是一个统计值, 现在再将它乘以它的时间长度得到脉冲计数, 这还是一个统计值, 而其统计意义就是在\Delta t时间内, 而且由于\Delta t很小, 在这个时间尺度中, 神经脉冲或者发生, 或者不发生, 这就像一个掷硬币游戏, 是典型的伯努利分布, 所以r(t)\Delta t同时也是在t时刻神经脉冲发生的概率.
进一步, 可以再取\int_{0}^{T}{r(t)\Delta t}得到更长的时间区间的表示.

有了这个理解, 再回头来看神经响应函数\rho(t), 它是在时间区间之内神经脉冲的和, 现在如果用精细时间尺度下来看待这个函数话, 我们可以想到, 由于在精细时间尺度下, 我们必须进行多次实验来取概率, 才得得到精细时间区间\left的脉冲表示, 而由于此时的时间区间较短(有或无), 在多次实验中, 只有在时间区间内有脉冲的单次实验才会对最后的概率结果产生影响, 所以在计算中, 平均神经响应函数和时间依存放电速率可以互换使用, 就像这样:

    \[\int{d\tau h(\tau)\left<\rho(t-\tau)\right>}=\int {d\tau h(\tau)r(t-\tau)}\]

那么我们也有了对神经响应函数一个新的理解: 它也就是在时间轴上, 脉冲的平均密度.

有了精细时间尺度下的放电速率, 我们可以从小到大, 再得到在时间区间T上的一个的表示: 平均放电速率.

(1.5)   \[\left=\frac{\left}{T}=\frac{1}{T}\int^{T}<em>{0}{d\tau\left<\rho(\tau)\right>}=\frac{1}{T}\int</em>{0}^{T}{dtr(t)} \]

比较一下平均放电速率和尖峰时刻率, 一个是单次实验只通过计数就可以得到的指标, 一个是通过在精细时间尺度的概率建模, 多次实验才能够得到的指标.

最后再来做一个区分, r代表尖峰时刻率, r(t)代表时间依存放电速率, \left代表平均放电率.

你被绕晕了没有呢?

这周就写到这里. 有什么意见欢迎反馈.