许毅第一次和苏兰闹了别扭,不过许毅完全是为了两个人的未来着想。刚才他的做法,也只是善意的技巧而已,并没有什么恶劣的企图,完全只是为了让老妈从心里上更好受一点,因为不论她反不反对,这件事反正已经成为定局。所以,从这个角度上来说,许毅这么做也可以说是为了家庭的和睦着想。然而,结局却没有朝着许毅预想地那样进行,这让许毅很郁闷。
胡思乱想了一会儿,许毅将这些完全抛到闹后,转而去继续思考自己正在研究的理论。只有在这个时候,他才会真正地心平气和,乐在其中,其他的事情他什么都不想,完全沉浸在自己的精神世界中。
层次理论经过和selina的多方辩论,现在已经完善得差不多。越到后面,许毅越坚信自己的理论是经得住事实的检验的。令许毅比较惊讶的是selina的态度,她有时候非常支持自己的观点,而在另外一个时刻,她又和自己针锋相对起来,将一些连许毅都还没想明白地问题一一提出,毫不留情地反驳许毅,前后判若两人。不过许毅对selina这个性格却觉得非常适合,因为当他有些气馁的时候,selina就会出言安慰,对他的那些奇怪的想法表示支持,而当他有些“得意忘形”的时候,selina又会及时地出来敲许毅的脑袋,让他的理论从模糊逐渐走向清晰,越来越接近事情的真相。
现有的人工智能理论的局限性在哪里?经过这么久的辩论和思考,许毅逐渐抓住了关键所在研究人工智能、编写人工智能的那些人。
现在的那些人工智能程序,都是由研究人员首先对人类智能的特点进行分析,然后将这些特点进行抽象,形成各种各样的模型、算法,有时候还会采用一些数学理论进行辅助处理,最后再将其编写成为特定的程序。这样,问题就来了。这些程序一旦编写成功之后,系统就会按照那些程序原先固定好的方式进行特定的智能处理工作。所以,这些程序的能够完成的功能、灵活性,智能程度的高低,都要受到编程人员对人类智能的认识的限制。也就是说,这些智能程序都是死板的,既定的,不会再出现什么变化,想要出现像人类智能那样高级的功能,具有抽象、联想功能,那显然是不可能的。
人类的智能是非常灵活的,很多想法都是“凭空”产生,也许在之前,这个想法从来没有在脑海中出现过,是大脑随着情况的变化临时想出了新的处理方式。显然,这里和智能程序唯一的区别就在于这个“相出”的来源,如果不考虑这个,那人类的智能就基本和既定的程序无异了。
为什么能够“想出”处理方式?这些想法怎么出现的?很显然,这表明人类的智能并不是按照某些固定的方式进行的。许毅觉得,他的类人智能首先要解决的就是这个问题,他觉得自己抓住了研究类人智能的关键点和出发点,类人智能的模拟,首先要从这里开始。
在此基础上,许毅提出了一个自编程理论:人类智能的本质其实是大脑的操作能力、对信息的操作能力。而在计算机中,各种操作都是由程序来实现的,于是,在智能和计算机程序中间,就可以就建立起一种特殊的映射人类智能能够不断地“想出”新的处理方式,对应于计算机,就相当于计算机能够不断的自己编写出新的程序。
这样,许毅的类人智能理论研究终于从末尾开始逆推到了起点:要成功地模拟出人类的智能,首先要解决计算机的自编程问题。
让计算机自己能够编写程序?这可能么?selina听到许毅的这个理论的时候,她在第一时间内提出了自己的疑问,并且由此推导出了一个悖论:自编程是类人智能的起点,但是如果使用计算机语言来实现自编程程序,要如何让计算机来理解这个源程序的语言和语法?怎样来设计自编程程序呢?如何调试?很显然,要完全实现这些功能本身就要求计算机有较高的智能才能做到,那么它的高智能又是如何来的?这就成为了一个“先有蛋还是先有鸡”的悖论。
许毅到这里也被难住了,到底来怎么解决这个自编程问题,这段时间来他一直没有头绪,不过他相信,只要他解决了这个问题,他的类人智能理论就一定会有一个非常大的突破,到时候类人智能就会有其基本的理论基石,从而将整个理论大厦完全建立起来!
最初的智能到底是怎么产生的?智能的产生和哪些因素有关?单细胞生物再到多细胞生物怎么根据周围的环境来进行自我“编程”?许毅躺在床上直直地望着天花板回想着自己在麻省的时候看的那些生物书籍。为了研究智能的本质和起源,他看了很多本生物方面的著作,从微观到宏观。
“在最开始,生物肯定是不存在智能的,所有动作都是无意识的,出自于自己的本能”许毅这样想道,“按照层次理论,它们那个时候应该遵守另外一套规律”
想着,想着,许毅突然噌地一下坐了起来,他伸出自己的手,张开手掌然后又握紧,接着又张开
“有了!”许毅情不自禁地喊了出来。他想,他已经发现到了一个可行的方法!
仔细观察着手的活动过程,可以发现,手的整个动作都是由一系列细微的小动作而组成的,整个手掌的伸张包含了肌肉的拉伸和收缩,骨骼的活动虽然这些细小的动作本身独立出来并不能表现出什么效果,但是一旦它们组合起来,就形成了集体的力量。
将这个原理应用到编程当中,许毅找到了一种自编程程序的编写方法首先编写一些能够成功运行的基本小程序块,然后将这些小程序块以一种特定的方式结合起来,形成一个较大的程序,而这个大程序便能够完成某种的功能。这种功能并不是小程序块所具有的功能,而是它们组合起来整体表现出来的效果,这就经历了一个从无到有的过程,达到了自编程的特点!
“就是这个!”许毅快速地来回在房间里走动着,右拳激动地击着左掌,脑海中电光火石般地围绕这个中心迅速地思考着,完善着这个理论。
如果用这个方法构建程序,那么怎么样才能实现程序中的循环和条件转移呢?许毅继续深入想下去。以手的活动做参考,手要进行动作,是在大脑的指挥下进行的,即肢体活动程序是由大脑来指挥调用的,而这点完全和计算机程序相反。
在计算机中,程序一旦运行之后,程序便取得了完全的控制权,没有另外的其他东西监视和控制它,所以程序中的流向必须由里面的循环和转移语句来控制。
“看来要解决这个问题,只能另外设置一个控制程序运行的系统,这样才能够准确地控制程序到底往哪个方向进行。”许毅提出了一个解决方法。有了这个控制程序,自编程程序中就不需要再有循环和转移的存在,如此一来,在编写程序的时候,就完全不用考虑由这些语言所造成的死机问题了。
许毅提出了这个自编程程序的编写方法,但是现在并不能就将这种程序编写出来,由此还带出了一系列的问题,例如基本小程序块怎么确定?组合程序如何产生?组合程序产生之后要如何进行调试?怎样才能让这些程序朝着既定方向进行组合?等等等等。
虽然由此引发了更多的问题,但是许毅还是感到非常高兴,因为他又有了进一步的突破,也就相当于自己离最终的目标越来越近了,现在他可以针对silina提出的悖论进行反驳了,虽然那样会给selina更多的机会进行疑难,但是那已经是另外的问题了,这个悖论基本上已经得到解决。
许毅迅速将自己刚才所思考的内容记录下来,一些重要的灵感也记录在记事本中,并且将这些问题都形成条理,一个一个来解决,他感觉,自己快要接近实践的边缘了,只要让他想清楚自编程基本小程序块的编写方法和控制方法,他就可以开始着手进行程序编写了。