计算神经科学:大脑怎么工作?(文字版)
点击这里收听本期节目音频版
编辑: 肖怡婷
本期嘉宾: 张逸伦(UCSD 博士候选人) (G)
主播: 舒晏 (S), 阿拉法特 (A)
- S
- 在之前的节目中我们多次和大家聊到过神经网络,但是每次其实我们都会省略掉两个字。神经网络的全称应该是人工神经网络,也就是 Artificial Neural Network,那我刚才看了一下 Wekipedia,那么 Wekipedia 给它的定义中提到了说它是一种模仿生物神经网络的结构和功能的数学模型和计算模型。那么今天我们就和大家来聊一聊关于计算生物神经网络方面的研究,它和我们熟悉的人工神经网络有什么样的区别?又可以给我们关于人工神经网络的一些什么样的启发呢?
- A
- 大家好,这里是徳塔赛,我是阿拉法特。
- S
- 我是舒晏。
- A
- 今天我们是第一次走出了计算机专业的圈子,今天我们要采访 UCSD 物理系的博士候选人张逸伦。张逸伦的研究和数据科学的交集主要是在神经网络,但不是人工的神经网络,而是真正的以试图理解大脑工作原理为目的的给大脑建模。张逸伦,你可以跟大家打个招呼,介绍一下你自己吗?
- G
- Hello,大家好,我是张逸伦。我是 UCSD 物理系第五年在读的一个 PHD 学生。我现在做的工作主要是计算神经科学,简单来说,就是在试图给大脑建模,理解大脑的工作原理。我们做的东西其实从外面看来是和人工神经网络是非常相似的。因为在很多情况下,我们希望以人工神经网络作为工具,来弄清楚大脑到底是怎么工作的,是以什么样的原理来工作的,是在执行什么样的计算,是如何以这么高的效率来完成这么复杂的计算的。
- S
- 那张逸伦,你可以给我们举一个你自己研究中的比较直观,比较好理解的一个例子吗?这样让我们可以对你的研究有一个更直观一点的了解。
- G
- 好的。我自己做的工作主要是跟早期感受系统相关。简单来说,就是视觉和嗅觉系统。我举一个视觉系统的例子吧,和机器学习会稍微相关一些。就是说我们知道在视觉系统中,视觉信号是先由视网膜上的光子感受器接收,然后再传到视网膜上的神经节细胞。其实这里的一个问题就是视网膜的神经节细胞是如何跟它前一层的视觉感受器相连的,也就是说每一个神经节细胞是来负责捕捉哪一块区域的信息的,对于这一块区域内它是如何捕捉的,它的这个视觉感受野是怎么样,它的输出和它的输入又有什么样的关系,这个在生物上大家已经有所了解,但是还有很多未知的问题需要研究。我具体研究过的一个问题,就是说我们想要试图验证一个假设,就是说作为一个早期的感受系统,它的目标是否是最大化的以最少的能量来捕捉最多的信息。不管这个信息是什么,只是把这个信息捕捉并且保存下来,留给之后的系统进行后续的处理。
- A
- 这是你们在这个问题中要研究的问题?
- G
- 这是我们的一个研究,我们想要试图验证或者证伪的一个假设。
- A
- 好的。
- G
- 所以说在这个假设的一个指引下,我们在做的一个工作就是说,OK 如果我们假设这个视觉系统确实是在以最少的能量最有效率的捕捉最多的信息的话,那么我们实际上就是可以预测出来,在这个原理的指引下,我们的一个神经节细胞它的感受野应该是什么样的,就是每一个神经元是来感受哪一部分的信号,然后这些信号是以什么样的权值相加的,相加了以后,它的神经节细胞的输出和它的输入又有怎么样的一个 activation function,这些东西都是可以用这个非常 high level 的这么一个原理性的假设来预测出来的。有了这么一个预测以后,我们就可以把这个预测和实验进行对比。我们看两点,第一点的话是能否解释以前的一些实验现象;第二点的话是能否预测出来以前还没有观测到的实验现象。我们可以预测出来这些神经元可以分成多少个不同的类型,然后每一个类型分别捕捉怎么样不同的信号,比如说有的神经元会具有比较大的这么一个视觉感受野,有的神经元会具有比较小的一个视觉感受野,有的神经元的输出的频率会比较高,有的神经元输出的频率会比较低,有的神经元它会负责感受从时间上来说比较快的信号,有的神经元会负责感受从时间上来说比较慢的一个信号,这些东西都是可以从一个理论原理出发来给出预测,进而跟实验对比,如果我们的对比能够和实验很好地相符的话,那么我们就可以从某种程度上认为我们对这么一个神经系统有了一个更好的了解。这就是一个计算神经科学的例子。
- A
- 你刚刚提到你们要先提出一个假设,然后再做一些实验去验证这个假设,看实验结果和你们的预测是不是相符的,或者跟观测的结果是不是相符的。那搭建模型的工具你们一般会怎么样选择呢?
- G
- 搭建模型的工具,实际上我们主要是有两类,通俗点说一个是笔算,一个是计算机算。笔算的话就是建立一个理论上可解的模型,这样的模型通常来说不会太复杂,但是它的好处是我们可以得到它的解析解,这样我们可以知道它解的所有性质,可以非常方便地求出来最优解是什么,进而跟实验进行直接的对比;第二种是稍微复杂的一些需要数值计算的这么一个 model,这个 model 从现在看来最普遍使用的就是一个人工神经网络了。具体工具上,大家也有使用和机器学习里面很常用的 Tensor Flow 或者 theano 或者 keras 之类很相似的这么一些工具。
- S
- 那么具体从这个人工神经网络的这个模型上来讲,像在你刚才说的你的这个研究的例子中它的输入是什么?那么你们希望看到的输出又是什么?以及在这个模型上的选择,你们更多是会用 Feedforward 还是会用 recurrent?这个是和具体你是做视觉还是听觉,和这些是有关系的吗?
- G
- 是的,这个和具体研究的系统是非常相关的。因为在科学的范畴里面,我们最重要的目标就是想要理解这么一个系统的工作原理,所以我们的这个模型的选择应该是能够最大程度上来解释和预测具体的我们研究这么一个神经系统的行为的。具体到视觉系统里面的话,我们的输入就是指我们接触到的光子信号。更通俗一些说,就是我们比如照了一张照片,那么每一个像素上它的颜色是什么,然后它的光的强度是什么,这是一个输入。输出的话,如果我们研究的是神经节细胞的话,那么输出就是神经节细胞发射的这么一个 spike 。这里就有两种 model 了,第一种 model 的话就是说我的输出是这个神经节细胞的这个 firing rate,就是每秒发射多少个 spike;第二种 model 就是说这个神经节细胞每输出的这么一个 spike 的时间是什么,这个东西叫做 spike timing,就是每一次发射 spike 的时间是不是包含了具体的信息,这是这么一个系统的输出。具体在这个早期的这么一个感受系统上来说就是 early sensory system 我们用 Feedforward Neural Network 会比较多一些,这里有两个方面原因。第一方面原因是我们从生物上,或者说从解剖学上是可以观察到生物神经网络在早期的时候是会有很强的 Feedforward 这么一个结构的。以视觉系统为例子吧,视觉系统的话是 photoreceptor,就是光子接收器会把信号传给 bipolar cell,bipolar cell 又把信号传给ganglion cell,就是刚才我一直在说的视网膜上的神经节细胞,然后 ganglion cell 又会把输出传给 LGN,然后 LGN 又会把输出传给视觉皮层 V1,V1 的话这里已经不算早期视觉感受系统,但是这个 pathway 还是 Feedforward,V1 的话又会把信号传给 V2,然后到 V4 这么一个 pathway。所以说从解剖学上来说这个 Feedforward 性质是非常强的,那么自然而然地人们就会用一个 Feedforward Neural Network 来试图来 model 它;第二个原因是因为用一个 Feedforward Neural Network 是可以在很大程度上捕捉到这个神经网络的行为的。行为就是指给同样的输入,那么我的输出是什么样的。如果一个模型能够很大程度上捕捉到它的输入输出关系的话,那么它会被认为是一个比较好的一个模型。
但是与此同时,现在越来越多的人也注意到只是 Feedforward Neural Network 的话,它还有很多东西是没有办法解释的。一个最简单的例子就是 Attention。在视觉系统里面 Attention 扮演的作用其实是非常重要的,Attention 注意在哪里的话,我们对那里的信息应该进行更加细致的捕捉,对其他部分的话应该是分配更少的能量,来捕捉更少的信息,这一点的话是一个简单的 Feedforward Neural Network 没有办法捕捉的。所以从最简单的一个模型上来说,我们就需要一个比如说从视觉皮层或者某些高级区域引入这么一个反馈系统,这个反馈系统告诉视觉系统你应该看哪里,你不应该看哪里。这个系统是这么的一个模型,实际上是传统的这么一个计算神经科学研究比较欠缺,也是现在大家在进行的一个研究。 - A
- 为什么说这个和 recurrent 不太一样?我觉得这有点 recurrent 的感觉。
- G
- 是这样,Feedforward 和 recurrent 从某种程度上来说是统一的,但是就是看你把哪一部分的系统作为你的研究范围了。Feedforward 通常是指你研究范围外的一个另外一部分的神经元,给你研究范围内的这么一部分的神经元一个反馈。但是如果你把这个比如说 A 把信号传递给 B,B 给 A 这么一个反馈,如果你研究的是 A 的话,那么从 B 到 A 这个叫 Feedback。但是如果你把 A 和 B 都纳入你的研究范围的话,那么就是一个 A 到 B,B 再到 A 的这么一个神经网络,这个就 by definition 就是一个 recurrent neural network,所以 Feedback 的 neural network 当你把所有的神经元都考虑进来之后,它 by definition 就是一个 recurrent neural network。
- S
- 其实我还有一个我刚才自己听到你说的一些内容,一个比较感兴趣的问题。你刚才说到了在这个视觉上面,神经元它是有不同的接收野的范围的对吧?对应到我们的这个图像的输入,那在 CNN 中,在每一层我们的假设是每个神经元它的这个接收野是一样大的,然后越往这个深度来递增,它的接收野范围会不断不断的增大。那么在这个生物神经系统中它确实也是有这种每一层每一层这样的概念吗?或者说每一层的这个接收野是一样大的。
- G
- 是这样的,这个在生物系统中确实会像你所说每一层的这个视觉感受野是不一样的。这个理由很简单,因为我在早期的时候每一个神经元只跟前一层的神经元相连,比如说我连两个吧,那么我在第三层的时候,做一个最简单的假设,第三层还是跟第二层的两个神经元相连,但是第二层的两个神经元由于它是跟第一层的四个神经元相连的,所以它的感受野天然地就会变大。所以这件事情实际上是很 natural 的,就是如果是从最初的输入的层面上来讲的话,每一次随着这个神经网络的深入,它的等效视觉感受也是会一层一层增加的。但是从另外一个角度上来说,如果我们只把目光着眼在同一层,那么在生物系统里面即使是同一层的神经元,它的这个感受野也是会有很不一样的地方。比如说我刚才说到的视网膜神经节细胞吧,人们就观察到不同类型的视网膜神经节细胞,实际上每一种类型的神经节细胞都会把我们的视野整个平铺一遍,以基本上是六角晶格的形式,也就是说每一种类型的细胞都会捕捉所有的视觉输入,但是它们捕捉的特征是不一样的,比如说感受野比较小的细胞就会负责感受比较细节一些的特征,而感受野比较大的细胞就会感受稍微没有那么细节,稍微大一些的这么一个特征,然后有的神经元的话是会比如说捕捉动起来比较快的这么一个特征,然后这些特征的话实际上是以某些方式组合在一起共同传递给下一层的,所以说这个信息实际上是冗余的,并不是说我中间这一块就比较大,旁边那块都比较小,当然这个实际上也是存在的,但是这两种效应实际上都是存在的。
- S
- 那看来我们在做人工神经网络的时候,其实还是做了很多很多的简化的。
- G
- 对,是这样的。在人工神经网络,这个实际上是有原因的,即使是在生物上我们现在也不是很清楚,比如说视网膜具体有多少种神经节细胞,这实际上都是一个在研究的一个方向。另外一个是每一种神经节细胞它到底有什么样的区别,这一点也是大家在积极地研究的这么一个方向。在生物上我们都没有搞清楚之前,想要把它直接以此作为启发应用在人工神经网络上还是有一些困难的,但是不是不可以尝试。
- A
- 我们之前一直在聊从一个大的范围,整个神经网络在生物体上和我们简化的这个数学模型上会有什么区别。我们现在如果到一个局部,我们甚至就是聚焦到一个单个的神经元,我们知道这个人工的神经元我们可能简化的是非常过分了。你能给我们介绍一下这个具体的一个生物的神经元,它实际上是怎么工作的吗?
- G
- 好的。生物的神经元,如果我们用这个机器学习的角度来理解的话,从某种意义上我们可以把它理解为一个神经网络。对,就是一个神经元对应的是一个神经网络,原因是这样:首先,在这个人工神经网络中,我们对于神经元的一个简化是认为它是一个点,它的所有的输入都是以同样的形式加权相加起来,然后经过了一个非线性的函数,直接就作为它的输出了。但是在实际的生物系统中,一个生物的神经元是有一定的体积的,我们可能在高中生物知识中也学过一个神经元有一个东西叫做树突,它是用来接收信号的,还有一个叫轴突,它是用来发射信号的。一个神经元其实考虑上这个树突和轴突以后实际上是非常大的。这个生物系统的一个神经元接受信号的方式是其他的神经元通过轴突把信号传递到这个神经元的树突上,一个神经元的树突可以有很多,而且是可以有分层的结构,你可以把它理解为一个树根一样。所以我可以在比较根部的位置接收前一层的信号,也可以在比较中部的位置接收前一层信号,也可以在比较上部的位置接收前一层的信号,所有的这些信号最后传递到我的细胞体以后,它们的相互作用其实是非常复杂的,并不是简单的一个加权相加。一个很简单的理解方式是你可以理解为,如果当两个轴突把信号都传递到同一个树突很相近的位置的话,那你可以认为那可能作为一个线性相加是一个稍微好一些的模型,但是如果两个轴突它的信号是传递到树突的距离非常远的两个分支的话,那么当这两个信号最后结合到一起的时候,它们的相互作用就不是一个简单的线性函数能够叠加。虽然我刚才举的这个例子并不是很严谨,但是我想说的是一个神经元接收到的信号之间的一个相互作用是非常非线性,非常复杂的。即使它只接受两个输入,这两个输入目前来看都没有一个很好的解析的函数能够,就像我们说把它两个之间加起来一样,这样一个简单的解析函数直接来解释清楚它的输出和输入到底是什么样的一个关系。所以当我们一个神经元接受 N 个输入的时候,我们能够把这个输入输出的关系想要描述得很好的话,我们理论上来说需要复杂度是二的 N 次方,是跟 N 指数相关的。这个是和把 N 个输入直接线性相加相比是复杂的多的。
这个方面实际上是一个非常新的一个研究方向,具体上来说就像我刚才说的输入输出的关系还不是很明确,这个输入输出关系它能够带来什么样好处,大家也不是很明确。但是据我所知,有一些组实际上是在研究这样复杂的一个输入输出的函数能够给我们的神经网络计算能力带来怎么样的提升,而且据他们的这么一个早期的成果显示,这样的提升是非常明显的,通过非常少的神经元,我们就可以实现非常强的一个计算能力,来实现原来需要庞大神经网络才能够完成的一个计算。不过我刚才说的这个研究,他们的研究者是在自己做一个创业公司,所以具体的研究还没有公布,只是我在一个暑期学校有所耳闻。
我刚才提到说这一个神经元和一个神经网络很类似,这个你们可以理解为如果有一个树根结构的话,你们可以把一个树根结构理解为一个神经网络。叶子节点是神经网络的第一层,然后稍微靠近根部的一点是第二层,再往前一点是第三层。这些每一层的神经元都把前一层的信号进行一个整合,然后再以一个比较复杂的方式传递到下一层,最后都把信号传递到细胞体,然后在细胞体通过轴突再把这个信号传递出去。这是一个很大的,这和一个人工神经网络里面的人工神经元是有很大不同的。另外一个很大的不同是输出方式上,输出方式上人工神经网络输出方式就是一个实数,就是说我的输出是 1.5,是 2.3,是 pai,这都是可以的。但是对于生物的这么一个神经网络来说,神经元想要输出信号,大部分神经元靠的是发射 spike,可以理解为发射一个二进制的这么一个 spike 信号,我在什么时候发送了一个 spike,这就是我能够输出的大部分信息了。如果想要把这个信息全部捕捉的话,你需要知道某一个神经元在什么时间点发射了一个 spike,在什么时间内发射了下一个 spike,做一个简化的模型的话,你可以认为是它在一秒内发射了多少个 spike,这样的话虽然你会丢掉一部分信息,但是从数学上来说是一个比较简化的 model,和生物人工神经网络这么一个 model 稍微类似一些。每秒钟发射多少 spike 的话我们把它叫做 firing rate,你可以理解为人工神经网络的输出,但是像我刚才所说,它实际上是一个简化的模型,因为大部分的信息是在你把每一个 spike 的 timing 给丢掉了的同时是给丢掉了。当然具体这个信息是否编码了,关于输入的一些信息是否对我们的计算有所帮助,这实际上是在计算神经科学里面一个饱受争议的议题,但是是有不少的研究来告诉我们,这个 timing 其实是很重要的,包括就是神经元之间的 fire 是要通过 timing 给 synchronize 起来,这样的一个现象实际上在我们的比如说睡眠过程中都是可以观察到有一个 synchronized 的波在我们的海马体里面转呀转呀转,这也是非常有意思的这么一个研究。具体它对于我们计算能力上的提升,它是如何进行计算的,这个东西其实比较复杂,不是一两句话能够说清楚,现在在计算神经科学里面也是大家不是特别清楚的这么一个方向。 - A
- 你刚刚所说的内容中,最让我惊讶的一部分是,即便是对于一个神经元,两个输入,我们对它的输出也是不完全理解的,我们没法建立一个非常精确的数学模型,说它的输出会怎么样?
- G
- 对,是这样的。
- A
- 但在一个大的层面上,如果给你一个处理特定任务的一个大的神经网络,对于这种大一点的神经网络,我们反而是大概能够预测,如果你给它给一个某一个输入,它会输出什么样的结果。是这样吗?就是我的感觉就是说我们对于整个全局的理解反而还超过我们对一个局部单个神经元的理解。
- G
- 这件事情我觉得可以从另外一个角度来理解。就是我们知道人工神经网络从数学上来说,是一个universal 的这么一个 Function Approximator,也就是说任意的输入输出关系都是可以通过一个具有足够多量神经元的神经网络来模拟的。像刚才说的例子,当输入是二维的情况下,输出即使不是一个很简单的线性非线性的一个关系就是先求和,再有一个 activation function,但是我们也是可以通过一个大一些的神经网络来学习出来一个等效的输入输出关系的。所以这就是人工神经网络的一个强大之处,就是它作为一个 Universal Function Approximator 它是可以逼近任意的连续函数的,所以即使当我们在局部对某一个输入输出关系不是很清楚的情况下,但我们知道甭管每个神经元是多么的复杂。但是一个 Fitforward Neural Network 它就是一个输入输出这么一个关系,而且它是一个连续的一个映射的话,那么我们就是可以通过另外的一个人工神经网络来模拟它,即使这个是人工神经网络结构可能跟生物神经网络很不一样,或者说它的神经元数量可能多很多,但只要给我们足够的计算能力,足够的数据,我们都是可以学习到,学习它,模拟它的,这实际上是人工神经网络的一个或者说任何神经网络的一个强大之处。
- S
- 所以就是说其实并不是我们不能够去理解一个很简单的这个生物神经元,如果它只有两个输入的时候的它的这个计算,而是说因为它的这个输入和输出之间的这个关系有可能会极其的复杂,它并不是说我们可以手算出来或者是很容易的观测出来的一个 close form,而是说它可以复杂到我们可能需要用一个比它要大得多得多、很复杂的一个神经网络来模拟它的这个关系的,是这样吧?
- G
- 对对,这样说是非常正确的,就是说我们不是说不太了解这个神经元的输入输出关系是什么,而只是说我们没有办法用一个简单的像线性非线性的这么一个close form,就像你说的一样来 model 它。所以在我们的 model 里面 neural network 每一个 neuron 实际上是非常简单的,但是我们可以用一个由简单神经元组成的更大的一个神经网络来模拟一个由复杂神经元组成的一个小型神经网络。从数学上的一个输入输出关系上来说,它们俩可以是等价的。
- A
- 我们知道深度学习研究中有一个很重要的部分是提出新的网络架构,新的神经元之间的连接方式。那么有可能我们可以直接观测神经元之间,就人类的比如说,或者其他生物的神经元之间的连接,来去把这种连接方式直接复制到人工的神经网络上吗?
- G
- 对,你说的没错,实际上人们也是这么做的。从一开始的 Fitforward Neural Network 到最近 Hinton 提出的这么一个 capsule 的这么一个结构,对,其实 Hinton 最近提出的 capsule 的这么一个结构式,是借鉴大脑皮层里面叫做一个 cortical column 的这么一个结构。但是这么做现在遇到了一些瓶颈,就是当我们对于神经网络研究越来越细致,或者说深入的时候,如果我们想要从更细致的角度来 copy 这个生物神经网络的连接的话,我们会遇到一些实验方法上的瓶颈。就是具体来说神经元和神经元之间的连接,这个 synapse 是非常非常小的,想要看清神经元之间的连接的话,需要电子显微镜才能够看清。这样的话一个直接结果是我们没有办法大规模的探测神经元之间的一个连接方式。这实际上是一个非常前沿的研究,据我所知有几个组正在做这件事情,他们已经获得了小鼠的这么一个全脑的电镜的一个结果,但是他们还是没有分析完这个数据来给出一个神经元之间连接方式。目前来说我们知道的神经元之间连接方式可能只有像那个 C. elegans 那个应该叫秀丽隐杆线虫,一个非常神奇的名字,只有几百个 neuron 之间这么一个神经元的连接方式,具体再大一些的系统的话,这个神经元之间的连接从实验方法上来说是一件很有挑战性的任务。
另外一个方向我们可以试图做的事,我们通过刺激神经元,然后观察其他神经元反应的方式来得到他们一个 functional 的 connectivity。就是说如果我们刺激神经元 A,神经元 B 之后总是有反应的话,那么我们可以假设 A 和 B 之间有一个连接。但是这么做有很大的问题,就是有一些 A 和 B 可能并不是直接相连,而通过 C 相连,或者说甚至通过 C 连到 D 然后再连到 B 这么一个连接方式,这样的话我们并没有办法直接得到那个神经元之间的连接,而只能得到一个神经元之间的等效连接,这两个的区别其实是可以非常大的。
简单来说,我们是从大的区域上来说,是在从大脑中借鉴这么它们的一个连接方式,或者说从 idea 上来说,但是具体在细节上一些的一个连接方式,我们现在从实验上面,想要获得这么细节的数据,还是很有挑战。 - A
- 那你刚刚提到这个有专门的团队会去研究一个神经网络中神经语言之间是怎样连接的。在上期节目中我们就在讨论,仅从实验的角度去研究一些神经网络或者神经网络上的技巧是不是有意义的,如果我们并不能够对这种技巧或者这种网络提出理论的解释,然后这个也在这个深度学习的不同的研究团队中引发了很大的争议。那么你从生物学的角度,你觉得像这种我们去理解表象,就是生物神经元之间是怎么连接的,而并不能够立马知道它的原理,就是它为什么这么连接,你对这种研究有什么看法吗?
- G
- 从生物的角度上来说,或者说从更加 general,从 science 的角度上来说,我会说这样的一个研究是不可或缺的。因为在 science 里面我们会经常提出这么几个问题,第一个问题是 what,就是这个东西是什么?第二个问题是 how,就是它是怎么工作的,它是怎么样的?第三个问题是 why,就是说我们知道它是怎么 work 之后,我们还是想知道它为什么这么 work,它为什么是这么设计而不是那么设计的。具体到刚才你问的这个问题,就是说我们想要理解这个神经元之间它是怎么连接的,这个实际上就是属于 how 这个问题的范畴,神经元之间它具体到底是怎么连接的?在理解清楚这个问题之前,我们实际上是很难研究下一个问题,就是它为什么这么连接?因为如果我们连它现在是怎么连接都不知道,我们怎么能够研究说它为什么这样是最优的,那样不是最优的,为什么选择这种方式而不选择那种方式。所以这样的一个研究方向实际上是更进一步理论研究的一个基石。它实际上是 science 里面不可或缺的一部分。
- A
- 很多深度学习的研究者都会说,自己的某一个想法是基于生物的启发,然后也有很多人会反对这种观点,觉得就是我们所人工实现这些网络和真正的生物的神经网络差太远了,所以说启发的话就有一点夸张了,根本不是这样的。但是我们从另外一个角度,基于你的理解,你可以跟我描述一下一些我们在深度学习网络中使用的技巧,在真实的这种生物世界中它是怎么体现的吗?有有一些这样的例子,可以说其实生物世界中存在某些现象,它和深度学习使用的某些网络结构或者某些技巧是有一些这个异曲同工之妙,这种感觉的例子吗?
- G
- 好的,这个问题的话我觉得可以从两个角度上来说。第一个角度是从比较细节,或者说从结构上比较细致的相似程度上来说,一个生物系统中确实有和人工神经网络使用的方法上非常相似的地方。一个例子就是说正则化这么一个过程。在机器学习里面我们知道正则化在很多时候是为了提高泛化能力,但是在生物系统里面正则化也是一个广泛存在的过程,只不过它的目标除了提高泛化能力以外,还有很重要的一点是能够把一个神经元的输出限制在一个范围内。因为生物神经元它的输出不可能是无限大,或者说它的每秒钟发射的这么一个 spike 的次数不可能是无限大,它是有一个上限的,而且它不能发射负数个 spike,最少的就是零了。所以这里很重要的就是说把一个神经元的输出限制在一个合理的范围内。实现这一点其实最简单的方式就是说我在计算完输出之后,把这个输出第一个是移到一个合理的范围内,第二个是和周围的神经元的输出进行一个对比,然后进行一个标准化,这个标准化的过程实际上就是一个正则化的过程。它从数学上来说和机器学习里面的正则化是几乎是完全一样的,这是第一点。
- A
- 不好意思,我插一个问题。它要怎么 normalize 啊?某一个神经元看到它旁边的神经元似乎信号比较小,它也会把自己的量放小一点吗?
- G
- 是这样的,或者说从数学上来说,一个神经元的输出是它原本的输出除以它周围神经元输出的总和。
- A
- 所以它们会在这种意义上去相互协调,去让自己的信号和周围的信号的这个电量的大小差不多。
- G
- 对,这个的话从另外一个角度来理解,就是输出的是一个 contrast,当然我不是说所有神经元都是这样的,但是这样的一个形式叫做 divisive normalization,实际上在生物的神经系统中是非常常见的一个过程。它每个神经元的输出是跟周围相互协调的,这个 generally 来说又可以叫做 adaptation,就是说我的输出是会根据我输入的变化而变化。另外一个层面的相似或者说启发,可以从一个更 high-level 的 idea 的这么一个角度上来说。这里有两个简单的例子,一个例子就是这个 attention 机制。就是我们知道 attention 机制在这个人工神经网络中其实是非常有用的,但是我们同时通过直觉也知道,它在我们的生活中是无处不在的,就是当我们盯着某个地方看,注意力在某一块区域的时候,其他的地方我们根本可能注意不到它。这个 attention 机制在生物神经网络里面实际上是通过更高区域的这么一个 feedback 来实现的,具体实现方式上可有可能是和人工神经网络有一些相似之处,但实际上更多的相似之处是这个 high level 的 idea。就是说我们想引入这么一个 attention 的机制,把我们信息的处理局限在某一个范围内,这样的话可以提高我们在某些情况下的 performance,这样的一个更 high level,或者说从 idea level 这么一个相似也是被证明比较有用的。另外一点的话,就是 Hinton 最近提出的这么一个 capsule 的概念,实际上是从大脑皮层的这么一个 cortical column 借鉴而来的,虽然实现方式上可能会有很大的差别,但是具体的 idea 上来说,就是说如果我有一组神经元它来执行相似的计算,然后它一组作为一个 joint 的一个输出的话,这样的一个计算方式,会不会能够提高我们整个神经网络的一个处理能力和计算能力,来解决一些之前解决起来比较困难的问题。当然 Hinton 最近的 paper,实际上也至少说明了它在某些情况下是有这个潜力的,所以这也是另外一个从 idea level 上来说,从生物神经网络借鉴来的这么一个例子。
- S
- 那张逸伦刚才提到了这个 attention model,可能不太熟悉这个话题的观众会有点不了解,那我来稍微补充一下,这个 attention model 其实在深度学习中是有很广泛的应用,在计算机视觉和自然语言处理上都有很多很多的相关的工作。那它主要的这个背后的 idea 是说因为我们这个神经网络它的计算能力有限,它的参数就这么多,那么我们希望这个神经网络把它的计算的重点放在和任务更相关的这些信息上,所以说它其中有一个步骤,不管是在自然语言上还是在计算机视觉上,它中间都多了一个步骤,就是说我来选下一步我要重点处理这个输入中的哪一部分的信息,那我们可以想象如果输入是一张图片的话,那么这个模型其实是要给出一个预测,就是说我要把我的关注点集中在哪一个像素的周围。那么如果是在自然语言处理上,那么我的模型其实是要给出一个预测,是说哪一些关键词是我下次要主要 focus 的部分。那么它的一个好处,一个是说我的计算能力主要是集中在了有用的信息上,那么其他的这些信息就不太能够,其他的信息其实是作为 noise 它不太会干扰到我最后的这样一个预测。
- A
- 我觉得这也是深度学习中受生物启发比较明显的一个技巧吧,就是确实每次在知道了 attention model 这个模型之后,我每次看一个东西,然后都会特别的留意一下就是我的视野的边界是模糊的,其实我的大脑根本没有去看这种视野边界是什么东西,只是有一个大概的轮廓,然后我开始有意识地意识到这件事情。在我知道 attention model 之前,我根本没有观察到过这个现象。
- S
- 是的,其实这个 attention model 的,因为最开始是我老板跟我介绍了这个话题,他是做认知科学的,他告诉我一个事实也是让我当时很震惊。他说你不要以为我们的这个人类视野,其实你可以看一整面墙这么大的一个区域,但是你最高的这个清晰度其实只有你大拇指甲盖这么小的一个范围,这个是你就是能够把这个注意力聚焦到最高精度的这么一个范围,就只有这么小,其它的都是在范围越大,你的这个清晰度其实都在这个依次递减。这个他当时跟我说只有这么小的范围的时候也是让我让我很吃惊。
- G
- 我这里插一句,不一定要录进去,我先插一句。这件事情是这样,从视网膜上来说,你老板说的完全没有没有问题,但是他说更多的是由于视网膜的生物限制所致,就是说视网膜的不是说所有的地方,我们感受的那个分辨率都是一样的,最中间那块区域叫 fovea,我们能够感受到分辨率是要比边缘高非常非常多,从中间到边缘是递减的。所以这就是为什么我们当想要看某个地方的时候需要把眼球转过去,而不只是把注意力集中过去。
- A
- 光需要集中到中间那个区域,
- G
- 对,注意力和生物系统的限制,这两部分都需要有,而且都发挥了非常重要的作用。对,是这样,所以我们先要把注意力,所以人眼 work 的方式是当我们把注意力集中到某一个地方的时候,我们需要把眼球也传过去,使得那一块区域的成像在我们眼球的正中间那一块 fovea 上的区域。
- S
- 那刚才其实我们对话中多次提到说这个生物神经网络其实是比人工神经网络要复杂得多得多,但是我们现在一个人工神经网络就已经要在一个甚至是很多个高性能 gpu 上做训练了,那这个能耗是相当大的。但是对于我们人脑来说,我们不可能有这么大的能量供生物神经网络来消耗,就这个问题我们要怎么理解呢?
- G
- 这个问题要说起来的话,其实要牵扯到生物神经网络和现有计算机的这么一个架构的区别。一个简单的答案就是说,现有计算机的架构其实并不是实现神经网络最高效,甚至都不算高效这么一个架构。如果我们从另外一个角度上来说,其实现有的计算机是做一些比如说浮点数运算是非常高效的,比大脑要高效不知道多少倍了。所以从这个角度上来说,我想说的是现有的计算机其实并不是总是低效,它只是在做某些事情的时候并不是很适合罢了。具体到我们的这个神经网络上来说,现有的这么一个 cpu gpu 架构适合做,像它比较适合做浮点数的运算,相比于大脑,但就不是很适合做这个模拟神经元这么一个操作,如果它不是很适合做这么一个操作,我们还非要在这个基础上来模拟,就好比建一个虚拟机来模拟这个神经网络的话,那么它自然是会是一个很低效的系统。如果想要在这个方面有所突破的话,其实最本质上的一个突破是要从建立硬件来的,在这个方面像 IBM,高通之类的硬件厂商,实际上都有在建自己的,他们叫做 Neural Processing Unit (NPU)。实际上就是说我有一个芯片,我专门就是用来模拟这么一个神经元架构,甚至有的这么一个芯片,它从结构上来说,就是有这些神经元以及神经元之间的连接,然后这个神经元之间通过它们这个 physical 的已经建立好的这么一个连接,然后来传递信息。那么理所当然,这样的一个架构实际上是非常节省能量的,因为很多东西你不再需要模拟了,不再需要耗费能量了,它已经在这个芯片里做好了,你只需要的是像神经系统一样发射一个 spike,然后它这个信号传递过去,那么这个信息传递就完成了。这样的话大部分地方是不再需要耗费能量的。这样做实际上是可以极大地提高我们这个人工神经网络的这么一个能耗的效率的。
- A
- 也就是说,在每时每刻并不是所有的神经元都在工作,有很大一部分是在休息是吗?
- G
- 对,是这样,其实有一个传播很广的一个误解,就是说人类的大脑只开发了10%,这个其实我不知道这个谣言是从哪里传播开来,但是我有一个我一直以来的一个假设是,这个谣言的起源是因为在大部分时候,在任何一个时刻,大脑中的大部分神经元是不发射信号的。也就是说,我们把它叫做不是 activate。只有很少一部分的神经元是 active 的,这个从数学上来说,你可以理解为大脑中的这个活动是 sparse 的,就是说大部分的神经在任意时刻,我们的编码的话大部分是零,可能只有少部分是一。这个并不是说大脑只被开发了一小部分,而是因为一个 sparse 的 coding 在数学上在解决某些问题上是非常有优势的,它比如说跟我们机器学习可能比较相关是这么一个linear separability。这个 pattern 当这个 pattern activation 是比较 sparse 的时候,这个 separability 会比较强一些,所以一个非常自然的做法就是我把它 project 到一个更高的维度上,并且加一些抑制使得神经元的这个活动非常 sparse,在这么一个情况下,这个不同的 pattern 之间的 linear separability 就会非常的强。就是说大脑的活动是非常的 sparse 的,大部分时候大部分神经元是不发射信号的。这有两部分的原因,第一部分是因为这样的话比较省能量,第二部分是因为这样的话,对于某些计算来说是比较优化的,而不是说大脑只开发了10%这样的说法。
- A
- 让我想起来有一部电影叫《Lucy》,好像就是基于这个谣言,最后它要把这个女主角的大脑开发到百分之百,多半大脑要烧掉了,如果所有的事情一块儿启动的话。
- G
- 对是,所以其实或者换一个角度来说,从计算机的角度上来说,零和一其实是 exchangeable 的,我们把所有的一替换为零,所有的零替换为一,就是一和零全部做一个改变,实际上不会有任何影响的。那么很简单,对于我们的大脑我们也可以这么做,我们把所有发射 spike 的神经元全部变成不发射,然后不发射变成发射就是 activate 和不 activate 的交换一下,这样的话它传递的信息是没有任何区别的,但是能耗却增加了很多倍。很明显,这样的话它是不 optimize 的这么一个行为。
- S
- 对,这个时候你就可以说我们大脑这个时候是有 90% 都在都在被开发了,但是其实它并没有给任何更多的信息。
- G
- 是这样的。
- A
- 所有做这种傻事的生物在这个漫长的进化过程中都已经把自己给烧的灭绝了。
- S
- 都已经被淘汰了。
- G
- 都被自然选择掉了。
- A
- 我们今天和张逸伦进行了长达一个小时非常有趣的讨论,主要是从张逸伦的身上学到了很多我们在别的渠道上没有办法学到的一些知识吧。我们非常感谢张逸伦今天抽出这么长的时间帮助我们录制了这期节目。
- G
- 也非常感谢你们给我这个机会给大家分享我学习到的一些东西。
- A
- 我是非常希望以后能再有机会可以请你回来,我们聊一些更小的,更有针对性的一些问题。
- S
- 对,我们也希望张逸伦的这个PHD,你还有多久?
- G
- 我大概还有一两个月,两三个月。
- A
- 很快了,对,这个不是一个敏感的问题,如果你还有三四年是敏感的问题,这是一个非常开心的问题。
- S
- 那么我们也祝他在剩下的这个时间里面工作顺利。
- G
- 谢谢谢谢。
- A
- 那我们今天的节目就到这里,谢谢各位的收听,我们下期节目见。
- S
- 下期节目见。
00:46
12:11
15:40
26:10
31:15
40:49