二、代 码
为了在设计的语境中证明这些观点,我们要“从盒子里出来”(get “out of the box”),然后“转换思维”(“think different”)。我们要将设计形象化,把它看作一个减法过程,而不是加法过程。如果我们所知道的一切都是预先存在(preexist)的,那么设计就不是创造新的实体,而是从所有实体的浩瀚宇宙中提取一些出来。记忆或回忆就是从我们脑海中已有的各种想法中检索出一些想法。但这在设计领域里是如何运作的呢?我们要怎么用记忆来设计?
让我们用一个简单的人类活动,即拼拼图来实践这一理论。假如你面前有一套由十个拼块组成的拼图,它们最终可以被放到一块长方形的画布上。任何人,例如一个孩子,他首先会选择其中一块放到画布上,然后再选择另一块放上去,然后再选一块,不断重复,直到所有的拼块都能相互匹配。也可能出现僵局,就拿出其中的一块或两块重新放置,直到匹配为止。这个过程可能需要几秒钟甚至几分钟,这取决于拼图的复杂程度或拼图者的能力,这被当作人类智力或一般智力的一个测试。现在考虑这样一种可能性:我拿起这些拼块,把它们扔到空中,期待他们掉下来能够互相匹配。如果不行,我就再做一次,再一次,再一次,一次又一次,以求能够匹配。这种匹配发生的概率有多大呢?大部分人会认为这是不可能发生的。然而,简单的逻辑表明,尽管这种匹配不会很快发生,但是从逻辑上讲,它是必然会发生的。从定义上来看,由于我指的是一种可能性,“必然地”就一定存在机会。如果有足够的时间,即便也许是十亿分之一的可能性,那么,它也一定会发生。实际上,我们可以准确地计算出这个数字,并且能确定使它发生所需要尝试的次数的最大值。但是,没有人会尝试这种方法,主要是因为没有时间等待。但通过计算机的使用,这样的逻辑便开始适用了。例如,10亿就不是一个非常大的数字。想象一下千兆赫兹(GHz):每秒运行10亿次。我们尝试用计算机程序来进行这个过程。在第一次试验中,经历了212 421次失败的尝试之后,达到了匹配。这一过程在2.9 GHz的英特尔酷睿(Intel Core)i7处理器上只用了大约10秒钟。再一次实验经历了74 730次(大约3秒钟)失败的尝试后,达到了匹配。因此,如果你要在这两种方式之间做出选择,那么就会面临这样一个两难的境地,即:我应该用我的智慧花几分钟的时间来解决这一问题,还是应该用一种无意识的机会机制在几毫秒的时间内解决同样的问题?对某些人来说,这可能是一个非常重要的问题。
但让问题变得更有趣的地方就在于:我们有多少种可能的方法来解这个拼图?是有无限多的方法吗,还是有一定数量的可能的排列方法?如果我们根据所有可能的方式逐个地放置每块拼图,那将会是什么样的情况?换句话说,也就是在所有40个格子、4个90度旋转和2个面的可能位置上,系统地排列这10块拼图,那么我们将产生所有可能的拼图的排列情况,即3 200乘10的10次方(32万亿)种排列方式,其中一些就是这个拼图的解。当然,在尝试了这个方法之后,最终我们会得到拼图的所有可能的解。再也没有其他的解了。而且,如果我们要找的是“完美的”拼图的解,那么它必定就在其中。例如,假设我们将对称原理定义为“完美的”,那么,这个过程包含了两个步骤:创造所有可能的解;然后再从中选出对称的那些。也就是说,在我们开始寻找完美的解之前,就已经知道在这大量的模式当中有一个完美的解。我们要做的只是把它提取出来。或者,重组或回忆那些你已知的东西。在某种程度上,这种方法与试错法完全相反。试错法是指我们随机地或通过智能算法产生拼图的解,然后对每个解进行评估,从而逐步接近更完美的(在这里是对称的)解。但是这种方法并不能保证得出最完美的解。只有检查了所有可能的解之后,我们才能保证这个确实就是最优解。简单来说,就是因为我们检验过了其他一切的可能性。
在设计中,虽然与此并不相同,但是也有类似的过程。在设计中,尤其是在建筑设计中,设计师被要求解决的问题可以被看作一个拼图排列的问题,即在一组分散的位置(如网格)上,对设计元素进行重新编排,直到找到一个满足标准的解决方案。传统上,这种编排的工作是由人类设计师完成的。设计师们的决策或者基于直觉(从设计师的角度),或者基于随机取样,直到找到一个或几个有效的解决方案。然而,在这两种情况下,由于选择过程的主观性或任意性,所找到的解决方案也许只是“还可以”,但是并不能被看作“最佳的解决方案”。相比之下,一张以排列方式得出的编排情况的详细列表,最终将揭示出“最佳的解决方案”,因为它排除了其他一切可能的方案。
在现实中的建筑设计会涉及大量可能的编排情况,与此相比,前面的例子虽然过于简化,但还是说明了排列系统的潜力,并且提出了一种不同的进行建筑设计的方法。
当然,如果我们能创建图形的模式,为什么不创建语词的模式呢?语词具有表意的能力,因此句子可以传达意义。在这个例子中,我选择了以下这些语词:“如果”(if)、“它”(it)、“存在”(exists)、“你”(you)、“能”(can)、“想”(think)、“关于(到)”(of)、“它”(it)。这里我们要将这八个语词放在八个位置上。有8的8次方种即16 777 216种可能性。当然要读通所有的句子是很困难的。这不是不可能,只是很麻烦:如果每次重新排列需要10秒,那么,我们需要167 772 160秒,或者说每天连续24小时工作的话大约需要64个月!
要实现这一点,人们需要使用一种超越自身存在的媒介。我们需要另外一种——也许是并行的——逻辑来替代人脑,需要一种可以从人的外部模拟人脑的工具。因为如果这个工具可以在非常短的时间内完成相同的任务,那么它也许就是一个解决方案。实际上,关键不在于解决这个问题,而是在于对问题的解决者进行模拟。
这里的问题是:计算机系统是否有可能生成它自己的解决方案,从而展现出某种与众不同的智能?一个计算机系统可以处理输入的信息,并以近似于人的方式给出(对于我们来说)智能的建议,它不仅速度要快得多,而且完全没有意识或意向性。就语言学而言,如果给出一系列的要求,那么计算机系统是否有可能产生一个有深意的句子,即使它对自身的活动并没有意识?处理和输出是否能够看起来好像是由人类完成的?或者,我们真的可以利用它飞快的计算速度和巨大的内存生成一个比任何人类或人类群体所能创造的故事还复杂得多的故事吗?
这个问题的答案本质上与思想结构有关,它决定了我们如何定义和理解“什么是语言”。如果我们把语言看成是一个生成句子的加法过程——通过对文本智能地重新编排,在一系列步骤中从无到有地生成一个句子——那么这个模拟的计算机系统也应该表现出类似的智能。但是,如果我们把语言看作一个减法过程,即从所有可能的有八个语词的句子中选出符合要求的句子,那么语言问题就变成了一种模式匹配,而不必表现出任何智能。
神经网络就是一种与众不同的工具,尽管它的结构非常简单(好像是随机生成的一样),(但对我们来说)它表现出一定程度的智能。神经网络只是节点和链接的一个集合。每个节点(或神经元)可以以层的形式将信号从一个节点传输到另一个节点(即在同一个层次上的每个神经元将信号传输到下一个层次上的神经元)。神经网络在输入层的神经元处接收信号,并将所有输入的信号一层层地叠加,直到达到最后一层,通过这种方式来传播信号。然后,神经网络系统会纠正信号模式并将其传回整个网络。这种经过修正的模式可以被用来与新的信息进行比较,使其能够进一步自我修正,直到没有错误产生。
如前所述,我们有八个要排列的语词,以及八个不同的线性位置。有8的8次方种即16 777 216种可能性。通过神经网络的使用,我们可以将那些没有意义的句子排除掉,保留那些有意义的句子。例如:“如果你能想到它,它存在(if you can think of it it exists)”,“它存在,如果你能想到它(it exists if you can think of it)”,“你能想到它,如果它存在(you can think of it if it exists)”,“它能想到你,如果它存在(it can think of you if it exists)”。最后一句话很有趣,因为它涉及了一个仿佛存在着的实体。
虽然有些句子可能是我们意料之中的,但有些则不然。最后一句话“它能想到你,如果它存在”,和其他句子一样,这句话在语法上是正确的,但它却表达了一个很奇怪的意思。谁在想谁?显然,我认为计算机并非清楚这句话的意思并且有意识地把它写出来。但是对我们能够如此解释它的人来说,这个结果却是很有意义的。如果在创作过程中省略了意向性,那么所产生的句子也就变得重要了。详尽的排列可以产生所有可能的句子,其中的大多数是没有意义的,其余的句子是有意义的,但是在意料之中,或许有一个或几个句子是有意义且内涵深刻的。如果仅凭自身的独立思考,那么人可能会被自己的想法所限制,看不到产生新的思维方式的可能性。一方面,由于偏见或知识的欠缺,某些思路没有被采用。但另一方面,计算机不存在偏见或知识的欠缺问题。它们是量化的机器,系统和客观地生成所有的组合。但是它们不能对其所生产出来的句子进行判断。