前言:
现时姐妹们对“找矩阵中的鞍点c语言”大致比较重视,你们都需要了解一些“找矩阵中的鞍点c语言”的相关内容。那么小编同时在网络上网罗了一些关于“找矩阵中的鞍点c语言””的相关知识,希望大家能喜欢,我们一起来学习一下吧!人工神经网络在很多领域都取得了突破性进展,这项技术的最初灵感源自生物神经网络。作为我们人类智能的来源,生物神经系统或许还能给我们的人工智能创造之路带来新的启迪。MIT 自动驾驶汽车和人工智能方向的副研究员 Jack Terwilliger 近日在自己的博客上发布了其系列文章《生物神经网络》的第一篇,对生物神经元的基本信息以及常见的模型进行了介绍。机器之心对本文进行了编译。原文中还包含一些比较直观的交互式图表,这里不便呈现,感兴趣的读者可通过文末链接访问原文查看。
神经元是细胞——基本上由水、离子、氨基酸和蛋白质构成的小体具有引人注目的电化学特性。它们是大脑的主要功能单元。我们的心智体验(感知、记忆和想法)源自神经元双层脂膜上的盐分水平的涨落和神经元之间的突触传递。理解神经元和神经计算的方式有助于阐释我们丰富的心智体验的构建和表法方式、我们的行为和决策的基本原理,并能为处理信息和实现人工智能的新方法提供生物学启发。
在这篇文章中,我将以交互式的方式概述建模神经元的方法。这篇文章不可能全面覆盖所有内容,也不会给出新的见解。但是,我希望这篇文章能为好奇的读者提供有关建模神经元的直观知识。文中的图表可以让你尝试不同的模型和参数。暂时先不要疑虑动态系统、分岔(bifurcation)、动作电位(action potential)是什么,后文会给出简要的解释。
起步:神经元的生物学基础
在我们深入数学模型之前,我们首先应该简要了解一下神经元的生物学基础,这是所有一切的基础(如果你已经学过神经科学课程,你当然可以跳过这部分)。
神经元的解剖结构
我们首先要了解的是神经元的特殊形态,即它们的形状和结构。这种形态让神经元可以从其它数千个细胞接收信息并快速进行长距离通信——从脊髓到脚可长达 1 米!
卡哈尔(Cajal)手绘的浦肯野细胞。注意其中树突分支的复杂性和数量
神经元通过位于(但不排除其它位置)其树突树(dendritic tree)上的突触接收来自其它神经元的信号。树突树是一种复杂的、有分支的、扩散式的结构。如果你想知道树突复杂度最高的是什么细胞,那就是浦肯野细胞(Purkinje cell),它能够接收多达 100000 个其它连接。树突上有树突棘(dendritic spine),这是树突上微小的凸起,是其它神经元与该树突接触的位置。
来自树突的信号会传播和汇聚到神经元胞体(soma)——神经元细胞的主体,是细胞核和其它典型细胞器所在的位置。
神经元的解剖结构。图片来自 OpenStax College 生物学《Neurons and glial cells》,CC BY-NC-SA 3.0 License
胞体会延伸出轴丘(axon hillock),并进一步延展成轴突(axon)。轴突与其它神经元的树突相连。这让神经元可以快速长距离通信,同时不损失信号完整性。为了让信号快速传播,轴突是有髓鞘的——其覆盖有分散的绝缘体,让神经元的信号可以在绝缘的区域之间跳跃。为了维持信号完整性,轴突中的神经元信号是「要么全有要么全无的」——这是有点像比特(bit)的脉冲信号,我们后面会讨论。
神经元的生理机能
关于神经元,要了解的第二件事是它们特殊的生理机能——神经元的细胞功能。神经细胞功能最显著的特征是动作电位(action potential)。这种机制让神经元可以可靠地长距离传递信息,而不会出现传输衰减。
有一个需要记住的重点:神经元沉浸在主要由水、盐和蛋白质构成的细胞外液中。由盐进出细胞以及这些盐的浓度差异所产生的力是神经元这种显著行为的物理基础。神经元中有将钠排出细胞和将钾引入细胞的钠钾泵(sodium-potassium pump),这会使得细胞外的钠浓度高于细胞内,细胞外的钾浓度又低于细胞内。
动作电位是离散事件,其中膜电位会快速上升(去极化)然后回落(极化)。这种离散事件是「要么全有要么全无的」,也就是说如果神经元膜上一个部分出现了一个动作电位,那么其邻近的部分也会出现,如此继续扩散直到到达轴突末端。动作电位一般不会反向传播,因为一旦膜上一个区域发出了一个动作电位,电化学作用力就会将膜的这个区域超极化(hyper-polarize),导致之前开放的通道关闭,并使该区域在一段时间内不活跃。
动作电位源自细胞膜上不同种类的离子经由通道的运动以及这些通道在不同时间尺度上的激活和失活。典型的动作电位会按以下方式发生:
平衡(Equilibrium):神经元的平衡膜电位大约为 -70 mV,接近能斯特平衡(Nernst Equilibrium)的 EK+≈−75。在平衡时,净电流为 0——即向内和向外的电流是平衡的。
去极化(Depolarization):输入的激励信号去除膜的极化。快速响应门控 Na+ 通道激活,Na+ 涌入,使膜的电位更高。响应速度更慢的 K+ 通道开启,K+ 涌入,使膜的电位更低。
放大(Amplification):如果神经元受到的刺激变多或受到了快速刺激,那么激活的 Na+ 通道就会远多于 K+ 通道。这会导致形成一种反馈回路:Na+ 的流入会导致更多 Na+ 通道激活。
重新极化(Repolarization):最后,膜电位会接近 Na+ 的能斯特平衡,因为钠通道已经开到了最大。更慢的 K+ 通道会赶上 Na+ 通道,使得膜电位重新极化。与此同时,Na+ 通道处于失活状态。
超极化(Hyper-polarization):K+ 通道开启而 Na+ 通道失活,会导致膜电位降至典型平衡点之下,接近 K+ 能斯特平衡。
不应期(Refractory Period):Na+ 通道需要一段时间才能脱离失活状态,这意味着在一个动作电位之后,它们在一段时间内将一直无法再次开启。这期间,大多数 Na+ 通道失活时被称为绝对不应期(absolute refractory period,不管刺激强度如何,神经元都不会放电),而很多 Na+ 通道失活时则被称为相对不应期(relative refractory period,当刺激足够强时神经元可以放电)。
正如我们下面会看到的那样,某些模型(尤其是 Hodgkin-Huxley 模型)能很好地描述动作电位的本质。借助这些理论模型,你可以探索动作电位的计算性质或其它有趣的神经现象。
尖峰队列(spike train)
尖峰队列是神经元的语言。人们往往会将尖峰看作是点事件,将尖峰队列看作是点过程。我们使用神经响应函数来描述:
其中一次脉冲定义为:
一般而言,假设尖峰队列是由随机过程生成的,这会有助于分析。假设尖峰之间相互独立,我们可以将这个点过程建模为一个泊松过程(Poisson process),所以我们知道在区间 ΔT 中出现 n 个尖峰的概率为:
为了根据泊松点过程产生尖峰,要在一个足够小的时间区间内生成一个随机数 r,这样应该就只会出现 1 个尖峰,并且检查 r<firingRateΔt 是否成立。但是,还要确保 firingRateΔt<1。
起步:动态系统
分岔与动态系统
很多神经元模型都是动态系统——它们将神经元的状态描述成某个向量,并且会根据某些方程随时间变化。该模型的空间中每一个点都有一个对应的梯度,即其变化的方向。关于模型的很多情况都可以通过查看其相图(phase portrait)推断得到。下面给出了两个相图的案例。这些相图看起来很密集——这一节会尝试解释如何理解它们。
Fitzhugh-Nagumo 神经元的相图。相图看起来可能很嘈杂,但如果你知道如何解读,其中包含了大量信息:(1)向量场(黑色箭头)表示状态空间中的轨迹,(2)nullcline(黑色实线)表示偏导数为 0 的点,(3)固定点(黑点)在这里是所有点都朝向的点,(4)轨迹(红色)表示穿过状态空间的轨迹。
Simple Model 神经元的相图。这里还给出了一个吸引盆(basin of attraction,蓝色区域),其中所有点都往往指向一个稳定节点(黑点)。分界线(蓝色实线)直接连接到鞍点(白点),并且也定义了吸引盆的边界。
平衡
当动态系统不再随时间改变时,就达到了平衡。形式上讲,如果 f(x)=0,则 x 是系统 x′=f(x) 的一个平衡点。在动态系统中,我们只会考虑 5 类固定点。
稳定节点(stable node)吸引邻近区域内的所有点。当所有特征值都为负且为实数时,就会出现稳定节点。
不稳定节点(unstable node)排斥邻近区域内的所有点。当所有特征值都为正且为实数时,就会出现不稳定节点。
稳定焦点(stable foci)通过向内盘旋吸引邻近区域内的所有点。当特征值为复数且与负实数部分共轭时,就会出现稳定焦点。
不稳定焦点(unstable foci)通过向外盘旋排斥邻近区域内的所有点。当特征值为复数且与正实数部分共轭时,就会出现不稳定焦点。
鞍点(saddle)沿两个方向吸引且沿两个方向排斥。当特征值为实数且符号相反时,就会出现鞍点。
根据雅可比矩阵(Jaccobian matrix)的轨迹 τ 和行列式 δ 得到的固定点的分类。图片来自 Eugene Izhikevich,根据 CC BY-NC-SA 3.0 License 发布。
nullcline
如上述模型那样的二维神经元模型有两条 nullcline——这两条线上的偏导数为 0。当越过一条 nullcline 时,一个变量的演化会改变方向。只需查看动态系统的 nullcline,就能明白有关该动态系统的很多情况,包括固定点的位置。
分岔
分岔是动态系统中的质变——平衡点或极限环(limit cycle)的出现或消失这种质变。这些变化会在一个参数变化时发生——这就是所谓的分岔参数(bifurcation parameter)。在神经元模型中,分岔参数往往是输入电流 I。我们只会考虑 4 种分岔:
鞍点节点分岔:在鞍点节点分岔处,稳定节点和不稳定节点消除彼此,融合成一个鞍点节点。在神经元模型中,鞍点节点分岔之前会有稳定平衡的消失。
在极限环上的鞍点节点分岔:与鞍点节点分岔类似,但分岔点出现在极限环上。这个细节很重要,因为在平衡点处,极限环具有无限的周期长度,让周期性可以随分岔参数连续变化。当鞍点节点没出现在极限环上时,周期性是不连续的。这对神经元的计算特性有影响。
超临界 Andronov-Hopf 分岔:在超临界 Andronov-Hopf 分岔处,随着极限环的出现和增长,稳定平衡会向不稳定平衡转变。接近超临界 Andronov-Hopf 分岔时,如果其输入是周期性的,那神经元就会尖峰放电。
亚临界 Andronov-Hopf 分岔:在亚临界 Andronov-Hopf 分岔处,随着极限环的收缩然后消失,不稳定平衡会向稳定平衡转变。
鞍点节点分岔示例。注意这里的稳定固定点和不稳定固定点在融合成鞍点节点后彼此消除的方式。
发生在极限环上的鞍点节点分岔示例。注意这里的稳定固定点和不稳定固定点彼此消除的方式。图片来自 Eugene Izhikevich,根据 CC BY-NC-SA 3.0 License 发布。
超临界 Andronov-Hopf 分岔示例。注意这里稳定极限环的出现和增长。图片来自 Yuri A. Kuznetsov,根据 CC BY-NC-SA 3.0 License 发布。
亚临界 Andronov-Hopf 分岔示例。注意这里不稳定极限环的出现。图片来自 Yuri A. Kuznetsov,根据 CC BY-NC-SA 3.0 License 发布。
现在让我们继续深入!
模型
Hodgkin-Huxley 模型神经元
Hodgkin-Huxley 模型神经元是生理学建模领域内一项非常了不起的成就,这让 Alan Hodgkin 和 Andrew Huxley 获得了 1963 年的诺贝尔生理学或医学奖。这是计算神经科学领域内的一种重要模型。有趣的是,这个模型是通过研究鱿鱼巨轴突(squid giant axon)构建的,这控制了鱿鱼的喷水推进反射——其直径很大,易于实验。
你会看到其中有很多数学内容,但本质上讲,Hodgkin-Huxley 模型是将神经元的动态描述成了一个电路,其中电流的激活和失活有不同的时间尺度和不同的电压。
该模型包含 3 种电流 INa、IK 和 Ileak,都会影响膜电位。Ileak 不是门控的,而是 Cl- 离子缓慢渗透穿过膜。IK 是由 n 门控的,n 是一个无单位的变量 [0,1],表示 K+ 电压门控通道的激活状态(增加钾的流量)。INa 电流是由 m 和 h 门控的,其中 m 是一个无单位的变量 [0,1](增加钠的流量),表示 Na+ 电压门控通道的激活状态,h 也是一个无单位的变量 [0,1],表示 Na+ 通道的失活状态(停止钠流动)。
其中
其中
αx 是指门 x 转换为打开的速率,而 βx 是指门 x 转换为关闭的速率。
Hodgkin-Huxley 模型是接受范围最广的模型。这也是我们在本文中会谈到的最复杂的模型。后面的模型会更加抽象,并且缺乏 Hodgkin-Huxley 模型的一些特征,但它们分析和模拟起来更容易。
人工神经元
在人工神经网络中所使用的人工神经元是对生物神经元的绝妙约简。它们是对神经行为的抽象,即将神经行为约简成几个关键特征:(a)它们整合所有输入突触上的信号(求总和),(b)它们根据一个非线性函数对整合后的信号进行变换处理。
我们可以用数学方式描述(a):
其中神经元 j 是突触前神经元,i 是突触后神经元,vj 是从 j 到 i 的信号,wij 是该突触的强度。
用数学方式描述(b):
其中 f(Ii) 通常是 sigmoid 函数或线性整流函数。
相当简单,但有点投机取巧。这些最好是称为单元,而不是神经元,因为它们并不进行尖峰放电。尽管如此,这些单元的输出可以被解读成是放电率。尽管很简单,但这些单元在探索神经计算的性质上很有用。不仅如此,它们也被用在了当前最佳的人工智能算法中。事实证明,只有一个隐藏层的人工神经网络就能近似任意函数。
这一类神经元的强度源自可微分性——即使在网络内堆叠时也是如此。这个性质可以最小化或最大化某些目标来学习任意函数。但是,因为比较简单(比如缺乏尖峰放电机制和持久状态),它们并不是生物神经元的实际情况的模型。
整合放电模型
整合放电模型(integrate and fire model)是一种应用广泛的模型,常被用于探索网络的行为。这种简单模型抓住了神经行为的几个特征:(a)神经元尖峰放电和复位重置所遵循的膜阈值,(b)神经元无法放电的不应期,(c)状态——这是一种动态系统,膜电位(状态)会随时间演变。
但是,这个模型缺乏用于尖峰生成的真实机制。实际上在神经元尖峰放电时,我们也就只画一条竖线。此外,其膜阈值和不应期是绝对的,而在真实神经元中,它们会根据神经元的状态而变化。这些神经元也不能共振(resonate)。不是说这个模型无用——整合放电神经元有尖峰放电神经元的最基本特征,并且很容易推理。很多对网络行为的有趣探索都使用了这个模型。
基于电导的模型
基于电导的模型是一组类似 Hodgkin-Huxley 模型的方程——它们使用这些参数表示神经元:(1)各种离子通道的电导率,(2)细胞膜的电容。基于电导的模型很简单,但种类很多。和整合放电模型不同,基于电导的模型可以生成尖峰。有些还能进行共振、振荡、反弹尖峰、双稳态尖峰等。
展示 Na、K 和漏电电流的 RC 电路。离子通道用可变电阻器表示(带有箭头的电阻符号)。
这些模型这样描述流过神经元膜的电流:
使用了基尔霍夫电流定律(Kirchhoff's law)。
这些模型的动态的基本形式可以描述为:
正如去罗马有很多不同路径一样,实现模型尖峰放电的方式也很多。我们前面已经看了 Hodgkin-Huxley 模型,但因为那是一个 4 维系统,所以分析起来不容易。下面我们来看看一个 1 维系统和一个 2 维系统,其分别基于钠通道的动态和钠&钾通道的动态。
INa,p
持续钠模型(INa,p)只有一个钠通道,且这个钠通道能立即响应当前的膜电位;由于钠通道动态的速度相对较快,所以这种模型还算不错。这让我们有了一个非常简单的 1 维模型。现在,如果我们回想一下动作电位的生理过程,那么缺乏钾通道就意味着这个模型的动态本身应该无法实现复位重置。实际上我们需要添加一个条件来在尖峰放电后人工重置神经元。
看看状态空间,下面是一个特定的输入电流,有两个固定点——一个对应于平衡的膜电位,另一个对应于该尖峰放电的峰值膜电位。当然,有一个源点(source point)分开这两者。
在模型经历了一次分岔之后就会出现尖峰放电:平衡固定点和源点彼此消除,会导致神经元倾向于尖峰放电,不管其初始状态如何。
INa,p+IK
持续钠+钾模型(INa,p+IK)是在 INa,p 的基础上加上钾通道。不同于钠通道,钾通道不会即时激活,其激活速度比钠通道慢。不同于 INa,p,这个模型是 2 维的。
建模基于电导的模型的常见方法是将一整个神经元当作单个隔离单元——也就是忽略树突的所有结构复杂度。源自树突分支的信号的传播和合并方式很复杂,其建模的计算成本通常非常高。尽管基于电导的模型比我们前面看到的其它模型更接近实际,但你也应该清楚这个短板。为了解释这些特征,可能会用到电缆方程(cable equation)。
简单的动态模型
如果你不想受限在思考离子通道上——也就是说,如果你暂时想略过湿件(生物硬件)——那么你能在获取与神经计算相关的细胞行为情况的同时维持可追踪的分析和模拟所需的简洁性吗?Eugene Izhikevich 的简单模型背后的直观思想是好模型需要 1)一个描述膜电位快速变量,2)一个描述恢复动态过程的慢速变量。恢复变量无需明确代表特定的离子电流,而是可以描述所有恢复电流的总和。这种简单模型的构造取决于正确调整其参数,它可能接近鞍点节点分岔或 Andronof-Hopf 分岔。这在模拟神经元网络时有很大的优势。这种方法不仅能通过将动态过程简化为相对简单的方程描述的 2 个变量来降低计算成本,而且还可以使用一个模型表示多种神经性质。
神经元的计算性质
神经元可以解码来自其它神经元的信息,转换这些信息,然后将这些信息编码成尖峰的形式发送给其它神经元。神经元的计算性质让它们可以执行这种操作。下面给出了一些计算性质的示例(这个列表当然并不全面)。
1、2 和 3 类神经元
了解神经元的计算能力的一种方式是查看它们的 F-I 函数——即增益函数。Hodgkin 基于这一指标提出了 3 类神经元,如下面的图片所示:
1 类神经元的 F-I 曲线示例。注意这个曲线是平滑的。这些神经元可以生成任意低频率的尖峰队列。在模型中,当鞍点节点分岔发生在极限环上时,这就可能发生。在分岔之后,极限环的周期是无限的。
2 类神经元的示例。其放电率有不连续的跳变。2 类神经元不能生成任意低频率的尖峰队列。
3 类神经元没有有趣的 F-I 曲线,因为它们仅在输入开始时放电。也就是说,它们在给定一个恒定输入时只会生成单个尖峰。
但是,这些类别可以使用动态系统进行更丰富的描述。1 类神经元的行为是在极限环上的鞍点节点分岔的结果,而 2 类神经元的行为是其它三种分岔的结果。3 类神经元的行为会在固定点突然移动(比膜电位变化的速度快)时出现,使得神经元尖峰放电,然后返回变化后的平衡状态。
应该说还有很多其它「类型」的神经元。也就是说,神经元的区分不仅是在增益函数方面。实际上艾伦研究所(Allen Institute)目前就有一个研究神经元分类的项目。他们有一个非常棒的开源大脑细胞数据库:。
积分器和共振器
我们也可以看神经元是积分器还是共振器,从动态系统的角度看,即神经元是经历鞍点节点分岔还是 Andronof-Hopf 分岔。
积分器会累积信号,直到它们的膜电位达到定义好的阈值(定义吸引盆的分界线)。时间相近的信号加到一起可以产生比相隔较远时更大的效果。积分器是并发检测器(coincidence detector)。某些积分器是 1 类神经元。
积分器示例。这个神经元会随时间累积持续的输入。
上面是一个接近鞍点节点分岔的模型。注意沿吸引盆的定义良好的阈值(蓝色线)。正输入的到来会驱使电流状态远离吸引盆,直到其最终避免引发动作电位。
共振器会对输入信号产生共振(振荡)。共振器不一定要有明确定义的阈值。在接近超临界 Andronof-Hopf 分岔的模型情况下,某些螺旋轨迹指向吸引盆之外,但其它轨迹不会。其阈值很模糊。不同于积分器,共振器对某个频率窄带最敏感。共振器也是并发检测器,但它们还是频率检测器。所有的共振器都是 2 类神经元。
积分器示例。我们可以使用三个幅度非常小的脉冲构建一个共振器神经元。因为这些脉冲在合适的共振频率上,所以会将膜电位越推越高。这类似于在秋千上按适当的节奏摆动你的腿。
FitzHugh-Nagumo 模型是一种共振器。在一次尖峰放电后,膜电位类似于衰减的振荡器。
这是一个接近超临界 Andronof-Hopf 分岔的共振器
结语
神经元处理信息的方式非常迷人和复杂,其中还有很多我们仍不清楚的地方(任何充满激情的科学家都会觉得振奋)。本文中所讨论模型还远不够完美。这些模型还没有考虑到神经元的一些重要方面,比如树突树的复杂结构或局部场电位(但确实存在这样的模型)。但是,要记住未来一段时间内,我们很可能都将无法获悉大脑中与认知相关的所有相关情况,模拟是一种研究神经计算的非常实用和有趣的方法。我希望这个系列文章能激励能人巧匠、黑客和程序开发者研究这些模型并找到可能的新发现。
标签: #找矩阵中的鞍点c语言