一 从人工智能谈起
1950年,计算机科学的先驱——阿兰图灵提出「Can machines think?」
通常理解的人工智能,就是让机器可以学习,而非编程的方式实现,即习而识之。就如同我们创造一个类人物种,让它具有视觉、听觉、触觉、语言等功能,不断教它更多的知识,使其慢慢能够记忆、推理、决策甚至主动思考。
近年来人工智能的发展,得益于深度学习方面的进步。深度学习(Deep Learning)作为机器学习拉出的分支,使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象。深度学习至今已经有数种框架,如深度神经网络、卷积神经网络和深度信念网络和递归神经网络,已被应用于计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域,并获取了极好的效果。
目前颇具吸引力的深度学习结构是卷积神经网络(convolutional neuron networks,CNN),它由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更优的结果,而且需要估计的参数更少。
2012年,多伦多大学的 Krizhevsky 等人构造了一个超大型卷积神经网络,有9层,共65万个神经元,6千万个参数。网络的输入是图片,输出是1000个类,比如小虫、美洲豹、救生船等等。这个模型的训练需要海量图片,它的分类准确率也完爆先前所有分类器。纽约大学的 Zeiler 和 Fergusi 把这个网络中某些神经元挑出来,把响应特别大的输入图像放在一起,看有什么共同点。最后发现,中间层的神经元响应了某些十分抽象的特征。
第一层神经元主要负责识别颜色和简单纹理
第二层的一些神经元可以识别更加细化的纹理,比如布纹、刻度、叶纹。
第三层的一些神经元负责感受黑夜里的黄色烛光、鸡蛋黄、高光。
第四层的一些神经元负责识别萌狗的脸、七星瓢虫和一堆圆形物体的存在。
第五层的一些神经元可以识别出花、圆形屋顶、键盘、鸟、黑眼圈动物。
这里面的概念并不是整个网络的输出,是网络中间层神经元的偏好,它们为后面的神经元服务。虽然每一个神经元都只负责简单的判断,但是各司其职的65万个神经元构成整体,爆发的学习力是超强的。
二 人工智能开源神器 TensorFlow
上一部分讲到的神经网络,理解了多层处理的概念。近期,开源了的 Google TensorFlow 做了一个非常直观的神经网络 playground,名字拆开来看的话,是 tensor(张量)的 flow(流动),理解上就是「张量如何流动」。TensorFlow™ 采用数据流图(data flow graphs)用于数值计算,节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。
网址:playground.tensorflow.org/
打开网页后,总体来说,蓝色代表正值,黄色代表负值。下面具体操作来看。
首先选择数据,在二维平面内,若干点被标记成了两种颜色,黄色和蓝色,表示想要区分的两类,可以把平面内的任意点标记成任意颜色。网页里提供了4种规律,选择后,神经网络就会根据给的数据进行训练,再分类相同规律的点。
然后是输入,就是在二维平面内,你想给网络多少关于「点」的信息。X1 是左右颜色分开的,表示横坐标值,而 X2 是上下分开的,表示纵坐标值。下边还可以选择平方值,代表横纵坐标的「抛物线」信息。总之给到更多这个点的信息,就会越容易被分开。
下面是连接线,用来表示权重。蓝色表示用神经元的原始输出,黄色表示用负输出,深浅表示权重的绝对值大小。鼠标放在线上可以看到具体值,是可以更改的。在图1中,当把 X2 输出的一个权重改为-1时,X2 的形状就变成了上黄下蓝。在图2中,当换成值域为(0,1)的 sigmoid 时,会发现没有黄色区域了。
图1
图2
最后来看一下输出结果。黄色背景颜色被归为黄点类,而蓝色背景颜色归为蓝点类,深浅则表示可能性的强弱。
大家看一下上边的图右侧部分,所有在黄色背景中的点都被分类为「黄点」,蓝色区域的点被归为「蓝点」。再看下左侧的部分,每一层都是通过上一层信息的组合形成的,而权重,也就是连接线控制了「如何组合」。
我们所说的神经网络,其实就是从数据中学习如何分配权重。经过训练的神经网络,得到正确结果的准确率就可以持续提升。拿深度卷积神经网络来说,其在2012年就有了标志性突破。Hinton 带领他的两位博士生,在计算机视觉识别领域「奥斯卡」ILSVRC 比赛中获得了冠军,测试数据集 ImageNet 有1500万幅图片,涉及22000种分类,如猫、狗、大象等。他们当时使用了两块 GPU 加速,训练一周后,Top-5 错误率降到了15.3%,而传统的视觉方法最好结果是26.2%。这样的进步很大程度也得益于,将深度卷积神经网络与大数据(1500万幅图片)和 GPU Cuda 并行编程结合了起来。这样的算法、算力加大数据的结合,也正成为人工智能领域的标配。
三 从「进化」视角看「神经网络」
TensorFlow 展示了数据如何层层过滤,逐步流向终点。
仔细看会发现,识别一张脸的过程,倒过来就是物质进化的过程。那么神经网络的学习过程,其实就是学习物质组成方式的过程。对于每一层神经网络的理解,其实就是通过现有的不同物质组合成为新物质的过程。
按照进化的理论,从原始简单生物进化成为复杂有智慧的物种,任何物种都是从其他物种演变而来。再往微观去看,生物体生长和繁殖的基础,通常由一个母细胞产生两个或若干子细胞。恰如《周易》所言:「易有大恒,是生两仪。两仪生四象,四象生八卦。」(马王堆出土本)
我们的物理世界,就是一个不断并行组合、再次迭代的过程,造物主创造了一套神经网络系统,不断进化发展。而我们倾尽全力去学习《黑客帝国》中 Matrix 的方法论,不断做关系的拆分。这样的拆分就是信息的回卷,是变体的消除,也是不确定性的缩减。于是,我们无限的接近我们本真的样子。
写到这,让我想到了以色列作家尤瓦尔赫拉里的《人类简史》。人类历史上从认知革命跨越到农业革命阶段,智人开始从单纯的采摘捕猎,转变为种植农作物协作群居的方式,人口也开始快速的增长。看起来是巨大的进步,但却变成了沉重的负担。过去「棒打狍子瓢舀鱼」的物质生活不复存在,取而代之的是儿童大量死去,成人也为了换得面包累得满头大汗。公元前8500年智人的生活,要比公元前9500年或公元前13000年更为辛苦。
为什么人类会犯下如此致命的误判?其实人类历史上不断重蹈覆辙的道理都不尽相同:因为我们永远无法了解各种决定最后的结果。一心追求更为轻松的生活,于是释放出一股巨大的力量,改变了世界的面貌,但结果似乎并非是大家所乐见的。
人类在不可抗拒的卷入一波又一波的历史洪流中,无法逆转。预言家真的能预知未来?或许就是看到了人类历史发展的必然。