你的大脑有多强大,你知道吗?

如何提高人类大脑的能力(最费脑子的问题)(1)

看看这幅图,它是由两幅图像交替而制成的gif动画,是不是很有立体感?不需要多少思考,大多数人一瞄就能说出壁炉上各种器皿的位置或者木柴的大概纹理(伴随着晕眩的副作用)。但如果要通过计算机来建立立体模型的话,这个过程涉及不少复杂的矩阵计算。但人脑似乎用某种奇异的方法,不费吹灰之力就完成了同样的任务。

不仅是人脑,似乎简单得多的动物,它们的脑在某些方面也有出众的表现。但整体原理在很大程度上仍然是个谜。

那为什么脑,或者说由神经元构成的网络,会有这么神秘而强大的能力呢?

对于大脑产生智能的具体机理,我们离揭示大脑能力的奥秘还差很远很远。要更进一步,还需要更精细的分析能力和更强大的计算能力。

对于大脑,如果对神经元组成的网络进行适当的模拟,或许可以完成对于传统算法来说困难的任务。沿着这个思路,他们得到了“人工神经网络”,一类被广泛应用的人工智能算法。

简单的拼板

要模拟生物中的神经网络,那就要明白神经细胞之间通讯的大概原理。

如何提高人类大脑的能力(最费脑子的问题)(2)

神经细胞

神经元细胞的构造相当复杂。如果神经细胞接收到的信息满足一定的条件,它就会被激活,然后开始向其它细胞传递信号。

但是,对于工程师来说,这样的描述甚至仍然太复杂了。本着抽象和过度简化的原则,他们建立了神经细胞的一个非常简化的模型:人工神经元。

如何提高人类大脑的能力(最费脑子的问题)(3)

人工神经元

一个人工神经元可以分为三个部分。第一部分是输入;第二部分是信息处理;最后一部分是输出。

这是个相当简单的模型,真实的神经细胞运作的方式远远要更复杂。简单的模型好处在于编程和分析的难度都比较低。

容易的拼图

要将人工神经元拼起来,做成一个人工神经网络。这一步看起来不难,但到底怎么拼,要拼成什么样的结构,这仍然是个问题。

一个看起来明智的选择就是直接模拟大脑结构,也就是采用带有反馈的结构。

这种带有反馈的结构的确可能有更强大的性能,但它的复杂性也增加了编程和分析的难度。

如何提高人类大脑的能力(最费脑子的问题)(4)

多层前馈神经网络结构

这样的结构,是由几层人工神经元搭起来的。因为这样的层状结构中不会存在信号的反馈,所以这种结构就被称为多层前馈结构了。

从数学上可以证明,在适当的条件下,这种前馈结构的人工神经网络,只要规模足够大,就可以对任意的连续函数进行足够好的近似。这个能力就足以(在近似的意义上)解决现实中的绝大部分问题了。

牵引的连接

我们仍然需要确定对于整个网络至关重要的一些参数。如何进行信号的汇总,以及按照什么方法决定发出信号的强烈程度,都是需要确定的。

我们当然希望模拟真实的神经细胞,毕竟它是我们唯一能模仿的对象。然而,真实的神经细胞的有关机制实在过于复杂了,我们目前仍不能窥其全貌。

神经细胞发出的信号是关于接收到的信号的一个函数。类比到人工神经元的话,我们可以认为,人工神经元发出的信号就是关于输入汇总的一个函数。这类函数便于计算和性能分析,而又有真实神经元非线性的性质。

如何提高人类大脑的能力(最费脑子的问题)(5)

那么,为什么我们不选择更简单的线性函数y=ax b呢?

一个原因是,如果我们这样做的话,

由于系统的其它部分都是线性的,整个系统可以轻易简化为一个线性函数。

这样的话,我们就丢失了好不容易通过结构和连接创造出来的复杂性了,

而这样简单的系统也不能满足我们解决复杂问题的需要。

现在,万事俱备只欠东风。整个人工神经网络中,只剩下一类参数还没有确定,那就是神经元之间连接的权重,但这恰好也是最难解决的问题。

这个问题,对于自然中的神经网络——也就是各种生物的脑——也是存在的。那么,自然是怎么解决这个问题的吗?

答案就是:通过学习。

点睛的一笔

我们的人工神经网络,在很多方面都跟一只刚出生的小狗很相似:虽然蕴含着巨大的潜力,但一开始什么也不能做。既然我们可以训练小狗完成各种任务,那么,我们能不能想到一个办法,通过“训练”来确定人工神经网络的权重,从而“教会”它那些我们需要它完成的任务呢?

回想一下我们是怎么训练小狗“坐下”的。一开始我们下“坐下”的命令的时候,小狗通常会不知所措,因为它也不明白人类的语言。但偶尔它也会坐下来,这时候我们就会给它点好吃的或者摸摸头作为奖励。久而久之,这种服从命令的行为就会被逐渐强化,最后,小狗听到“坐下”的命令就会乖乖地坐下来。

对人工神经网络的训练,与训练小狗的方法其实相差不远:让它面对各种可能的情况,然后根据它做出的判断正确与否,适当地调整人工神经元之间的权重。比如说,在判断正确时,我们可以适当强化相关的人工神经元之间的连接,而在判断错误时则弱化之。在经过大量的重复训练之后,我们可以期望得到的人工神经网络能足够好地完成我们给与的任务。

到这里,大部分技术上的问题都已经解决了。对于我们选取的多层前馈网络,要训练它完成某项任务,我们先收集各种可能的情况以及应该作出的判断,然后根据这些数据利用反向传递法对人工神经网络进行大量的训练,直到它的表现足够好为止。这样得到的人工神经网络,在理论上应该就能足够好地完成任务了。

在这个过程中,仍有一些细节是需要注意的。

训练开始时,我们先给人工神经网络赋予随机的权重,避免手动选择权重所可能导致的偏差。这样的话,最后得到的人工神经网络的表现就仅仅依赖于我们用于训练的数据了。

如果训练使用的数据不够全面的话,训练出来的人工神经网络的可靠性也会降低。试想一下,如果一位厨师学徒,每天不停在练的都是粤菜,某天忽然让他做个酱骨架,那可能就做得淡而无味了。人工神经网络也是一样,要想它更好地应对各种情况的话,训练时就要让它“见识”更多不同的数据。

上面说到的学习方法,术语叫有监督学习,顾名思义就是在已经知道正确答案的情况下进行训练。实际上对于人工神经网络来说,别的学习模式(如无监督学习、强化学习)也是可以应用的,不同的学习方法可以解决不同领域的任务。

最后一点,人工神经网络并不是万能的。跟我们一样,它有时也会犯错。用人工神经网络解决某个问题,实际上就是将这个问题表达成某种统计的形式来简化解答,而在这个过程中不免会丢失原来问题的信息,使得解答并非总是准确。不过想到作为万物之灵的人类也经常犯错,人工神经网络的这点问题还是可以理解的。

美妙的画卷

但工程师并不满足于理论上的结果,他们是实践主义者,仅仅是理论上的可行性并不能成为他们接受一项新技术的理由。打个比方,理论上来说,每条河都有个源头,而要找到这个源头,只要溯河而上就可以了。殊不知当年为了探寻尼罗河的源头,有多少勇者败给了沿途的险恶环境而客死异乡。理论可以指出一条路,但这条路具体是好是坏,还是要脚踏实地走一走才知道。

幸而人工神经网络不负众望,在许多领域都有不俗的表现。人工神经网络的灵活性,是传统的计算机程序所难以比拟的。在一些需要一定灵活性的领域中,当传统的计算机程序难以解决问题时,人工神经网络就能派上用场了。

然而,相比起自然中的神经网络,人工神经网络仍然不足挂齿。无论是在结构还是在运作方式上,人工神经网络都只是动物神经系统的一个极端简化的版本,在适应性和复杂度上远远逊色于原版。但最重要的区别是规模,大自然可以将数百亿计的神经元轻易安排在我们头骨以下那几立方分米的空间中,而我们想要模拟这些神经元,就必须动用最强的超级计算机,而且还需要很长的时间才能得到一些模糊的结果。

另一个重要的区别在于学习。我们的大脑可以轻易学习各种复杂的技能,还能根据以往的经验举一反三,但对于如此高效的学习过程,科学家仍然不清楚它的具体机理,甚至不清楚它是怎么发生的。可以想象,假以时日,当科学家们看清楚大脑的各种机理之后,会给工程师们指引一条改进人工神经网络的道路。

但道路的尽头,仍然是手执数十亿年时间优势的自然。在如此漫长的时光中,即使只有试错法,自然的创造仍然是无可比拟地美丽和强大。作为造物的我们,对自然各种创造的伟大和美妙之处的理解,才刚刚开始。

如何提高人类大脑的能力(最费脑子的问题)(6)

,