日期: 2019.11.25 星期一 晚
作者: Julius Kunze (这个小伙是UCL博士, 我是看他写了基于Jax的神经网络框架而关注他的, 他的这个项目是属于刚刚起步阶段, 只有他自己1个人提交代码.)
译者: Samuel Ko(即本人)

1. 为什么想要翻译这篇文章?

因为我看到这篇文章的中段, 里面以生物学的角度阐述了membrane potential的变化情况, 这在之前的学习中从来没有接触过. 即: 我知道的只是一个已经发生的事实, 但是真正的生物学或者说神经脑科学范畴的概念我其实除了之前的术语以外, 我还属于完全未知的状态. 故我决定翻译和学习一下这篇文章.

2. 前言

大脑是如何工作的? 当神经科学(neuroscience)提供了在small-scale处理和整体行为的一些insights时, 我们其实并不太理解其中的工作机制. 在本篇博文中, 我将会介绍一下我所知道的内容, 以一个工程师的角度来理解进化:

① 大脑是如何在受限的资源下构建出来的? (energy consumption, available materials & similarity to predecessors)

显然, 我们很难理解是否是某种特定(particular)的革命性解释是大脑形成的driving force. 同样地, 尽管我想涵盖一些重要的设计选项(design options), 但是由于水平有限, 下面的内容可能并不详尽(exhaustive).

也就是说, 这篇博客的主要目的是激发读者的inspiration, 激发您的想法, 开启一些有益的试验或者努力.

我们知道, 人脑处理信息的目的是为了生存(通过智能的行为 through intelligent behavior). 我们来提出
这样一个问题:

"How would a computer work if it had evovled biologically? Why would
the design of a brain differ from that of a computer? "

电脑如果进化出生物学特征了会发生什么? 为什么人脑和电脑的设计结构不同?

在开始正文之前, 我想要说本博客主要基于Roger Carpenter和Benjamin Reddi的 <Neurophysiology> 一书. 如果你对神经科学感兴趣, 并想拥有一些conceptual overview, 那么我强烈推荐你去读一读这本书.

3. 正文

3.1 电脑(Computer)

现代电脑主要由晶体管组成, 其中有线缆在其中. 晶体管的作用是一个switch(开关), 利用半导体材料(semiconductor material)
使通过电压的导线(wire)的电导率enable or disable。将晶体管组成起来, 我们可以实现如 and, or, not 等逻辑运算符以及加法, 乘法等代数运算符. 这些东西是组建program或者内存单元的基础block.

集成电路包含了大量的微观硅基晶体管(microscopic silicon-based transistors). 通过微型铝导体进行链接.
在更长的范围内(Over longer ranges),信息是通过铜导体传输的,要么是印刷电路板上的导电轨道,要么是元件之间的隔离电缆。

那么, 大脑中的基础的传递和处理模块是如何工作的呢?

3.2 长程传递 (Long Range Transmission)

我将以"如何设计长程的信息传递"设问, 来开始这里的介绍.

3.2.1 化学(Chemical)

不同于电(electrical 电气科学, 有关电的), 化学传递信息对只有少量细胞的小动物是足够的.
但是, 化学信号传递效率比较低, 因此, 仅凭化学物质, 很难进行大规模的信息传递.

尽管血液的流动可以降低一定的延迟, 但是对于time-critical的活动, 比如打斗或者飞行, 仅凭化学物质
传递是impractical的. 此外, 不同信息的数量因此受到化学物质和receptors(受体)的类型数量的限制.

这导致了低特异性(low specificity). 激素的传递 (Hormonal transmission) 对慢速广播仍然有用,我们观察到人类体内有几百种激素,比如调节消化、血压和免疫反应

3.2.2 电子(Electrical)

与电脑不同的是, 大脑没有进化除独立的金属导体和晶体管. 其中1个原因可能是arranging金属和半导体材料与integrating it with现存的生物结构是很困难的, 后面会讨论更强有力的argument.

我们知道, 大脑是基于细胞(cells)的, 大脑是基于细胞的,利用这些细胞作为导体,细胞膜作为隔离物.
问题是,这种理解将产生非常糟糕的导体,原因如下:

  • 1) 有趣的是,细胞外的液体类似于稀释的海水,这是细胞最先进化的地方: (plasma: 等离子体, Ion concentration: 离子浓度)

自由的ions(离子) 造成了较高的导电率, 这使得isolation变成了一个重要的问题(值得关注的问题). 细胞膜的特定电阻(specific resistance)大约是橡胶(rubber)的100万倍.

  • 2) 神经纤维核心的液体具有比铜高100倍的特殊电阻。
    The fluid in the core of nerve fibers a specific resistance about 100 times higher than copper.

  • 3) 以典型直接1µm为例, 神经纤维大约比铜cable小1000倍. 当直径收缩1000倍的时候, 将会导致leaking surface area缩小1000倍, 这直接意味着横截面面积小了100万倍. 使得情况更加糟糕。

在一个Leaky的导体 (漏电导体) 中, 由于漏电电流与电流本身成正比,电压和电流从一开始就随距离呈指数衰减。
这种导体的好坏可以通过电压降至初始电压1/e≈37%的长度来确定,称为空间常数(space constant) λ。其证实了
对于给定长度ΔxΔxΔx的导线(导体电阻为RcR_cRc​, 绝缘电阻为RiR_iRi​). 空间常数为 λ=(Ri/Rc)Δxλ=\sqrt{(R_i / R_c)}Δxλ=(Ri​/Rc​)​Δx. 根据观察可以得出, Ri/RcR_i / R_cRi​/Rc​ 约比铜电缆少10^11倍. 这意味着空间常数λ要小10万倍左右.

为了使情况有所改善(To improve things by a bit),进化发明了髓鞘(myelination)形成,将脂肪细胞(称为胶质细胞)
包裹在神经纤维周围,以增加Ri。然而, 一个髓鞘青蛙的神经纤维(直径为14µm)的空间常数也只有4mm.

相比成百公里长的电话电缆(phone wire), 这实在是小的可怜. 我们可以推断出: 细胞真的是一个不太好的导体. 这对于长程传递来说, 是一个非常严重的问题, 使得其在传递很短的距离后, 就与噪声混在一起, 难以分辨.

3.2.3 设计放大器(Designing amplifiers)

我们可以尝试通过在常规的间隔中放大信号来扩大范围(extend the range). 因为我们需要许多这样的中继器(repeaters)来进行长距离传输,每个中继器都要增加一些噪声,经过一段距离后,接收器就不可能知道信号的原始强度是多少.

那么, 我们如何继续传递信息呢? 我们可以使用一种协议(protocal)来达成目的: 即只关注一个信息是否发送的协议.

为了使得中继器不放大噪声, 他们需要一种只在某个特定阈值(certain threshold)以上才激发(trigger)的机制. (they need a mechanism to only trigger above a certain threshold)

另一方面, 为了避免信号被丢弃, 我们需要确保放大器(amplification)的强度足够触发下一个中继器 (strong enough to trigger the next repeater). 那么, 我们应该如何设计这些中继器呢? 这类方法的一个基本原则是: 
在路上需要能量来放大信号,这意味着任何设计都需要 电源 (power source) 来放大,就像放大电路 (amplifier circuits) 需要电源一样。

那么,我们如何实现一个thresholded的放大器呢? 一个可能的思路是当发现信号强度大于threshold时, 将电荷从细胞的外部pump(泵)进入细胞纤维,
这当然增加了纤维中的电流. 这可能意味着一个离子泵需要很剧烈的bursts中工作, 并给出足够迅速的反应. 而这可能是存在一定的问题的:

我们要么需要非常灵活的能源供应,要么需要本地存储,这让我们很难依赖ATP-ase等现有机制 (We would need either a very flexible energy supply or local storage making it hard to rely on established mechanisms such as ATP-ase)

那怎么解决这个问题呢? 我们可以先将离子泵出 (pump out).
这样, 当我们通过打开离子通道 (ion channels) 检测到信号时,让它们被动地冲进来 (let them passively rush in …),而不是在激活时泵入 (pump in) 离子。

这种思路非常优雅的解决了我们的问题: 我们的离子泵可以24小时缓慢工作(work slowly around the clock), 保持浓度梯度(能量通过APT酶缓慢提供).

对离子通道本身, 因为离子自发的向低浓度flow, 所以不需要能源供应(power supply).

让离子通道和泵对钠离子 (sodium ions) 有选择性可能也是一个很直接的选择. 因为钠离子在外界的含量比较丰富. 这允许快速和强大的放大过程 ( quick & strong amplification)通过高浓度梯度.

当细胞外液体的体积 (body) 很大的时候(离子浓度几乎是恒定的), 很方便的定义外部的电位为0. 这就是为什么通过细胞膜的电压(即内外电位差)被叫做膜电位的原因.

这里, 还有一个亟待解决的问题:
当通道被一个高于阈值的膜电位打开的时候, 通道是如何知道信号成功传输通过并且将通道再次关闭的呢?

因为由于开放通道会增加膜电位, 我们将永远无法回到阈值以下.
( Because open channels increase the membrane potential further, we will never get back below the threshold. )

一个简单的方法是当观测到一个高的膜电位时完全关闭此通道. 并在它低于threshold不久后de-inactivate它. ( inactivate vt. 使不活动;使不活泼;阻止活动 )

这里面会有一个delay的机制, 其作用与buffer类似, 是为了避免突然的重复激活.

总的来说, 我们用如下的假设机制 (hypothetical mechanism) 来描述:

  • 一旦膜电位大于threshold, Na离子开始流入纤维, 这样会继续增大膜电位. 不过过了一段时间, 离子通道被关闭, 灭活.

  • 我们的pumps会缓慢的将Na离子从细胞中泵出, 这反应的是在threshold下缓慢的减低膜电位, 将其恢复到原始值.

  • 这导致了通道变成de-inactivated的状态. 使得fiber(纤维)准备好下一次激活.


现实情况中, 通道并不会在某些阈值处打开, 相反, 这些通道只是有更高的概率为更高的膜电位所打开.
因此, 有大量通道的细胞膜的渗透性 (the permeability of a membrane) 在膜电位上升时, 光滑增加 (smoothly increases).
尽管每个独立通道的可能状态是: open, close, deactivated. 我们仍然距离目标有相当的距离(we are still not quite there yet)
因为大脑有其它的trick来做这些事~

3.2.4 提升数据速率(Improving data rate)

传输数据的速率与最大的激活频率成正比(同样与spike计时的准确率有关, 这个指标通常被noise所干扰).
在上述的机制中, 这种激活频率主要受钠离子pump 恢复resting电位的速度的影响. 这使得钠离子通道 关闭(inactivate) 一段时间.

那么, 我们如何快速的将spike后抑制的膜电位快速恢复到resting 电位(静息电位)呢?

这里, 我们需要一个强的外部电流(相比由钠离子通道造成的内部电流来说有轻微的delay). 我们使用一种浓度梯度来快速的让电荷进入细胞, 同样地, 我们可以使用相同的trick来进行反向操作:

我们不仅维持细胞内Na+离子的低浓度, 而且为不同离子的反方向建立相应的浓度梯度(concentration gradient). 为了高效的构建这种梯度, 有必要选择一种在外部有着低浓度的离子, 比如钾离子(K+). 这种思路被证实为大脑所用.

如果我们在membrane上加入一个voltage-gated K+ 通道(K离子通道的电压门机制), 我们将与真实的机制相同, 由遍布你大脑的神经纤维在这一刻产生.

  1. 当膜电位高于threshold时, 钠离子开始流入细胞纤维, 因此扩大了膜电位的值. 在一小段时间后, 钠离子通道被关闭.

  2. 钾离子通道的开启相比钠离子通道有一点delay(上图蓝色和黄色曲线). 钾离子流出细胞. 当小于threshold的时候, 快速的(剧烈的?)降低了细胞膜电位的值, 由于膜电位的剧烈下降, K+离子通道关闭.

  3. 钠离子通道现在处于de-inactivated的状态. 值得注意的是, 我们是如何使得抑制周期 (inactivation period)
    在无需承担循环激活的风险情况下变得非常短的?------我们可以非常迅速的就安全的将膜电位下降到threshold以下.
    (as we are safely below the threshold very quickly.)

  4. 我们的泵将Na离子泵出细胞, 并将K离子泵回细胞. 这种操作的目的是保证浓度几乎保持在常数的状态. 在大脑中, 上述任务是同时发生的(通过一种Na-K的泵来实现)

因为激活发射时间非常短暂, 所以也称之为spike(脉冲). 现实情况中, 通道通常有微弱的泄露现象发生(即便在通道关闭的状态下). 这种泄露的情况会影响浓度的平衡, 但是, 机制是一样的.

神经纤维, 也称之为axons (轴突), 它们是大多数神经细胞的一种. 当然, 也可以直接称之为neurons (神经元).
在大脑中, 放大器以Ranvier节点的形式沿轴突有规律的间隔出现(manifest),在有髓鞘的轴突之间有间隙,每个轴突上
都有许多漏出的钠钾通道和钠钾泵。也有对不严格要求时间 (not time critical) 的信息处理用到的无髓鞘的轴突.

在spike的过程中, 离子浓度的变化一般小于0.1%. 在正常情况下, 离子浓度变化的范围的极限也就是这样了. 这就是为什么
我们在很多的计算中, 将其视为常数的原因.

总的来说, 我们可以解释为什么制造轴突(axon):

  • 因为细胞的不良导体和绝缘性(因为细胞的导电性和绝缘性不好), 放大操作(amplification)对于长程信息传递是必需的.

  • 产生的累积噪声(accumulative noise)强制进行all-or-nothing编码.

  • Na, K离子的作用. 不翻译啦(见下图)

3.2.5 数字化?(Going digital?)

计算机传递信息的机制与大脑中的轴突(axon)作用相似:
即只关注信号是否存在而不关注其强度 (only caring about whether a signal is currently present and not about its strength).

计算机在此基础上再进了一步: 即只关心是否信号出现在一个固定的时间窗口中, 这让我们可以进行随时间的离散编码.

这通常是通过一个clock signal来实现, 通过定义这些time windows的boundaries来提供处理的节奏(rhythm).

允许传递2值信息(binary messages), 每个信息都代表2种状态中的1种(0, 1). 当有许多2值信息的时候, 它们
可以表达任意的integers, 因此可以编码任意的离散信息. 缺乏对信号的模拟解释, 只允许离散的表达形式是数字
处理的定义(digital processing). 如果我们在时间和电压方面都有足够大的安全裕度,就有可能实现几乎没有误差(error-free)的传输.

这是一个巨大的利好(This is a huge benefit), 即可以使得我们编写的复杂程序无需受到随时间的噪声干扰.

在大脑中, 缓慢的导体(低导体)使得其很难同步时钟信号(clock signal). 这就排除了(rules out)数字编码的可能性, 所以我们需要去处理模拟编码里面所隐含的噪声. 这意味着因为每个spike的确切时机影响了未来的处理, 我们的大脑被限制在模拟编码上.

对于短距离的信息传递, 除了all-or-nothing的编码方式外, 由于amplitude(n. 振幅;丰富,充足;广阔)-based的编码方式有更高的数据速率和能量效率, 因此更受欢迎. 这解释了为什么在大脑中, 短神经元为什么从未使用spike(roger carpenter, benjamin reddi的).

现在, 我们能够理解为什么电脑和人脑编码信息的方式是不同的了:

3.2.6 Processing

晶体管(transistors)是电脑进行数字处理的基础模块. 大脑是如何处理信息的呢? 无论何种情况, 我们需要能够从不同的来源中集成信号(integrate signals from different sources.) . 我们假设大脑中的基础building block是细胞, 那么, 我们需要一种允许多输入多输出的结构来完成这一目标, 下图是我们所观测到的实际情况

树突树(The dendritic tree)将收集到的输入信号传入soma( 活体脑细胞, 体细胞, 驱赶, 身体)中. 当在soma中的膜电位超过了阈值, 轴突就会发射spike信号, 典型的方式是分支以便将输出信号分布式的传递到不同位置的细胞中.

树突与轴突有一些类似的地方: 当输入spike到达的时候, voltage-gated钠离子通道开启(open). 因此细胞内的膜电位会上升. 除了轴突(other than axons), 树突分支中的信号不是all-or-nothing的编码方式. 并且典型的多突触因为需要让soma中的膜电位大于threshold的缘故, 需要被激活(need to
be active).

一个神经元在某种程度上"adding up"(汇集)输入, 尽管这不是全部(although this is not the complete picture).

举例来说: 由突触创建的输入, 若其远离soma, 那么其效果就会比较微弱.
另一个例子: 如果在同一个分支有2个突触fire了, 其效果通常与2个突触在
不同的branch上fire的效果不同. 这意味着神经元可以执行远超过加法的复杂计算逻辑.

但是, 这个效应在大脑运行中的重要性仍不得而知.

上述的神经元只是许多种神经元中的1种, 不同类型的神经元的树突(dendritic), 轴突(axon)结构以及突触(synapses)结构差异可能会很大. 如上所述, 短神经元甚至不使用动作电位.

4. 设计突触 (Designing synapses)

我们应该如何设计synapses呢? 直接导电连接(direct conductive connection)可以认为是最简单的方式. 的确如此(Indeed this observed), 特别是对包含防御机制的神经元(需要迅速的反应时间).

这种突触被称之为电子突触(electric synapse), 由多个连接的通道(叫做gap junctions, 间隙连接)组成. 但是这种电子突触并不是主流, 事实上, 大多数突触是化学的.

为什么要用化学物质取代电子突触呢? 这种机制的一大优点在于接收神经元外的化学受体(receptors)允许大脑中 broadcasted的化学物质进行调整(modulation). 有很多种类型的神经递质(neurotransmitters)和受体(receptors), 还有抑制接收细胞(inhibit the receiving cell)的突触。

5. 结论 (Conclusion)

现在, 还有一些问题悬而未决, 比如:

  • ① 神经元表述的信息形式是什么样的?
  • ② 神经元是如何连接起来实现信息传递的呢?
  • ③ 神经元的表达方式是如何习得的?

神经科学虽然提供了部分的答案和算法思路, 但是距离得到一个可以支撑观测结论的完备理论还相距甚远.

虽然如此, 但是起码通过本文, 我们知晓了使得大脑工作的一些基础的设计选择(fundamental design).

如何构建一个大脑---为工程师们介绍神经生理学.相关推荐

  1. 使用百度大脑构建一个闲聊机器人

    使用百度大脑构建一个闲聊机器人 使用的库 录下你所说的内容 调用百度语音识别系统将录音文件转化为文字 调用百度UINIT进行回答 在主函数中检测键盘输入 代码上传到了Github 主要参考了这篇博客 ...

  2. 构建城市大脑的未来标准,9个值得探索的规范

    简述:50年来互联网从网状向类脑架构进化并与城市建设结合是城市大脑产生的根源.城市大脑建设是工程问题,但首先也是基础科学问题,掌握科技发展规律是发现和构建城市大脑建设标准的基础.通过总结互联网大脑模型 ...

  3. 构建一个你自己的类微信系统 -- 可扩展通信系统实践

    ##前言 正如你们所知的那样,微信是一个非常成功的在线服务系统,由几万台服务器组成的系统为几亿人提供着稳定的业务服务.可惜作为一个普通的工程师基本上不可能有整体设计这样一个系统的机会,即使加入xx 也 ...

  4. Java趣谈——如何构建一个高效且可伸缩的缓存

    Java趣谈--如何构建一个高效且可伸缩的缓存 本集概要: 怎样构建一个线程安全而又高效.可伸缩的缓存? 怎样利用设计模式,把缓存做成通用的工具? 除了synchronize和volatile,我们还 ...

  5. 揭秘华为AI一站式开发平台,3步构建一个AI模型 | 华为昇腾师资培训沙龙西安场...

    2018 年,在第三届 HUAWEI CONNECT(华为全联接大会)上,华为首次公布了 AI 战略与全栈全场景 AI 解决方案,其中包含全球首个覆盖全场景人工智能的华为昇腾(Ascend)系列处理器 ...

  6. 如何构建一个分布式爬虫:实战篇

    本篇文章将是『如何构建一个分布式爬虫』系列文章的最后一篇,拟**从实战角度**来介绍如何构建一个*稳健的分布式微博爬虫*.这里我*没敢谈高效*,抓过微博数据的同学应该都知道微博的反爬虫能力,也知道微博 ...

  7. 如何只使用标签来构建一个简单的电影推荐系统

    作者:Johnson Kuan   编译:ronghuaiyang 导读 使用基于内容的方法来找到最相似的电影. No MIT chalkboard required 介绍 假设你正在推出下一个非常大 ...

  8. 几十行python代码构建一个前后端分离的目标检测演示网站,代码开源

    在深度学习更讲究实用和落地的今天,构建一个简单的,可以利用浏览器和后端交互的演示性 Demo 可以说非常重要且实用了.本文我们将简单的介绍如何用几十行核心代码构建一个好用的.前后端分离的Demo. 2 ...

  9. python实现目标检测_由浅入深:教你如何构建一个行人目标检测模型(Python)

    摘要: 零基础也能构建一个目标检测(对象检测)模型?小编教你使用Image AI库从头开始构建一个行人检测模型. 当我们看到一张图片时,我们的大脑会立即识别图片中所包含的物体.而对于机器来说,识别这些 ...

最新文章

  1. 汇编语言w3c_w3cschoolc语言教程
  2. 基于SSM实现宠物商城系统
  3. Unity学习笔记4 更换编辑器为VS2013及VS的背景图片设置
  4. SQL语言之同义词(Oracle)
  5. python字符编码
  6. 凭自己本事单的身是一种怎样的体验?你根本配不上如此优秀的我!
  7. 数据仓库etl编程_莱牛教育:浅谈大数据ETL大数据工程师所需具备的能力
  8. 自用的获取时间 传值是获取剩余时间 不传是获取当前时间
  9. C#创建用户控件 - IPv4地址输入框
  10. 企业生产环境利用ATIES对服务器进行远程备份
  11. php枚举属于什么类型,python枚举类型是什么?python枚举类型的简单介绍
  12. [原]最大流, 最小分割分析
  13. 转载explicit关键字
  14. sys.argv学习,通过运行py脚本,手动传入参数
  15. python ocr 识别车牌_python 实现的车牌识别项目
  16. Java之美[从蛮荒到撬动地球]之设计模式二
  17. hdmi tv 信息 的edid_HDMI EDID解读
  18. it行业se是_CS、IT、SE到底有什么区别?
  19. java----正则表达式
  20. 快手上的音乐计算机,快手本地音乐显示只能从电脑导入怎么办

热门文章

  1. ViewFlipper实现垂直轮播广告效果
  2. 详解HashMap的put方法
  3. :-1: error: dependent ‘..\camera3d\qss\main.qss‘ does not exist.
  4. UE4项目迁移----纯蓝图项目
  5. win10家庭版远程无法连接win11专业版,报错“你的凭据不工作“
  6. 王道考研操作系统个人笔记--第一章计算机系统概述
  7. mini-web框架-个人选股制作
  8. 亲手搭建vue项目的过程--Module build failed: Unknown word,无法读取css文件
  9. 游戏引擎与虚拟仿真系统
  10. 阿里短信发送报错 InvalidTimeStamp.Expired