2019-10-10 , 195 , 0 , 218
1910年,英国哲学家伯特兰·罗素(Bertrand Russell )和其老师怀特海(Alfred North Whitehead)合著的《数学原理》一书问世,这本书是如此的深奥,尤其对中国人而言,因为直到100多年后的今天,仍然没有完整而权威的中译本(能看懂的人确实很少)。
不过想想现在连一般的科普作品都翻译得如此垃圾,我们真应该庆幸。这本不朽的名著为两个年纪相差25岁的科学家建立了一条联系一生的纽带,同时也为神经计算提供了最初的思想来源。
沃尔特·皮茨(Walter Pitts)是很多取得巨大成就但命运坎坷的科学家中的一员。12岁时经常被人欺负(家人和同学),作为一个孩子,他最幸福的时光是在图书馆里度过的。
他曾花了三天时间读完了2000页的《数学原理》,并写信给罗素指出了书中的几处错误[1]。心胸宽广的罗素甚至邀请皮茨去剑桥大学当他的研究生。
15岁时,皮茨离家出走,从此他就再也没有见过他的家人,他要到芝加哥大学寻找他的偶像罗素。在芝加哥大学,哲学家,自然语言处理的先驱鲁道夫·卡尔纳普(Rudolf Carnap)给了他很多帮助,为皮茨谋了打扫卫生的差事[2],这一幕简直就是现实版的《心灵捕手》。
皮茨在旁听罗素的课的时候,结识了杰罗姆·莱特文(Jerome Lettvin),一名年轻的医学系学生。莱特文将皮茨介绍给了沃伦·麦卡洛克(Warren McCulloch),一位比皮茨年长25岁的教授,从此以后,来自不同经济阶层的两人一起生活、一起工作、甚至一起死亡。
很快,他们将创造第一个关于精神的机械论理论——神经科学的第一种计算方法,现代计算机逻辑设计以及人工智能的支柱[1]。
皮茨和麦卡洛克还有一个共同的偶像,戈特弗里德·莱布尼茨(Gottfried Leibniz),就是发明微积分的数学家莱布尼茨。
作为哲学家或逻辑学家,他认为:“我们的所有观念(概念)都是由非常小数目的简单观念复合而成,它们形成了人类思维的基本单元:字母。复杂的观念来自这些简单的观念,是由它们通过模拟算术运算的统一的和对称的组合。”
这种复杂观念由符号所表示的基本单元进行逻辑计算的结果的思想,实际上也指导了《数学原理》创作。
《数学原理》的宏大目标是通过用无可争论的简单的基本逻辑来建立整个数学体系。
从命题入手,罗素和怀特海德采用了与、或、非三种基本逻辑运算来将命题连接成越来越复杂的网络。
就是利用这些简单的命题,他们完整的推导出了整个复杂的现代数学。从《数学原理》开始,逻辑学从哲学中走出来,开始渗透到数学的各个方面,对计算领域产生了巨大的影响。
由于麦卡洛克本身就是一个神经生理学家,我们在第2季中介绍的关于神经元的结构和功能在当时是神经生理学开创性的工作,这个工作对麦卡洛克产生了深刻影响。
当时已经知道的是大脑里的每一个神经细胞只会在达到某个阈值时才被激发, 也就是说必须有足够多的相邻神经细胞通过神经元的突触向它传递信号,它才会发放出自己的电脉冲,即“全或无法则”。
对于也曾认真学习过《数学原理》的麦卡洛克来说,这种设置就是二元的,神经元只有激发和不激发两种状态。
他发现神经元的信号就是一个命题,而神经元的工作类似于逻辑门,它接受多个输入然后产生单一的输出。通过改变神经元的激发阙值,就可以让它执行「与」、「或」以及「非」的函数(功能)[1]。
需要声明的是,生物学上的神经活动是非常复杂的,就神经元从突触分两种类型,一些是兴奋性的(excitatory),另一些则是抑制性(inhibitory)的,之前我介绍过,这是谢灵顿的发现。
兴奋性和抑制性两类突触获得外界的刺激会让神经细胞产生两种状态,激活态或是非激活态,神经细胞被激活的话,则会沿着轴突产生一种脉冲信号,通过另一端的突触把刺激作用传递给其他神经细胞。
实际上,我们要清醒地认识到,对于神经细胞而言,它可不认为自己有两种状态,它只是适时地发送脉冲信号给其他神经元罢了。
这种脉冲信号的产生符合我们之前讲授“全或无”法则,也就是突触获得外界刺激要么使细胞产生脉冲,要么就不产生。
还有一个关键问题是,触突的兴奋和抑制作用到底是如何综合产生影响的,这一点非常复杂。
为了用数学工具模拟神经活动,必须进行简化。
首先假设细胞是否产生脉冲对应于一个开关,这个开关只有两种状态:开和关,也就是二进制状态1或者0。
其次,细胞接收到的输入刺激也只有0,1两种模式,真正发挥作用的是,处于“开(1)”状态的兴奋性的输入的个数与抑制性输入个数的关系。
最简单的假设是只有一个抑制性的输入,而且它产生的作用要强于多个兴奋性输入的作用,也就是说抑制性输入为1时,神经细胞的输出状态只能是0,当抑制性输入为0时,则需要看兴奋性输入为1的个数是否超过一定阈值T,如果超过一定阈值T,神经细胞才真正产生脉冲,即输出的状态才能是1。
阈值在这里起到的作用完全对应“全或无”准则,不过这里需要有一个抑制性输入作为前提,抑制性输入可以看作一种控制信号。需要指出的是,神经细胞响应输入带来的刺激也是需要一个时间过程,也就是在t时刻的输入刺激,将在t+1时刻产生输出。
我们接下来将会看到这些基本假设是如何与逻辑门产生联系,并会举出一个具体的例子来看看如何利用神经元来进行逻辑运算。实际上,我们只需要几个简单的神经元就可以表示最基本的逻辑门,包括「与」、「或」以及「非」,如下图所示的表示是由人工智能的先驱马文明斯基提出的,就是他将感知机和Rosenblatt推进了深渊。
UfqiLong
图2 神经元代表的逻辑门[4]
上面的每一个逻辑门就是一个神经元,例如,带箭头的输入表示兴奋性输入,以圆圈为端点的输入表示了抑制性输入,神经元中的数字(OR:1,AND:2,NOT:0)表示了这个神经元的阈值。
以AND门为例,当两个兴奋性输入都为1时,他们的和大于等于阈值2,同时没有抑制性输入,因此神经元的输出就是1。当其中任意一个输入为0,输入的和将小于阈值2,因此将输出0。
这就是利用神经元模拟AND门的。OR门与此类似,我们再看一下NOT门,在非门中存在一个抑制性输入,而没有兴奋性输入,并且阈值为0,抑制性输入为0,没有兴奋性输入,由于阈值为0。
因此,将产生1的输出,而当抑制性输入为1的时候,神经元直接输出0,这个时候就根本不用计算了,这是一种规定。
由于我们用神经元表示了基本的逻辑门,因此,我们也可以用神经元表示由基本逻辑门构建的任何东西。
我们又把延迟的时间因素忘记了,但这个延迟的时间是如此重要,它使得冯诺伊曼的存储程序计算机变的可能。
我们可以通过叠加一些神经元来实现一个称之为延时门的逻辑门,如下图所示的的阈值为2的神经元,只看这单一的神经元的话,起初只有一个兴奋性输入,因此在下一时刻这个神经元的输出会是0。
接下来,我们看下方另一个阈值为1的神经元,这个神经元一开始就有一个称为start的兴奋性输入(此时你仍可以忽略最下方的名为stop的抑制性输入),特别的是,这个神经元的输出又反馈给本身作为输入了。
实际上,没有什么能够阻止神经元将自己的输出作为它自己的输入,尽管对于单个神经元来说有点奇怪,但是当几个神经元串在一起的时候,它们形成环路几乎是不可避免的。
在不考虑抑制性输入stop的情况下,下方的神经元每隔一个时钟单元,就会输出1,将这个输出连接到上方的神经元的时候,最终的Output看起来就好像延时了两个时间单元一样。
由于存在环路,这个过程将会一直循环下去,我们必须通过引入一个抑制性输入Stop,让它作为整个过程的开关去控制一切。你可以在下方阈值为1的神经元上再增加一个神经元从而让整个输出延迟三个时间单元。
🔗 连载目录
🤖 智能推荐