我们正在经历一场智能革命,而这场智能革命建立在算法的基础上。无论是智慧城市、智能制造、智慧医疗等宏大愿景,还是自动驾驶、智能机器、虚拟现实等前沿应用,抑或是智能购物、智慧出行、智能娱乐等生活日常,“智能”的实现都离不开算法。可以说,我们生活在一个算法无所不在的时代。
古代算法思想及其发展
“算法”一词的英文“algorithm”源于波斯数学家花拉子密(AlKhwarizmi)名字的拉丁化。在数学和计算机科学中,算法是有明确定义、有限步骤且计算机可执行的,通常用于计算、数据处理和自动推理的一组指令序列。算法作为一个复杂的体系,是数学、逻辑学和计算机科学的集合。尽管第一台计算机诞生距今不过70多年,但是算法思想源远流长。
●算法思想的数学源头
中国同样有悠久的数学传统。数学在中国历史上称为“算学”,起源于仰韶文化,距今已有5000多年的历史。在距今3000年前的周朝,“数”是六艺之一。在春秋时代,十进位制的筹算已经普及。算学的文献记载最早见于《周髀算经》。《周髀算经》是中国流传至今最早的天文学和数学著作,其中记载了周公曾问商高如何测量天地高远,这是勾股定理最早的文字记录,比古希腊数学家毕达哥拉斯(Pythagoras)的证明早了500多年。中国古代数学把利用算筹进行计算的算法称为“术”,中国古代数学的成就多是用术来表述的,如成书于东汉前期的《九章算术》中的方程术、正负术、今有术,三国时期刘徽的割圆术,南宋数学家秦九韶《数术九章》中的大衍求一术等。尤其是大衍求一术,已经是相当复杂的算法,具备了现代算法的基本特征。
●算法思想的逻辑学脉络
逻辑学是一门关于推理或论证的学问,主要研究推理的有效性和正确性问题。逻辑学分别发源于古希腊、中国古代和古印度,其中古希腊逻辑最终发展成当前的国际主流逻辑。古希腊逻辑学大约诞生于公元前350年,古希腊哲学家亚里士多德(Aristotle)开创了以“三段论”为核心的词项逻辑,这是人类历史上第一个演绎逻辑体系,他关于逻辑的6篇论文被追随者汇编成《工具论》,对西方思想史产生了深远影响。公元前3世纪早期,古希腊哲学家芝诺(ZenoofCitium)创立斯多葛学派,发展了命题逻辑,但是与亚里士多德逻辑的主导地位相比影响较小。
1543年,波兰数学家及天文学家哥白尼(NicolasCopernicus)的《天体运行论》和比利时医生及解剖学家维萨留斯(AndreasVesalius)的《人体结构》在同一年出版,标志着现代科学的诞生。自然科学需要根据个别现象概括出一般性结论,以解释现象间的因果关系,但亚里士多德逻辑无法处理自然科学研究中的因果问题。1620年,英国科学家及哲学家培根(FrancisBacon)提出以观察和实验为基础的科学认识理论,开创了归纳逻辑。1843年,英国哲学家穆勒(JohnS.Mill)在培根归纳法基础上提出判断因果联系的5种逻辑方法。归纳逻辑在17世纪欧洲科学革命中起到了不可估量的作用。1666年,莱布尼茨在《论组合术》中阐述了以符号运算表述推理过程的思想,开创了符号逻辑和数理逻辑的研究。符号逻辑是现代逻辑的基础,包括命题演算和谓词演算;数理逻辑是符号逻辑在数学中的应用。1847年,英国数学家布尔(GeorgeBoole)提出的布尔逻辑就是一个命题演算系统。1928年,德国数学家希尔伯特(DavidHilbert)和阿克曼(WilhelmAckermann)在《理论逻辑原理》中提出了现在人们常用的命题演算系统。1879年,德国逻辑学家费雷格通过引入量词,将命题演算拓展成了谓词演算系统,最终完成了符号逻辑体系的构建。
人工智能时代的算法
1936年,英国数学家及计算机科学家图灵(AlanTuring)提出被称为“图灵机”的计算数学模型,其构想是将人的计算行为抽象为数学逻辑机器。图灵机是现代通用计算机的理论基础,如今所有通用计算机都是图灵机的一种实现。1943年,美国数学家香农(ClaudeE.Shannon)和图灵在贝尔实验室探讨了“人工智能”的可能性。1950年,图灵在一篇论文中预言了创造出具有真正智能的机器的可能性,并提出了判断机器是否具有智能的思想实验——图灵测试。1956年,明斯基(MarvinMinsky)、麦卡锡(JohnMcCarthy)、香农等13位科学家在美国达特茅斯学院召开会议,标志着人工智能学科的诞生,算法也由此进入人工智能时代。
●机器学习
机器学习是人工智能和计算机科学的重要分支,是基于样本数据构建模型并利用模型在没有明确编程的情况下做出预测或决策的一类算法。监督学习、无监督和强化学习是机器学习的基本方法。
●深度学习
深度学习是机器学习的一个分支,是一种模拟大脑神经网络结构对数据进行表征学习的方法。深度学习源于对人脑工作机制的研究。获得1981年诺贝尔生理学或医学奖的美国神经生理学家休伯尔(DavidHubel)和维泽尔(TorstenWiesel)发现人的视觉系统的信息处理是分级的,人类对高层特征的感知基于低层特征的组合。例如,对人脸的识别经过瞳孔摄入像素(形状判断)抽象出人脸概念——识别为人脸的过程,从低层到高层的特征表达越来越抽象和概念化。这一发现意味着大脑是一个深度架构,认知过程也是深度的,而深度学习恰恰就是通过组合低层特征形成更加抽象的高层特征。深度学习的发展可以分为感知器、神经网络和深度学习等3个阶段。
1943年,美国心理学家麦卡洛克(WarrenS.McCulloch)和数理逻辑学家皮茨(WalterPitts)提出人工神经网络的概念,并构建了人工神经元的数学模型,即MCP模型,从而开创了人工神经网络研究的时代。1949年,加拿大心理学家赫布(DonaldHebb)描述了突触可塑性的基本原理,从神经科学理论上解释了学习过程中大脑神经细胞所发生的变化。赫布理论是人工神经网络的生物学基础。1958年,罗森布拉特在康奈尔航空实验室发明感知器算法,这是世界上第一个具有完整算法描述的神经网络学习算法。感知器算法是简单配置的单层神经网络,可以区分三角形等基本形状。但是,受限于计算机硬件,感知器算法在当时无法被广泛应用。1969年,明斯基和佩珀特(SeymourPapert)证明感知器不能解决简单的异或(XOR)等线性不可分问题,感知器研究随之在20世纪70年代陷入低谷。
1959年,休伯尔和维泽尔在研究猫的视觉神经系统时发现,在大脑的初级视觉皮层中存在两种细胞:简单细胞和复杂细胞,其中,简单细胞感知光照信息,复杂细胞感知运动信息。受此启发,1980年日本计算机科学家福岛邦彦(KunihikoFukushima)提出了一个网络模型——“神经认知机”(Neocognitron)。这种网络分成多层,每层由一种神经元组成。在网络内部,两种神经元交替出现,分别用来提取图形信息和组合图形信息。这两种神经元后来分别演化成卷积层(ConvolutionLayer)和提取层(PoolingLayer)。然而,这个网络的神经元都是人工设计的而不能根据计算结果自动调整,所以只能识别少量简单数字而不具备学习能力。
1982年,美国物理学家霍普菲尔德(JohnJ.Hopfield)基于统计物理提出了有少量记忆能力的霍普菲尔德神经网络模型,开创性地论证了按照赫布法则设计权重的神经网络稳定性问题。同年,芬兰计算机科学家科霍宁(TeuvoKohonen)通过模拟大脑神经元的信号处理机制,提出了自组织映射网络,被用于数据分析和数据探索,其第一个应用领域是语音分析。科霍宁的关键发明是引入了一个系统模型,包含一个实现赢家通吃功能的竞争性神经网络和一个实现可塑性控制的子系统。1987年,美国科学家格罗斯伯格(StephenGrossberg)和卡彭特(GailCarpenter)提出了自适应共振理论网络,通过让已知信息和未知信息发生“共振”,从已知信息推测未知信息来实现类比学习。然而,这些神经网络存在学习效率不高、需要不断优化设计、网络记忆容量小等不足,实际应用范围有限。
1986年,美国心理学家鲁姆哈特(DavidRumelhart)、计算机科学家威廉姆斯(RonaldWilliams)和加拿大认知心理学家及计算机科学家欣顿(GeoffreyHinton)共同提出反向传播算法(BP算法)。BP算法通过梯度的链式法则使输出结果和真实值之间的差异反馈到每一层的权重中,从而让每一层函数都能像感知机那样得到训练。BP算法阶段性解决了神经网络自适应、自主学习的难题。1989年,贝尔实验室的法国计算机科学家杨立昆(YannLeCun)第一次成功实现了神经网络的实践应用。他将卷积神经网络与BP算法结合,提出LeNet网络。20世纪90年代,美国邮政署将LeNet网络用于自动读取信封上的邮政编码。然而,基于BP算法的神经网络仅能求解局部最优,而且这种情况随着网络层数的增加越来越严重,这一问题制约了神经网络的发展。
量子时代算法的发展
根据摩尔定律,计算机芯片的性能每18个月翻1番。然而,随着摩尔定律逼近极限,经典计算的算力增长即将遭遇瓶颈。量子计算是利用量子态的相干性、叠加性、纠缠性等量子力学特性进行信息运算、保存和处理操作的新型计算模式。量子计算可以突破经典计算机的算力极限,被认为是未来30年最有可能改变世界的颠覆性技术之一。
●量子计算理论
1979年,美国阿贡国家实验室物理学家贝尼奥夫(PaulBenioff)提出了第一个量子计算机模型。1980年,苏联数学家马宁(YuriManin)在其著作《可计算与不可计算》中同样阐述了量子计算的概念。1981年,贝尼奥夫和美国物理学家费恩曼(RichardFaynman)在麻省理工学院举行的第一届计算物理会议上就量子计算发表演讲。贝尼奥夫表示计算机可以在量子力学定律下运行,费恩曼表示使用经典计算机难以有效模拟量子系统的演化,并提出了量子计算机的基本模型。贝尼奥夫、马宁和费曼奠定了量子计算的理论基础。
1985年,英国牛津大学教授多伊奇(DavidDeutsch)首次提出了量子图灵机模型,并设计了第一个量子算法Deustch算法。然而,Deustch算法没有确定性,其成功的概率仅有50%。1992年,多伊奇和英国剑桥大学教授乔萨(RichardJozsa)在早期Deustch算法基础上提出了有确定性的Deutsch-Jozsa算法,并将其推广到n个量子比特的Deutsch问题。Deutsch-Jozsa算法首次实现了对经典算法的指数级加速,奠定了量子算法的基本思想。然而,限于当时的理论和技术水平,此时量子算法还停留在纸面设想阶段。
●量子计算核心算法
1996年,贝尔实验室的美国计算机科学家格罗弗(LovK.Grover)基于量子黑盒加速工具提出了针对乱序数据库的量子搜索算法(又称为Grover算法)。Grover算法从本质上解决了函数求逆的任务,使无序数据库中“大海捞针”成为可能,其在密码学上的应用可以加速对称密钥算法的破解。然而,原始的Grover算法只能以一定概率输出正确结果,在一些特殊情况下输出错误结果的概率较大。2001年,清华大学教授龙鲁桂利用相位匹配的技巧将Grover算法的成功概率提高到100%,即龙算法。
Shor算法和Grover算法提出之后,量子算法研究进展缓慢。2003年,肖尔发出著名的“肖尔之问”,即为什么难以发现更多的量子算法。肖尔对这一问题的解释是,量子计算机的运行模式与经典计算机不同,以至于经典算法中的构造设计技巧和直觉在量子计算过程中不再成立。
2002年,龙鲁桂提出酉算符线性叠加的对偶量子算法。酉算符是泛函分析中定义在希尔伯特空间上的有界线性算符,Shor算法和Grover算法都是通过酉算符对信息进行处理。由于酉算符只允许乘除运算,经典计算中的许多技巧不能用于量子计算。对偶量子算法通过引入辅助比特以实现非酉操作,这使酉算符的加减乘除四则运算成为可能,从而解决了经典算法转化为量子算法的问题。2009年,美国麻省理工学院的哈罗(AramW.Harrow)、哈希迪姆(AvinatanHassidim)和劳埃德(SethLloyd)基于酉算符线性叠加提出可求解线性方程组的HHL算法。求解线性方程组是很多科学和工程问题的核心,HHL算法相对于经典计算有指数加速的效果,因此在机器学习、数据拟合等多种场景中展示出巨大优势。
●量子人工智能算法
算法是人工智能的基础。当前,数据和算力已经不再是人工智能发展的主要瓶颈,人工智能的创新主要就是算法的创新。随着人工智能在国家治理、经济发展、科技创新、医疗保健、教育培训,乃至日常生活的应用日益广泛和深入,算法越来越重要。在这样的背景下,只有不断探索新的算法机制,发展新的算法应用,开发新的算法模型,发掘和培养算法人才,才能为推动智能社会发展提供强劲动力。
尊敬的用户,您未能注册“中国数字科技馆”账号,请重新注册!