最近看到一篇有趣的文章叫做 Could a neuroscientist understand a microprocessor? (DOI: 10.1101/055624)。讲的是用神经科学的分析方法来把计算机微处理器当做一个黑盒子来研究。这让我想起之前听过的一个 talk,里面有提到这篇叫做 A search for life on Earth from the Galileo spacecraft 的文章。
就是说人们开发了许多技术和手段来探测外星生命的存在,然后终于有人想起来拿这些方法来对地球做了一下探测,看是否真的能探测到生命的存在,或者说,从另一方面来看,看这些技术和手段是不是真的有用。看似非常自然的基本测试,好像却还是比较容易被忽略的样子。
而这篇 neuroscience 的文章,其实也是类似的东西。首先 neuroscience 是一个比较新的学科,我自己的不完全理解它很大一部分内容是研究大脑的工作原理。所谓 science,差不多就是一个设计实验、观察结果、总结规律、建立理论、行为预测、结果检验的迭代过程。比如牛顿看到苹果从树上掉下来,于是建立了万有引力理论,用于刻画苹果的受力,同时还建立了牛顿运动定律之类的,用于刻画在受到给定的力的情况下苹果的运动。我们之所以接受这套理论是因为它能够进行“行为预测”,比如它能够描述梨从树上掉下来,桃子从树上掉下来,或者我们可以设计 controlled experiment,让铁球从树上掉下来,观察运动轨迹,验证理论的正确性。当然相比于“预测”,一套理论更重要的作用也许在于能帮助我们“理解”,就是了解事情的来龙去脉,因果关系。
但是与此同时,Science 之于 Math 的一大特点就是基本上“只能证伪不能证实”。就是说如果我观察到和理论不符合的实验结果,就可以证明理论是不正确的,但是不论我做出多少符合预期的观测结果,都不能严格地证明理论是“正确的”。比如后来爱因斯坦建立相对论,因为出现了一些牛顿理论无法很好地解释的现象。而爱因斯坦的理论是否又是“正确”的呢?或者说后来的其他理论。大概这是一个永无止境的过程。
而神经科学也面临着同样的问题,比如我们通过对脑部的 activity 进行测量,发现当我们看到人脸的时候,有一部分的神经元会有比较强烈的活动,于是我们可以建立一个关于脑部对于人脸专用的处理单元的模型或者理论,或者甚至关于 Grandmother cell 的理论。在比如通过对某些脑部由于意外受到部分损伤的病人的研究,发现某些部位损伤之后病人不能说话了,另一些部位损伤之后病人不能造句了,于是我们可以建立一个脑部各部分功能映射的模型等等。这里说得有点夸张和简化,但是大致差不多就是这样子。
从“预测”和“理解”的角度来看的话,神经科学的目的大概可以看成是 (1) 构建一个计算模型(或者实体计算机)能够实现大脑的功能;(2) 一套完整的理论用来描述大脑计算的来龙去脉。我自己的感觉是第一个目标大概是要容易很多的,也许不远的将来人们就能够通过海量的数据和计算训练出一个神经网络或者什么其他模型来,可以达到简单动物大脑类似的功能,然而这并不等价于同时实现了 (2),因为这个训练出来的模型也许就是一个很复杂的难以“分析”的东西,到头来我们并不知道它到底是怎么回事。一个极端一点的玩笑就是,其实要实现 (1) 很“容易”,只要 follow 一些固定程序,十月怀胎生一个小孩,你就算是 build 了一个 powerful 的大脑了,但是你还是不知道这个大脑是怎么 work 的。
但是所谓“理解”究竟是什么意思呢?感觉好像一个大脑是一件非常复杂的艺术品,似乎并不能像许多物理上的现象那样能用比较 clean 的几个公式就能完整刻画。并且如果只能证伪不能证实的话,似乎也很难讲什么是真正的“理解”。
所以这里计算机微处理器就登场了。虽然还达不到人脑的复杂度,但是一个现代的 CPU,或者说一台完整的电脑,显然已经是非常复杂了。并且幸运的是它是我们人类自己建造的,我的意思是说,所有的模块、功能、层次抽象从头到尾都是人类设计出来的,而不是在一个全连接的电路板上通过“gradient descent”之类的方法“train”出来的。在这个情况里,我们知道了计算机这样一个复杂系统,虽然极其复杂,但是并不是无法“描述”或者“理解”的,虽然也许要用上很多本大部头在加上 EECS 专业的学生数年时间的学习才能得到一个相对不那么粗略的系统概貌。第二点就是我们有一个 ground truth 在,所以我们知道当我们得到一些结论或者理论的时候,到底是正确的还是错误的。当然还有很多其他优点,比如在模拟器上能够做非常精确又不影响原始功能的测量(反过来要在不破坏大脑功能的情况下做很精确的测量其实是比较难的),还有基本上可以免费生成无限量的实验数据等等。
所以说,回到文中最开始提到的这篇论文。作者的做了一些有趣的实验,就是用神经科学里常用的一些实验设计和数据分析方法来分析一个游戏机板子。比如通过观测某些 transistor 会对某些像素有强烈的反应之类的来对 transistor 的功能进行刻画。再或者通过“杀死”一部分的 transistor 看是否会影响某些功能,来判断某些 transistor 或者“区域”的功能,比如作者发现禁用掉某一些 transistor 之后“大金刚”游戏就启动不起来了,那是否这些 transistor 就是大金刚专用 transistor 呢?当然我们知道微处理器本身是 general purpose 的结构,而逻辑存在于软件之中,可能就会觉得这样的结论不一定是正确的:比如也许它们其实是某些关键运算(比如加法)的 transistor,导致程序不能正确运行了,或者把磁盘之类的也考虑进去的话,也许刚好是存储大金刚程序的那部分“neuron”,所以程序不能正确运行了。等等。
We find that many measures are surprisingly similar between the brain and the processor and also, that our results do not lead to a meaningful understanding of the processor.
且不说文章里用的神经科学的实验设计和分析方法是否足够完整和严格,也不说它所得出的结论是否合理,就这个问题或者说设定本身来说其实是非常有意思的。虽然人脑和电脑的工作原理也许会有 fundamental 的不同,但是如果我们能有办法以黑盒子的方式从外部 reconstruct 出一整套关于电脑的工作原理的完整描述出来的话,那我们也就能很好地理解人脑了吧!
Comments
有意思的想法!不过 neuroscience 研究的难度真的太大了,目前也只能用这些可能压根不正确的方法做研究。
也不能说不正确吧,只是说对结果的 interpretation 可能需要更加谨慎一些啦。
作为neuroscience的学生,觉得纯粹的黑箱子理论上是无法理解一个认知系统(计算机,人脑)的作用机制的,cognitive neurosience的研究范式也一直在转向对黑盒子内部构件的操纵上。neuroscience大致可以分为三部分:一是生物学为代表的对于细胞,分子结构与作用的研究,了解硬件层面特性作用;二是心理学,狭义的cognitive neuroscience为代表的通过观测手段(fMRI, PET什么的),或者脑损伤,或是类似对大脑进行介入(插电极,光遗传)非介入断路(TMS),分析硬件间的关系作用;三是computational neuroscience利用现有结果做模型之类的。传统意义上的神经科学应该还是以找到大脑怎么work的为主,从方法上,生物学和计算都是为第二类研究提供素材(也许也是互相促进的)。在不能操纵大脑的时候,往往只能找到相关而非因果关系(黑盒子最大弊端),如影响一个transistor和导致的结果间虽然相关,但是会有N多种可能性(因果的方向,中介效应,调节效应等等),能够操纵大脑的结构和功能后,就可以确定一些factor间的因果关系,如果可以进一步这些因果关系的生理基础,结合多个已知因果事实,就可以构建起比较可靠的理论。认知神经科学家所擅长的(或者说与众不同,难以替代的地方)是通过各种实验设计做各种事实间的逻辑上的运算,然后得出若干factor间唯一可能的关系(虽然很多时候仍只是缩小范围,这需要实验技术的支撑),就文中transistor的例子而言,认知神经科学可能会研究某些transistor的物理联系,不同输入,输入模式与输出关系,在不同的尺度范围上的作用,甚至研究这一transistor的内部作用机制(分子尺度上的研究),追踪transistor信号的来源与流向,改造替换transistor并分析其结果,为逻辑上的计算提供素材,最终将各种实验中的事实转化为可能(最终的追求是唯一)的结果。个人的理解是,所谓科学的结论,始终都是有限而精确的(得益于操作性定义,可证伪性,以及其中精确的逻辑运算),反而数学的问题在于,对其是外在还是内在的,其是否是实在的都存在严重的质疑(传统上科学与哲学对于认知与意识的理解以及量子力学的实验结果也不由得让人怀疑人生)。纯粹的黑盒子能够为研究者提供的信息是有限的,但一旦能够操纵盒子的构件(技术上近几年飞速发展),现有的研究范式应该还是可以能够了解认知机制的。实际上debug断点调试的思想与认知神经科学的研究思路间就很相似,很多不能很好理解的代码按照认知研究的思路分解操纵,也很容易找到各部分的作用与作用方式。虽然大脑研究大脑这件事情本身很怪,但多个领域间的思考问题的迁移与相似之处可能也就是大脑本身工作方式的体现吧~
多谢分享哈!如果能把盒子打开,大概估计就好比能拿到一个 software 的 binary 文件,也许可以反汇编出来一些 low level 的 instruction 和子函数之类的,虽然离 reconstruct 整个程序的逻辑可能还是有一些距离,但是确实比一个黑盒子来说已经是很大的一步了。
定义怎么样才算是理解了大脑了的确是一个很有意思的问题。现在大家会分析,人脑这部分负责视觉,那部分负责听觉,那么人脑是否真的是这么设计的呢(假设有一个上帝设计了人脑)?一个类比的问题是在人工神经网络中,大家会分析第一层找到了边,第三层某些neuron负责找圆形,等等。但实际人工神经网络设计的时候并没有限定每一层和每一个neuron的作用,只是很简单的卷积,pooling,再卷积。这些解释,其实是我们人自己方便理解神经网络而“yy”出来的。那么大脑是不是也一样呢?
我还记得有一次在一个talk上听Hinton说过,“人脑就是Deep Neural Networks 加 Stochastic Gradient Descent。。。“
哈哈,这样说感觉还是有点夸张了,感觉人脑应该还更复杂一些。
博主,抽空写写2016年度总结呀,刚开始学习machine learning,发现你讲的很清楚,要追随你的时间线了。
本日路過看到這一篇,想到很久以前有個生物學家寫過類似的文章
https://www.cell.com/cancer...