摘  要:本文通过机器发现研究中的启发式搜索法、机器学习研究中的归纳算法,以及Prolog系统的非单调性质,揭示计算机模拟技术在逻辑、方法论上的一些新特点。

关键词:启发式搜索;机器学习;Prolog系统;逻辑;方法论

随着计算机科学技术的发展,用计算机模拟人类实际科学推理的思维过程成为可能。于是,在计算机人工智能与认知心理学研究的交叉点上形成了“人类问题求解”理论。同时又在计算机人工智能与逻辑研究的交叉点形成了适用于计算机的新颖逻辑理论及算法。

计算机人工智能(AI)研究者分裂为两大派:AI认知心理学派与AI逻辑学派。H·西蒙为认知心理学派提出了研究纲领:“让人工智能借用心理学,又让心理学借用人工智能成果”。① 认知心理学派把思维看作有选择地搜索迷宫的心理过程,而逻辑学派则把思维看作一个由前提进行推理的逻辑过程。②  这两派中无论哪一派,对于思维的计算机模拟研究,包括机器学习和机器发现方面的研究,都为逻辑和科学方法论带来革命性变化和新的启示。

第一部分,我们先谈谈AI认知学派的启发式搜索法的方法论启示。

认知心理学派在对一系列科学发现的案例进行细致分析并进行计算机模拟研究之后断言,人类的科学推理过程的实质就是启发式搜索的过程,换句话说,人类进行问题求解时所用的启发式搜索法就是科学探索和科学发现的逻辑与方法。这就是他们的问题求解理论的基本内核。如果说,按照人工智能(AI)的认知心理学的观点,科学探索的计算研究或“机器发现”研究的主要目标就是为人类推理的思维过程建立一些认知模型。那末,与此相对照,人工智能逻辑学派或图灵传统的“机器发现”研究的主要目标则是,编制某种严格可操作的算法或自动程序,让它最大限度自主地作出某些新发现,在有限步骤内求得问题的解。西蒙更偏爱启发式方法,因为这类方法常常能利用人类已有的一些经验规则或知识作提示,在寻求问题的解决方案过程中可以大大缩小可能性空间,减少盲目性,极大地提高搜索效率。启发式方法并不提供严格的算法与直接的答案,却是指示了一步一步接近解决问题的正确方向。

最著名的机器发现程序是BACON1-6,这是H·西蒙与P·兰利等人所设计的,旨在用计算机完成重大科学定律的再发现的一组程序。

这一组程序之所以用培根来命名是因为它们结合并运用了培根的归纳推理方法,体现了培根的“归纳机器”的理想。③ 概括地说,BACON 1-6程序有共同的发现方法和共同的数据与定律的表征形式,其间的差别仅在于从数据中搜索科学定律的启发法有所不同。BACON 1是其中最简单、最基本的一个发现程序,后面的程序一个比一个地更复杂,保留一些又增添一些启发式方法。让我们以BACON 1发现玻义耳定律与开普勒第三定律作为案例。按照孔宪中在《人工智能与科学哲学》一文 ④ 中所作的简化处理:

(1)玻义耳定律:PV=C(即一定量的气体,压力P体积V之间存在反比关系)。试问能否给机械编个程序,让它来胜任玻义耳的发现呢?兰利说,BACON1能做到。它期待从P与V的某种简单的函数关系中产生常量,基本的策略是一次试验一个可能的函数,按+-×÷顺序,从最简单的开始。这里假定了八个可能的简单函数:P,V,(P+V),(P-V),(V-P),PV,P/V,V/P。看起来这样做是符合培根的科学哲学精神的。因为培根的排除性归纳法要求首先列出各种可供选择的可能原因,然后根据限制条件一个一个地排除其中的不可能者,直至最终确定真正的原因为止。BACOA1程序根据所输入的P和V的18行数据,通过快速运算依次一个个地试测不同的可能函数,试到第6个函数PV,终于在所允许的误差范围内得到了常量。至此兰利就宣称AI用这种方式重新发现了玻义耳定律。(2)稍微复杂一点的例子是,开普勒行星第三定律D3/T2=C的再发现。这个定律说某个行星与太阳之间的平均距离D的立方除以行星运行周期T的平方等于一个常数。BACON1被提供6个行星(金木水火土加上地球)的D与T的一个个数据。然后,象上一个例子一样,AI试图发现常数的存在。这一回试测的可能函数是DT、D/T、T/D、D2/T、T/D2、T2/D、D/T2、D2/T2、T2/D2、D3/T、T/D3、T3/D、D/T3、D3/T2等等。实际上,在牛顿力学中广泛存在着正比、反比、平方正比、平方反比等关系,因此看起来这样的试测仍是合乎情理的。如果按DACON1.程序来操作,只须经过13次试验就可以得到开普勒第三定律。尝试13个函数对电脑来说算不了什么。

孔宪中先生对BACON程序的简化解释,初看起来似乎非常好,画龙点睛,说明实质。笔者起先也相信是这样。后来再仔细一分析,却发现这种简化解释恰恰在很大程度上把启发式方法的活的灵魂丢失掉了。对于较复杂的开普勒定律尤其是这样。实质上,对于BACN 1 程序来说,关键之处正在于将观测数据引导到经验定律的那三条启发式原则:(1)如果某一项的值为常数,则可推得这一项始终为常数(常数的出现正是科学定律的标志);(2)如果两个被比较的数值项的值一齐增加,则考虑它们的比值,为的是寻求并得到常数和定律(我想应当补充说,被比较的数值项的选择原则是按差距的从大到小的顺序来比较);(3)如果两项数值一增一减,则考虑它们的乘积,为的是得到常数和定律(我想应当补充说,被比较的数值项的选择原则是按差距的从小到大的顺序来比较)。⑤

若按照这三条启发法对开普勒第三定律的机器发现作重新解释,应当是这样(见附表所示假想数据):

(附表)

表中先给出一组三个行星A、B、C的离太阳平均距离及公转周期的假想数据。由于D与T一齐增大,按启发法二,则考虑其比值D/T,看看是否得到常数;结果不是常数,就再将第一比值与D比较,结果发现是一增一减,则按启发法三相乘,可得第二比值,仍然未得到常数;再将第二比值与T比较,发现是一起增大,按启发法二两个值相除,得到第三比值,仍然未得到常数;再将第三比值与D比较,发现是一起增大,按启发法二两个值相除,于是得到常数,同时发现定律。

假若按照孔宪中先生对BACON程序按试错法方式的解释,就很难对付批评者的指责:似乎因为事先知道了定律的结果,再去设计达到目的捷径。否则,何以能克服试错的盲目性。

我们的重新表述突出了启发法的引导作用。这三条启发式原则是兰利、西蒙等人对人类解题过程的心理分析与理性重建的结果,是一种合理的抽象。按照西蒙的理论,可以将上述BACON 1 程序的“机器发现”过程,看作一种问题求解过程。其中关于行星的D与P的开普勒数据,相当于问题的初态,三种启发法相当于算子,三个比值相当于问题空间中的节点,经过一系列启发式搜索之后,BACON 1 就可以得到行星距离周期间关系问题的恰当答案。对于玻义耳定律,则只需使用启发法三就足够了。

BACON1按同理也对伽利略匀加速运动定律和欧姆定律进行了再发现。BACON3是程序1的推广,借助于它重新发现了理想气体定律与库仑定律等定律。BACON4再发现了光的折射定律和动量守恒等更复杂的定律。

有关科学发现有无逻辑、有无方法论规则,是逻辑、科学哲学、科学方法论研究者长期争论不休却又没有结果的难题。计算机人工智能研究者所发明的“机器发现程序”和启发式搜索法,用实实在在的科研成果消解了这一难题。它令人信服地表明,科学发现即使没有固定的机械程序,却仍可以有启发式的助发现方法。

第二部分主要谈谈AI逻辑学派如何使归纳推理实现机械化的新方法。

人工智能研究中的图灵传统就是AI逻辑学派的代表。图灵传统的主要特色在于关注逻辑及其在计算机中的应用。正当西蒙及其心理学派试图用计算机中的启发式搜索程序来模拟人类现成的归纳推理过程时,与此相反地,图灵传统中的研究却是通过逻辑分析来建构作为严密算法核心的基本归纳推理规则,而并不重视人类实际推理的心理过程。

图灵传统在作为人工智能分支的机器学习研究中大有用武之地。机器学习的研究再次表明,在计算机时代,培根式的机械归纳程序不再是梦想,它不仅实际存在而且经常被应用。各种不同的机器学习算法都有一个最主要的共有特征是,机械地可操作的归纳推理规则确实存在。另外两个特征其一是背景知识与经验证据在归纳规则中共同起作用;其二是在重复使用基本的归纳推理规则以求得最终结果时,排除性的检验(即证伪)起重要作用,要不然就不成其为“排除性归纳法”。⑥

AI逻辑学派在机器学习中的归纳算法是实现培根归纳机器理想的又一重要途径,它有别于AI心理学派的启发式搜索与机器发现研究。

机器学习按性质分为属性学习与关系学习两类,同时又按算法分为自上而下或自下而上那样两种归纳算法。在最有名的例子中,ID3属于自上而下属性学习型的,而GOLEM则属于自下而上关系学习型的。

属性学习只是归纳学习的一个特例,它以事物的一系列属性为基础对事物归纳地进行分类。J.R.Quinlan的ID3是属性型机器学习的归纳算法中最著名也最成功的一个,它能从具体事例中归纳出供专家系统所需的一系列规则。⑦实际上,人类专家反而未必能说清楚自己所用的方法论规则。机器中的归纳算法主要用于以决策树的形式归纳出正确的分类规则。ID3有一种算法用于从已知经验证据来建构一个决策树,通过重复这种算法,整个程序得以运行。程序运行的基本过程是:决策树的第一层次(树根)相应于这样一种假说,即所选的作为树根的属性对于将所有对象划分为正反实例是充分的。一般地说,每一层次上属性的选取都要以能获取最多信息为判据,而每一层次(即每一分岔点上)的属性对于将所有对象划分为正反实例也都是充分的。这就是程序中反复要用的基本的归纳推理规则(IRI)。这个过程一直进行到建立整个正确的决策树。这里所提出的假说依赖于经验证据,即有H=f(e)。总的讲起来,决策树的自上而下归纳算法首先得出的是简单的一般规则(不太可靠),然后这些规则将被反驳和修改,以得到更明确更可靠的概括;而自下而上的方法则首先得到小心的而不是彻底的概括,然后再根据进一步的证据扩展这些概括。

可以举个通俗的例子来说明,自下而上与自上而下这两种归纳的区别。首先考虑以自上而下方式进行归纳的A先生。当在武汉东湖边一棵树上见到一只黑色的乌鸦时,A先生立即做出概括说:“天下乌鸦一般黑。然而他却不太放心,因此通过考察其它许多地区的乌鸦,对这一概括进行检验。首先,他去看长江沿岸,发现它们仍然是黑。然后他又去了西湖、太湖湖畔等等许多地方,还是黑的。最后,到神农架探险,在那里才终于发现了白乌鸦,因此证伪了他的最初概括。于是他将结论修正为:“除了神农架有白乌鸦,全中国乌鸦一般黑。”另一个以自下而上方式一步一步地进行归纳(从个别到特殊到更一般)的B女士,则要小心谨慎得多(可以如法炮制,略)。

ID3的基本方法是自上而下的。J.R.Qiunlan在对ID3程序作总结时指出,ID3的基本结构是可重复的,从对象的“练习集”中随机抽取一个子集叫做“视窗”,一个决策树可以由视窗来形成。正象统计学中,可以从“样本”推断“总体”的性质一样,若能对“视窗”中的对象进行正确分类,则“练习集”中所有对象都可以用这个决策树来分类。否则,再挑若干未被正确归类的对象补充进视窗并继续分类过程。通过这种可重复的视窗方法,可以比直接从整个“练习集”要快得多地找到正确的决策树。在这里,我们再次看到培根式的机械归纳与证伪方式互补地被应用。⑧

GOLEM(机器人程序)则是采用自下而上归纳算法的一个关系学习系统,它由S.Mugglenten和C.Feng在1992年所创建。GOLEM程序是建筑在Robinson的工作基础之上的。计算机原先读不懂数理逻辑学家所创建和研究的那一整套逻辑,只当J.A.Robinson做了转换工作之后,“逻辑”才成为计算机可以读懂、可以接受的东西。Robinson于1965年引入了一种适合于在计算机上进行定理证明的逻辑形式,称作子句逻辑,它只使用一种推理规则,即归结原理。Robinson的归结原理对于逻辑与计算机的联姻起到了关键性的作用。

GOLEM算法具有自下而上的特征。对于归纳推理的目的而言,考虑两个数据点e1与e2的相对最小普遍化(r.l.g.g)是重要的。数据点代表着子句逻辑的基本要素,它们的最小普遍化是对于背景知识K而言的。GOLEM对两个数据点及其相应的相对最小普遍化小心地进行概括,从一系列r.l.g.g中选取覆盖面最广的一个,然后将它与包含未预言到的数据点的扩大集一起形成r.l.g.g(其中可能含有预言错误的例子,但可以通过证伪而排除),由此覆盖面最广的那个相对最小普遍化得以小心被扩展,于是普遍化将覆盖尽可能多的例子。我们再次看到GOLEM中培根式的机械归纳是与证伪模式互补地起作用的。⑨

第三部分将要讨论一下Prolog的非单调推理性质及其对逻辑方法论的启示。

每个从事计算机科学的研究者都知道PROLOG,那是一种逻辑程序设计语言,它诞生于1972年。

按照王元元在《计算机科学中的逻辑学》一书中所描述,Prolog语言有四大特点:(1)Prolog既是一种程序设计语言,又是一个逻辑系统;(2)它是一种面向问题的语言,能给出问题的形式描述;(3)它的求解过程是一个寻求否证的归纳过程;(4)它除了逻辑成分,还有控制成分。⑩

对于逻辑与科学方法论学者来说,特别关心的是Prolog语言所包含的非经典逻辑特性,尤其是非单调推理的特性。经典演绎逻辑的推理都是单调的,也就是说在引进新前提后,不必改变原有效推理的结论。若在引进新前提后,将改变原有效推理的结论,则这种推理称作非单调的。由于人类实际推理都是动态的,不断引起新前提,不断修正原有结论。因此计算机逻辑中的非单调推理比经典逻辑更切近实际。

让我们通过实例来考察Prolog逻辑系统在实际运行过程中表现出怎样的非单调推理的特征。假定从桂林到柳州每天有四班快巴,假定发车时间分别为7:00,9:00,11:00以及14:00,然后我们给出一个定义P(X)= 一班在X时间从桂林去柳州的快巴。这样,上述四种快巴时刻信息就可以编入Prolog逻辑系统:

P(7:00)

P(9:00)

P(11:00)

P(14:00)

现在如果有人向这种Prolog系统进行咨询:?—P(13:00),即“是否有一班下午1点从桂林去柳州的快巴?”,结果所显示的是“否”。由于现有数据库并没有“not P(13:00)”这样的否定句,因而如果单纯靠经典逻辑和经典否定,则既推不出“not P(13:00)”这样的否定句,也推不出“P(13:00)”那样的肯定句。也就是给不出明确答案。然而,Prolog所使用的是新颖的非经典否定词“失败—否定”,它的含义是指:对肯定句进行确认的尝试失败,就等同于对相应否定句的确认。在本案例中,Prolog系统通过把咨询句“?—P(13:00)”与数据库已有句子逐一相匹配,就都会失败,最后得到否定的结果“not P(13:00)”。

事实上,正是这个非经典否定词(失败—否定)使Prolog系统获得了“非单调”推理的特性。因为如果将P(13:00)这样的新前提补充到数据库中去,那末再也推不出原先的结论“not P(13:00)”,而将推出新结论“P(13:00)”。可见基于扩大的数据库的Prolog系统,对从先前的前提中推出的结论也要作相应的调整与修改,这正是典型的非单调特性。Prolog系统对失败—否定的运用还可以推广到较复杂的情况。例如在时刻表上加一条细则说明,即“如果没有一班12:00从桂林去柳州的快巴,那末将有一班13:00的”。在Prolog系统中可表示为“P(13:00):—not P(12:00)”,读作“P(13:00),如果没有P(12:00)”。不难证明,这个系统最后将推出肯定句P(13:00)。

通过以上的论述,不难看出Prolog系统的失败—否定推理是以这样一种假设为基础的,即“如果不能从背景知识中确认P,那末就将非P加入背景知识”。换言之,如果不能确认P,那末非P就得到确认。显然,其中包含一个预设,即数据库中已穷尽所论问题的世界的全部背景知识。或者说,在Prolog系统数据库中明确表示的肯定性事实(例如P(7:00)等等)与隐含地表示的否定性事实(例如not P(12:00))描述了该世界全部相关的背景知识。这样一种假设被称作封闭世界(即全域)假设。

我们发现,失败—否定推理具有非常辩证的性质。由于全域假设只要求Prolog系统的数据库出现肯定事实,而许多未出现或未明确表示的事实则属于隐含的否定事实。因此,在数据库中的某些否定事实(如not P(12:00))与潜在的肯定事实最终转化为明确的肯定事实(如P(13:00)的中间过程中,Prolog系统中某些匹配的失败(如?—P(13:00))分别与P(7:00),P(9:00),P(11:00),P(14:00)匹配的失败,尤其是它与not P(12:00)中的P(12:00)匹配的失败),包含着转化为下一步匹配成功的契机(即?—P(13:00)与P(13:00)匹配成功)。在这个推理过程中,非经典否定词(失败—否定)对于数据中隐含的否定事实向明确表示的肯定事实的辩证转化,对于匹配失败向匹配成功的辩证转化,起了明显的促进作用。

【参考文献】

①② H·A·西蒙:《西蒙自传》,北京,东方出版中心,1999,P260,P428.

③ Langley,P.,Simon,H.,Bradshaw,G.,Zytkow,J..Scientific Discover:Comput-

ational Explorations of the Creative Processes.MIT Press,1987:1~8.

④ E Hung. The Natuer of Science. Wadsworth.1997.P459

⑤ Lenat,Douglas B.The Nature of the Heuristics.Artifical Intelligence(82),

1982.

⑥ ⑦⑧⑨Donald Gilles,AI and Scientific Method, Oxford,1995, P18~P19, P33~P37,

P38~P39, P41~P43.

⑩ 王元元:《计算机科学中的逻辑学》,北京,科学出版社,1989,P189。

逻辑对计算机,对计算机模拟中的逻辑、方法论的几点认识相关推荐

  1. 状态机 复杂逻辑问题_状态管理中的逻辑

    状态机 复杂逻辑问题 by Oguz Gelal 由Oguz Gelal 状态管理中的逻辑 (The Logic in State Management) The standardization of ...

  2. 计算机组成原理论文逻辑控制电路,计算机组成原理课程设计――设计逻辑控制电路cpu..doc...

    文档介绍: 计算机组成原理课程设计报告书题目:设计逻辑电路控制器CPU(含至少3条指令院系:计算机科学与工程学院专业班级:学号:学生姓名:指导教师:2015年12月15日安徽理工大学课程设计(论文任务 ...

  3. python中的逻辑量有什么_Python中and(逻辑与)计算法则

    在程序设计中,and称为逻辑与运算,也称布尔运算: 1.and是在布尔上下文中从左到右计算表达式的值: 2.0.''.[].().{}.None.False在布尔上下文中为假:其它任何东西都为真: 3 ...

  4. case 逻辑java,java – 了解CaseInsensitiveComparator中的逻辑

    通常情况下,我们期望将案例转换一次并进行比较并完成.然而,代码转换的情况下两次,原因是在不同的方法的注释中说明 public boolean regionMatches(boolean ignoreC ...

  5. 计算机科学中的逻辑学术,简述逻辑学在计算机科学中的应用

    ▲▲一.引言 逻辑是一种思维的法则,也是人类认识世界.改造世界的基本准绳与工具,是所有的理论与学说中关于判断和思维规律的提炼.抽象.随着人类的发展,逻辑学已经被广泛运用到社会科学.自然科学等领域中.作 ...

  6. 第四代计算机主要采用什么作为逻辑开关元件,第四代计算机主要采用什么作为逻辑开关元件?...

    第四代计算机主要采用"晶体管"作为逻辑开关元件.晶体管是一种固体半导体器件,具有检波.整流.放大.开关.稳压.信号调制等多种功能.晶体管作为一种可变电流开关,能够基于输入电压控制输 ...

  7. 第四代计算机主要采用什么作为逻辑开关元件,第四代计算机重要采纳什么作为逻辑开关元件?...

    第四代计算机重要采纳"晶体管"作为逻辑开关元件.晶体管是一种固体半导体器件,具有检波.整流.放大.开关.稳压.信号调制等多种功用.晶体管作为一种可变电流开关,能够基于输入电压掌握输 ...

  8. 企业应用业务需求变化的分析与应对-业务需求中的逻辑

    企业应用系统实际上就是用信息化技术对业务需求进行描述,借助计算机为企业用户服务的一个平台.应用系统必须要处理业务需求的变化,无论是开发阶段,还是维护阶段. 业务需求的变化其实就是逻辑的变化,那么业务需 ...

  9. 计算机科学中的逻辑运用,浅谈逻辑在计算机科学中的应用

    摘 要:本文阐述了逻辑与计算.计算机的起源.程序设计之间的相互关系,并在一阶逻辑的基础上,以LISP.PROLOG等为例,给出了逻辑在程序设计语言和逻辑程序设计中的应用,以此说明计算机科学是逻辑的超大 ...

最新文章

  1. 总线的性能指标,包括总线频率,宽度,和带宽(微机接口技术)
  2. RabbitMQ (十五) 镜像集群 + HAProxy1.7.8 负载均衡
  3. 不用光盘安装系统的问题
  4. TortoiseSVN每个菜单项都表示什么意思
  5. CodeForces - 1330E Drazil Likes Heap(贪心)
  6. 使用 Kotlin Script 自定义实现项目开发脚手架
  7. solidworks迈迪插件_迈迪工具集V55特别PJ版_打包下载
  8. LABEL MATRIX里用计数器自动生成流水号和自定义条码格式
  9. el-table render-header 实现多级 表头
  10. 系统集成项目管理工程师13《项目配置管理》
  11. 路由器DNS被劫持的解决办法,dns被劫持怎么办?
  12. Nvidia jetson nano,控制风扇开启和关闭。
  13. 搜搜移动业务大厅项目类的结构_2020年SEM小搜投放指南:竞价小渠道如何把效果做到极致...
  14. VLAN Switch
  15. 【转载】第三方支付业务如何测试
  16. 使用android手机做鼠标
  17. linux的命令参考手册,Linux常用命令汇总——可当作简要参考手册 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  18. 使用C++ 编写嵌入式应用程序
  19. Docker 部署在线文件转换服务--Libre Office Online
  20. 默慈金数 (hdu3723)

热门文章

  1. Android Studio中的keystore
  2. 苏州Uber优步司机奖励政策(8月31日至9月6日)
  3. 中国制造业的突围 --首次物联网产业系列微访谈圆满结束
  4. BLE Mesh (9) —— Mesh beacons
  5. 网站主题实现技术-jsp include
  6. body 没有被撑开_父元素没有被撑开塌陷问题解决方案
  7. 建筑行业现行相关税收政策及优惠措施汇编
  8. 三星Note9的优秀与不足,能承担单骑救主的重任么?
  9. ruby--数值类(Numeric)
  10. MarkMan – 马克鳗 IU好伙伴啊