简单逻辑Prolog--智能推理例子(在线互动版)

科技   2024-09-07 15:28   上海  

Simply Logical -- Intelligent Reasoning by Example (Fully Interactive Online Edition)

简单逻辑--实例智能推理(完全互动在线版)

https://book.simply-logical.space/

https://arxiv.org/abs/2208.06823


额外的关键词和短语:教科书、互动、在线版、Jupyter Book、SWI-Prolog、SWISH、Prolog、ProbLog、人工智能、逻辑编程。

书籍的演变

“Simply Logical – Intelligent Reasoning by Example”由Peter Flach撰写,最初由John Wiley在1994年出版[3]。它可以作为仅有书籍的形式购买,或者附带一个3.5英寸的软盘,其中包含书中打印的SWI-Prolog[7]程序(适用于各种操作系统)。2007年,版权重新归作者所有,此时书籍和程序被免费在线提供;印刷版本不再通过John Wiley出版商分发。2015年,作为试点,我们将大部分原始书籍内容移植到使用SWI-Prolog的SWISH平台[6]的在线互动网站上。从那时起,我们启动了Simply Logical开源组织,致力于维护一系列关于Prolog的人工智能和逻辑编程的免费互动在线教育资源。随着新教育技术的出现,我们受到启发,使用Jupyter Book平台[2]重建了书籍,并增强了一系列定制插件,实现了包括直接在Web浏览器中执行的互动SWI-Prolog代码块等功能。这个新版本更加模块化,更易于维护,并且可以分割成自定义教学模块,除了外观现代、视觉上吸引人,并与各种屏幕尺寸的(移动)设备兼容。

人工智能和Prolog逻辑编程

本书讨论了如何通过Prolog程序实现智能推理的方法。它从计算逻辑和人工智能的共同视角出发编写——计算逻辑致力于自动化各种推理,而人工智能寻求将智能行为的方面实现为计算。这两个视角的结合使这本书在同类书籍中脱颖而出,并提供了独特的学习体验。在人工智能领域工作的读者将发现如何利用逻辑的力量来解决他们可能面临的一些(实际)问题。为了支持这一学习目标,本书提供了自然语言解释、演绎和归纳推理以及默认推理等领域的多种互动代码示例。另一方面,熟悉逻辑编程的读者将对许多在其他教材中主要接受理论处理的主题的实践方面感兴趣——本书中介绍和解释的许多高级程序以教学形式在其他地方并不可用。不熟悉这两个领域的读者将从这个综合学习资源中受益,该资源收集了不同的主题,并以一致的方式在易于访问和吸引人的模块中呈现。这种方法提供了两个世界的最佳选择:它介绍了不以多余的数学机械吓倒该领域新手的逻辑编程理论,尽管它为人工智能编程的实践方面提供了坚实的理论基础。

这本书由三部分组成。第一部分涉及逻辑和逻辑编程,包括:

• 逻辑编程的关键概念,如程序子句、查询回答、证明树和递归数据结构(第1章);

• 对子句逻辑中的解析定理证明进行严格讨论,逐步介绍命题子句逻辑、关系子句逻辑(无函数)、全子句逻辑和确定子句逻辑,并在此过程中处理Herbrand模型和解析反驳等概念,以及声音和完整性等元理论概念(第2章);

• Prolog编程的实践方面,包括SLD树、剪枝、算术表达式、二阶谓词(例如setof)、各种编程技术(例如累加器和差分列表)以及一般编程方法和元解释器(第3章)。

第二部分从逻辑编程的角度转向人工智能的观点,主要处理图和搜索。第4章讨论了Prolog中自然出现的图:以术语(例如,解析树)表示的树形式,以及由谓词(例如,SLD树)跨越的搜索空间。接下来,第5章概述了逻辑编程背景下的深度优先搜索、迭代加深和广度优先搜索;此外,它还开发了一个广度优先Prolog元解释器和一个(低效的)全子句逻辑解释器,除了用一个程序演示正向链式,该程序生成一组子句的Herbrand模型。第6章讨论了最佳优先搜索及其最优性,引出了A★算法,并对非穷尽启发式搜索策略(如束搜索和爬山算法)进行了简短讨论。


最后,第三部分包括高级主题。第7章涵盖了自然语言解析和解释,特别是确定性子句语法。它还探讨了语义和自然语言生成,最终实现了一个简单的问答代理。第8章讨论了在封闭世界假设和谓词补全的视角下,不完全信息的推理。具体来说,它介绍了通过否定作为失败和可反驳默认规则进行的演绎推理以及默认推理。然后,第9章处理了从示例中归纳推断逻辑程序,介绍了并实现了诸如子句间普遍性和反统一等概念,这些概念对归纳逻辑编程至关重要。


附录提供了选定练习的答案,Prolog中内置谓词的概览,支撑全书中介绍的许多程序的实用谓词库,以及将谓词逻辑公式转换为子句逻辑和执行谓词补全的两个较大程序的列表。


正如书名所示,这本书通过示例介绍了智能推理技术,因此每种方法都附有一个Prolog实现,在线版可以直接在Web浏览器中执行。这些代码列表有两个教学目的:通过动手经验培养理解,但更重要的是,每项实现的声明式阅读是解释底层技术的一个组成部分。更复杂的程序经过精心设计,明确传达了实现目标所采取的步骤,并沿途解释关键问题。因此,这本书不仅仅关注“在Prolog中如何做到这一点?”,而是“如果我要从头开始,我应该如何解决这个问题?”换句话说,它体现了“通过展示来教学,通过实践来学习”的哲学。尽管强烈关注实际示例,但书中相当一部分内容致力于子句逻辑和逻辑编程的理论基础,不过它们的呈现主要是出于它们在理解和实现每种特定技术中的工具性作用。


这本书是布里斯托大学和其他地方(例如,伦敦国王学院、伦敦玛丽女王大学、卡迪夫大学、科克大学、塔夫茨大学、圣约瑟夫大学、弗赖堡大学、乌普萨拉大学、布鲁塞尔自由大学和塞维利亚大学)教授本科生和硕士生的多门课程的基础。具体来说,布里斯托大学提供的人工智能与逻辑编程本科课程5非常紧密地遵循这本书;一个结构反映书中材料呈现的幻灯片集合作为补充教育资源免费提供6。这个单元的精神续作是现在作为交互式人工智能中心博士培训中心7(IAI CDT)提供的课程教学的一部分的计算逻辑。这个单元采取了更现代的方法,讨论了逻辑编程(使用SWI-Prolog)与数据驱动的机器学习最新发展之间的相互联系8。


在线版

这本在线书籍以现代的外观和感觉提供了一个直观全面的人工智能和逻辑编程介绍,是一个易于理解的教育资源。通过练习和实际编码示例增强了学习体验;后者通过可以直接在Web浏览器中执行的互动代码框提供,从而实现了最初因出版时缺乏适当技术而受阻的平装版的愿景。它是为三类读者编写的:人工智能研究人员或从业者;逻辑编程研究人员或从业者;以及两个领域的学生(高级本科生或研究生)。这本书可以用作教学辅助工具,也适合自学。它可以原样采用,也可以将内容重新排列成定制的学习资源,这是由书籍源的模块化设计所允许的,书籍源被分割成基于其类型的文件集合:

• 文本用Markdown编写 - 每个小节都放在单独的文件中;

• 代码作为SWI-Prolog脚本发布;

• 图形以可缩放矢量图形(SVG)形式提供。

所有这些都发布在GitHub上,这允许轻松重用这些材料,将它们纳入定制课程,或将它们改编成其他教育资源,如实践培训课程。

多年来,我们一直使用这本书进行本科和研究生教学,我们决定不进行重大的结构更改或增加大量新材料。当然,我们也抓住机会进行了一些小的改进和修正,比如在适当的地方使用匿名变量,以及在子句和查询中进行轻微的标点改进。其他增强包括在多年教学中收集的额外示例,这些示例格式化在清晰可识别的框中。

从技术角度来看,在线版的开发需要我们实现一系列Jupyter Book插件(也适用于Sphinx),这些插件涵盖了特定于SWI-Prolog的功能[7],后来扩展为与cplint[4]和ProbLog[1]编程语言兼容。具体来说,我们发布了sphinx-prolog插件,它允许通过自定义的Prolog代码列表直接在Markdown文件中嵌入交互式SWI-Prolog和cplint代码框,或者从外部代码文件加载程序。这个插件基于SWISH——SWI-Prolog的分享版——这是一个类似于Jupyter Notebooks的在线互动SWI-Prolog编码环境[6]。另一方面,sphinx-problog扩展允许嵌入交互式ProbLog代码框,其实现基于支撑ProbLog网站发布的代码示例的在线执行环境。此外,构建这些插件促使我们探索了组成(互动式)培训资源的替代技术,这反过来又激发了一种新的出版工作流程的原型,该工作流程可以从统一的源材料集合中生成多种工件,如在线文档、幻灯片和计算笔记本[5]。



https://book.simply-logical.space/

CreateAMind
ALLinCreateAMind.AGI.top , 前沿AGI技术探索,论文跟进,复现验证,落地实验。 鼓励新思想的探讨及验证等。 探索比大模型更优的智能模型。
 最新文章