铜仁市论坛

首页 » 分类 » 问答 » 算法面试真题挑战,30道经典题15
TUhjnbcbe - 2021/5/14 5:46:00

肖峰教授

摘要

计算机和人工智能赋予了“算法”专门的含义,使其成为联结人的认知和智能机器信息处理过程的纽带,也使得我们对认知的理解和阐释新增了算法的视角。认知和算法的相关性为认知的算法阐释提供了根据和条件,而算法驱动下的认知增强则使相关性阐释推进到因果性阐释,使得认知的机理得到一系列新的说明。算法以机器的运行为载体时,就成为映射在人工系统上的“活体”,可以作为我们对认知加以客观研究的实在对象和新的平台。

算法是一个可以将计算机的信息处理(所谓“机器思维”“人工认知”“人工智能”等)和人的认知联通起来的概念。智能时代人类的认知正在受到人工智能全面而深刻的影响,作为其核心的算法技术尤其需要加以重视,以至于有必要开发一种从算法去阐释认知的新视角,这一视角某种意义上同已有几百年历史的“认知的计算阐释”有关,但又不完全等同,因为它不是像计算主义那样要把认知的本质归结为符号或表征的计算,而主要是力求从方法论上去理解算法所折射的认知机理,以一种“有限的合理性”来拓展我们考察人类认知的视界,从而协助哲学认识论研究走向深化,如同认知科学家萨迦德所说,体现算法的计算程序模型的引入对人类认识的考察具有非比寻常的意义,它不但能够描述各类解题和学习活动,更能解释心智是如何完成这些操作的。

一、认知的算法相关性

“算法”在不同的语境下有不同的含义,其中最重要的区分应该是发明计算机之前和发明计算机之后的不同用法,“有计算机前就有了算法,有了计算机后有了更多的算法,算法是计算的核心”。发明计算机之前的算法主要存在于人的生活与科学认知活动中,表现为“生活算法”(诸如菜谱、家用电器的操作指南等办事的程序,指的是“完成一个任务所需要的一系列步骤”)和“数学算法”(如加减乘除就是我们所熟知的数学算法,即用于数学计算的方法),可统称为“日常算法”,或“非计算机算法”。当人的日常认知活动也是“按部就班”地处理或思考某些问题时,就可以解析出日常算法来。但自从有了计算机后,算法就日益成为计算机科学领域中的专用词汇,人们谈论算法时,通常的所指就是运行在计算机上的算法。广义算法表明不仅计算机需要算法,人的日常生活也涉及使用算法,于是,人的认知(或至少一部分认知,即一部分基于符号的形式化的认知)和计算机的信息处理都有算法的属性。认知中所贯穿的算法也表现为我们通常所说的“思维方法”“认知图式”及“认识模式”等,由此也可将其称为“认知算法”。这样的算法用日常的语言文字表达出来就是“自然语言算法”,也是普特南所说的“大脑确实使用算法”所蕴含的意思。人脑中的认知算法可以转化为计算机编程语言来表达,一旦如此就成为计算机的程序算法。接下来我们所要探讨的问题是,后于日常算法出现的计算机算法即狭义算法与人的认知之间具有何种相关性?

首先,可以从计算机算法的起源上看。

计算机算法来自人的认知算法。一般来说,人的认知活动总要使用一定的方法,这样的方法如果能够形式化为算法语言表达的运算序列,就可以被建构为由计算机执行的算法,因此机器算法通常就是通过这样的“转换”而从日常认知方法中生成的,从这个意义上,计算机算法就是外化了的人脑中的认知算法,或者说是内在的人脑算法负载于机器上的“显现”。如果说当前关于算法的使用更多地收敛于计算机科学,那么它终究是从人脑的认知现象中发散而来的,其过程如同德雷福斯所揭示的,“一般是先以人为对象,采集原型,然后对这些原型进行分析,一发现这些对象所使用的启发法,再写出一个体现类似经验的做法的程序来”。而计算机的程序就是可以在机器上实际运行的算法。这样的起源关系使得计算机算法基本上都可以从人的认知方法中找到原型或影子。如贝叶斯算法就是模仿了人在信息不准确不充分的条件下进行决策和判断的认知方法,即基于先验概率(源于先前的经验积累)进行试错和纠错的迭代循环来取得理想(符合实际情况)的结果;深度学习算法则是从大脑的学习机制中汲取灵感来不断改进机器的学习能力。即使是模仿自然现象的算法(如遗传算法、蚁群算法、免疫算法等),也是基于人对自然现象的理解进而模仿为思维方法后,再将其建构为机器算法。随着算法技术的发展,其直接来源日趋多样化,如机器学习算法中“有些以大脑为基础,有些以进化为基础,有些则以抽象的数学原理为基础”,“以大脑为基础”的学习算法(如深度学习)是直接受人脑的结构所启发而产生的:人脑在学习中增强了神经元之间的联系,形成了对刺激的内部表征,这些神经元之间相互联系的整体,就构成了脑内使用的算法;正是受此启发,人工智能学者开始了在计算机上建构起有学习功能的人工神经网络模型来实现这一功能的努力,他们根据神经元不同的激活状态来建立模型,描述神经元之间的联结权重如何变化,并在机器上通过改变联结权重来创造自己的知识表征与逻辑,由此发展出各种各样的学习算法。可见算法归根到底都是对人脑从方法论层次上把握对象的一种形式转换。这种转换或外化的过程,使得计算机算法与人的认知形成了特定的哲学关联:它源于认知又异于认知,是认知的脑外延展,从而也可视为是与人工智能相关联的延展认知的一种形式,或者说是人工认知的方法论存在。这种存在一旦在计算机载体上运行,则会使人在一种外部设备或人工过程中看到人脑认知的影子,从而可以从中“客观地”去把握自己的主观认知的种种特征,摆脱因为“只缘身在庐山中”的限制所造成的人对自身认知(自然智能)的茫然。

其次,可以从算法的表达上看。

算法有多种表达方式,如自然语言、图(流程图、N-S图、pad图)、伪代码直至计算机程序语言都可以表达算法。当算法用自然语言表达时,十分靠近日常认知,此时就如同将日常认知中的逻辑序列揭示了出来,或者可视其为突出逻辑性的日常认知。当算法用伪代码表示出来时,算法就呈现出向机器语言的过渡。而算法一旦用计算机程序语言来表达时就变成为计算机可以识别和执行的具体指令的集合,就完全进入了实施或算法操作的“计算机世界”。可见,算法的各种表达方式构成了一个基于人的理解到基于机器理解的转化序列,其内容上的相同与表述形式上的不同,揭示了人的认知与计算机的信息处理之间的同一性和差异性。由于在表达方式上兼具自然语言和计算机语言的“双重性”,所以算法就成为日常认知和计算机运作的“纽带”,也是人的思维和机器思维之间的桥梁或中介:它将人的意图“翻译”给机器,成为人和机器之间的“通约装置”。它之所以能充当这样的中介,是由算法的“能行有效性”所保障的,即算法的所有运算必须在原则上可由人们用笔和纸在有限时间内精确地完成。这样,算法可被视为认知的一种新的表达方式,它将自然语言的表达和机器语言的表达联系起来,从而使得人脑的认知功能和机器的信息处理功能也联系起来。

再次,还可从算法的功能上看。

对计算机来说,算法就是“怎么做”的指令;对人来说,算法就是“怎么想”的思路,因此人的认知(至少那些有意识地进行的认知)和计算机的“工作”都是算法导向的活动,于是从功能上看算法也可以将人的认知与机器思维联通起来。算法实现了认知方法的对象化,使其从具身化(负载于人身上)的存在转变为具机化(负载于机器之上)或具技化(负载于技术装置上)的存在,目的是在计算机上能够实现类似于人的认知功能。算法由此成为一种离不开机器的功能性实在,或一种信息实在。在一定的背景下,我们可以只

1
查看完整版本: 算法面试真题挑战,30道经典题15