购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 计算思维

1.复杂问题

如图1-1和图1-2所示,平面上有4个点,其中,(0,0)、(1,1)为一类,(0,1)、(1,0)为另一类。

图1-1 异或问题(非线性可分)

图1-2 异或问题(线性可分)

线性可分就是指通过平面上的一条直线 ax + by + c =0,可以将这两类点划分到直线的两侧。假设存在这样的直线,(0,0)和(1,1)在直线的正侧,(0,1)和(1,0)在直线的负侧,将(0,0)和(1,1)代入直线方程,则有

将(0,1)和(1,0)代入直线方程,则有

将式(1-3)和式(1-4)相加并减去式(1-1),可得

a + b + c <0

这与式(1-2)矛盾,因此这样的直线不存在。由此可见,异或问题本质上是一种线性不可分问题。异或真值表如表1-1所示。

表1-1 异或真值表

想要分割这个异或平面,需要两条直线,但是线性分割的内涵就是“一刀切”,这是“复杂问题不能用简单方法来解决”的含义。

2.问题求解

假设计算机仅有简单的与、或、非逻辑电路,那么单独应用某种逻辑电路是无法求解异或问题的,因为单独的逻辑电路都是线性可分的。但将简单的逻辑电路组合起来,就能设计出解决异或问题的计算系统,如图1-3所示。该计算系统的真值表如表1-2所示。

图1-3 解决异或问题的计算系统

表1-2 解决异或问题的计算系统的真值表

上述计算系统的C程序实现如下:

3.解题(计算思维)分析

(1)“计算”是事物从一种信息状态转变为另一种信息状态的过程(不局限于数学中的运算),它本是一个自然的过程,但人们为了研究这个过程,定义了记录和描述信息状态与过程变化的符号,并用这些符号推导和模拟了实现转变的过程。虽然计算有多种形式,但它们都具有相同的特征。了解计算的特征有助于区分、辨别计算过程,认识计算的本质。根据计算的实现过程,可发现计算具有如下特征。

具有相应的符号系统:符号系统用于编码信息,也包括参与运算的操作符。计算是模拟自然信息状态变化的过程,必须精确、简单,用自然语言描述自然信息状态的变化过程会显得比较烦琐,因此各计算系统都有相应的符号系统。例如,数学中的数字与各种运算符,计算机中的0、1代码等。

具有相应的推理规则:符号是计算系统中表示信息的方式,当符号从一种表示方式变化成另一种表示方式时,意味着信息的转换,而实现这种转换需要有相应的推理规则,如数学中的各种运算规则与定理。

具有稳定的信息状态:稳定的信息状态包括符号系统的稳定和推理规则的稳定。例如,计算机中的数字信号、DNA计算中的碱基对,这些符号状态必须是稳定的,不能随意变化,只能在推理规则下发生相应的改变;此外,运用同样的推理规则可以得到相同的结果。

具有输入与输出:输入是信息的初始状态,输出是信息的结果状态,从输入到输出的变化过程是由上述符号系统、推理规则共同完成的。

任何计算(包括四则运算)都可以转换为逻辑运算来实现,分类问题也可以计算求解。

(2)计算系统是执行程序的系统,图1-3用简单的逻辑电路搭建的异或门电路也是计算系统。计算系统不局限于计算机。

(3)如何进行计算?计算就是要寻找机器可以执行的程序,由机器来执行重复的、简单的“动作”以获得计算结果。程序是按事先设计好的功能和性能要求执行的指令序列,它是实现系统复杂功能的一种重要手段,即随使用者使用目的的不同,对机器基本动作的千变万化的组合。程序的基本特征是复合、抽象和构造。复合是指对简单元素进行各种组合;抽象是指对各种元素的组合进行命名并将其用于更为复杂的组合;构造的基本手段是迭代和递归,用有限的语句来表达近乎无限的、重复的对象或动作。

程序不局限于软件,也可以用硬件来编程,上述搭建异或门电路的过程就是编程,所用的指令集就是与门电路、或门电路和与非门电路。

上述编程过程概述为:首先对物理世界/语义信息进行抽象化、符号化,然后通过进位制和编码将其转换成0和1,最后采用基于二进制的算术运算和逻辑运算进行数字计算,便可以用硬件与软件实现,即语义符号化→符号计算化→计算0/1化→0/1自动化→分层构造化→构造集成化。

(4)硬件系统的含义是用正确的、低复杂度的芯片电路组合形成的高复杂度的电路,逐渐组合,功能越来越强,即层次化、构造化。这种思维是计算及其自动化的基本思维之一。例如,图1-3所示的电路就是基于逻辑门电路的硬件系统,中央处理单元(CPU)中的ALU(算术逻辑单元)是基于全加器的硬件系统,而全加器也是由逻辑门电路组成的。

(5)由图1-3和上述C程序可知,软件编程与硬件编程可相互替代。硬件编程的实时性较好,但灵活性较差;软件编程的灵活性较好,但实时性较差。

(6)程序是“构造”出来的:由简单元素通过组合构造出复杂元素,进而通过抽象对其进行命名,复杂元素又被当作简单元素参与组合,如此逐层构造。注意:图1-3所示的计算系统有两层,由于异或问题是线性不可分的,而单层只能解决线性问题,因此要增加层数。可以说,层数的增加使计算系统有了质的飞越(使线性逻辑电路能解决非线性问题),而编程就是“增加层数”。

(7)“层”是神经网络中的重要概念。在神经网络中,单层感知机无法解决异或问题,这和单层与、或、非逻辑电路不能解决异或问题在本质上是相同的;但多层感知机可以解决异或问题。多层感知机的核心结构就是隐藏层,之所以被称为隐藏层,是因为这些神经元并不属于网络的输入或输出。在多层神经网络中,隐藏神经元的作用在于进行特征检测。随着学习过程的不断进行,隐藏神经元将训练数据变换到新的特征空间,并逐渐识别出训练数据的突出特征。

下面用多层感知机来求解异或问题,如图1-4所示。其中的符号与图1-3及上述C程序对应。

图1-4 3层感知机实现异或计算

图1-4和图1-3有什么区别呢?在图1-4中,可以为线赋予权重,并且该权重可调,这是智能算法能“学习”的本质,也是软件与硬件在灵活性上的差异的体现。

(8)支持向量机(Support Vector Machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点。支持向量机的出现是机器学习领域的另一大重要突破,其目的就是想要画出一条线,以便“最好地”区分不同类的点,以致后续有了新的点,这条线也能做出很好的分类,如图1-5所示。

但画线的标准是什么呢?如何判断这条线的效果是否好呢?如图1-6所示,可以区分两类点的线有无数条,每条线都可以成为一个划分超平面(因为样本的特征很可能是高维的,此时,能区分样本空间的就不是一条线了,所以称之为超平面)。我们希望找到的这条效果最好的线就是具有最大间隔的划分超平面。对于比较好的划分超平面,样本局部扰动对它的影响最小、产生的分类结果最好。

图1-5 支持向量机图示

图1-6 支持向量机分类标准

(9)隐藏层的增加将传统的简单神经网络进化到深度学习领域,解决分类问题的能力也产生了质的飞越。

人工智能神经网络(特别是其中的深度学习神经网络)并不是指物理上的结构,而是指那些从大脑的运作原理中获得灵感的算法。算法中的节点就如同神经元,互相之间由突触连接。对于深度学习算法,神经元分为不同的层。网络层的数量及其每层的神经元数量取决于神经网络所要完成的任务(如图像分析、文本分析和音频分析)。输入的信号经过第一层神经元的处理后传到下一层,依次类推。

对于每层神经元,由前一层传输而来的信号要乘上其对应突触的系数,并求和,即计算其加权和。这些系数定义了“突触函数”,神经网络在经历学习阶段时,就是在调整这些系数。在学习阶段,我们将输入数据提交给神经网络,神经网络执行运算,得到一定的结果,这个结果会与正确的结果进行对比。例如,让神经网络识别人脸图片,如果它认错了一张照片,那么突触的加权系数就会通过一种名为反向传播的数学方法来修正系数。应用了这种方法的统计学工具能够从第一层到最后一层逐一调整每个神经元的系数。

深度学习是利用包含多个隐藏层的人工神经网络来实现学习的。在多层感知机中,两个隐藏层足以解决任何类型的非线性分类问题,因而浅层神经网络最多包含两个隐藏层。与浅层神经网络相比,多个隐藏层会给深度学习带来无与伦比的优势,这些隐藏层逐层提取了大数据中复杂抽象的特点。

在深度学习中,每层都可以对数据进行不同水平的抽象,层与层之间相互连接;随着层数的增加,低层特征不断融合成为高层特征;层间的交互能够使较高层在较低层得到的特征基础上实现更加复杂的特征提取。不同层上特征的组合既能解决更加复杂的非线性问题,又能识别更加复杂的非线性模式。例如,一个深度学习系统从大量包含人脸的图片中通过叠加的隐藏层提取出了人脸的特征,计算机“掌握”了“人脸”这一概念。在深度学习中,这个过程可以利用多个隐藏层进行模拟。如图1-7所示,第一个隐藏层由像素学习到“边缘”特征,第二个隐藏层学习到由“边缘”组成的“轮廓”特征,最后的隐藏层学习到由“轮廓”组成的“目标”特征。当然,这样的识别思想不只适用于视觉信息的处理,对其他类型的信息同样适用。

图1-7 深度学习中的隐藏层

因此,隐藏层的概念对于我们理解概念的提取与创造过程有着重要的启发意义,这一过程在各学科中都是有普适性的,因此可以认为隐藏层本身就是最有用的概念。人工智能算法中的层和计算系统中的层是统一的,因为它们都是程序,智能的载体工具是思维。

图1-8所示为人工智能技术的发展。本节以异或问题为例,论述了其中的多层感知机、支持向量机、深度神经网络在解决分类问题上的特点,即随着隐藏层数的增多,网络结构变得更加复杂,可分类问题的复杂程度也随之增大。此外,深度神经网络的应用也需要大数据和具有超强计算能力的GP U硬件的支持。

计算系统是电子信息科学技术的核心,可以把电子信息科学技术的知识架构类比于生物系统,如图1-9所示。生物系统从基本的原子、分子,形成蛋白质、核酸、细胞器、细胞、组织、器官、系统到个体,在不同的层次上形成不同的生物(有低等生物和高等生物、植物和动物),每一层次各自独立又相互联系,有着从低到高的递进关系,低层次生物的进化决定了高层次生物的特性和发展。电子信息科学技术的知识架构与此类似。电子信息学科从基础物理学发展而来,从场与电荷载体的相互作用开始,到电势(电流、电压)与电路之间的关系;从电路里分化出逻辑电路,从电势与电路之间的关系,到比特与逻辑之间的相互关系(比特层);在逻辑电路的基础上研制出CPU,从位与逻辑之间的关系,到程序与CPU之间的关系;给CPU加上操作系统后,就有了计算机,在计算机这个层面上不再讨论具体的CPU,而关注数据和算法;计算机互联形成网络,数据包与网络之间的关系又有质的飞跃;这样一直到人的大脑处理的各种媒体,形成认知与媒体之间的关系。这几个层次实际上构成了电子信息科学技术整个知识的脉络,而且每个层次对问题的描述都有质的、革命性的变化,整个架构从基本功能系统到多功能复杂系统,都与生物系统的变革非常类似。

图1-8 人工智能技术的发展

图1-9 电子信息科学技术的知识架构与生物系统的类比

电子信息科学技术的知识架构如图1-10所示,知识的核心概念可以归纳在“信息载体与系统的相互作用”这一整体脉络下。信息载体用于携带信息,信息不可能离开信息载体而存在。不同的信息载体有不同的系统与之相互作用。在每个层次上,都是不同的信息载体与相应的系统相互作用,各层次之间相互关联,逐次递进。本节所举的异或计算实例就是从比特层讲起,最终讲到认知层(深度学习)的,说明知识的底层是相通的。如果能深入洞察底层,就具有了计算思维的能力。

图1-10 电子信息科学技术的知识架构 gvgxP2n9ev3LqXl2Fj0+ZjD9TNueSmstER0VNdQcobaGvusubFWWJnlaYuy02lNl

点击中间区域
呼出菜单
上一章
目录
下一章
×