读人工智能全传06逻辑编程

news/2024/11/20 22:18:48/文章来源:https://www.cnblogs.com/lying7/p/18285794

1. 现代逻辑

1.1. 到了20世纪初,现代逻辑的基本框架已经大致建立起来,当时确立的逻辑运算系统,直至如今仍然能够支撑数学家几乎所有的逻辑推理工作

1.1.1. 这个系统被称为一阶逻辑,一阶逻辑是数学和推理的通用语言

1.1.2. 这个框架涵盖了亚里士多德、弗雷格、德·摩根、布尔和其他人的所有类型的推理

1.1.3. 在人工智能领域,一阶逻辑似乎以同样的方式提供了统一框架,为当时世界各地各式各样、不成体系的知识表述方案提供了统一框架

1.1.4. 基于逻辑的人工智能范式由此诞生,其最早和最具影响力的倡导者之一,就是约翰·麦卡锡

1.2. 人工智能开发中一个常见的误区,就在于开发者为系统所选择的术语对人类而言太容易理解了,反而增加了许多不必要的误解,这让我们以为机器人也能轻而易举读懂语言本身,而事实并非如此

1.3. 机器人的感应系统负责将感应器所提供的原始信息转化成机器人能使用的内部逻辑形式

1.3.1. 通过机器人的逻辑推理系统(推理机)来决定机器人的实际行为

1.4. 逻辑人工智能的核心思想就在于机器人的行为是基于逻辑推理的结果:它必须推断出自己接下来应该做什么

2. 逻辑编程

2.1. 逻辑编程使用的是一种非常有名的语言:PROLOG

2.2. PROLOG主要是由美籍英国研究员鲍勃·科瓦尔斯基(Bob Kowalski),以及两名来自法国马赛的研究员,阿兰·科尔默劳尔(Alain Colmerauer)和菲利普·罗塞尔(Philippe Roussel)发明的

2.3. 可以用PROLOG编写出非常简洁优雅的程序

2.3.1. 1974年大卫·沃伦(David Warren)编写的战机计划系统可以解决积木世界内的规划问题,只需要100行PROLOG代码

2.3.2. 如果要用Python之类的语言编写同样的系统,大概需要数千行代码以及数月的工作

2.4. 用PROLOG编写的程序不仅仅是程序,还是逻辑公式

2.4.1. PROLOG程序看上去实现了麦卡锡对基于逻辑的人工智能的设想

2.5. 在20世纪70年代末到80年代初,PROLOG开始崭露头角,直到它挑战麦卡锡倍加推崇的LISP语言

2.5.1. 人工智能黑客首选的编程语言

2.6. 虽然PROLOG没有征服程序员的世界,但不能将它视为失败

2.6.1. 在世界各地,程序员每天都在愉快地使用PROLOG编写高效的程序,并感激这种语言的强大和优雅

2.7. PROLOG最大的贡献却是无形的:逻辑编程为计算机提供了一个全新的思路,就如何解决计算问题而言,它有着跟传统计算机完全不同的观点

3. Cyc

3.1. 知识型人工智能时代最著名的实验

3.1.1. Cyc工程是天才的人工智能研究员道格·莱纳特(Doug Lenat)的智慧结晶,莱纳特拥有卓越的科学能力、坚定不移的信心以及优秀的说服能力,让旁人能够接受他的愿景

3.1.2. Cyc工程的雄心壮志确实令人难以置信,要实现莱纳特的构想,Cyc的知识库需要对“共识现实”,即我们所理解的整个世界进行完整描述

3.1.3. 大部分的时间和人力都会消耗在手动知识录入上,即告诉Cyc我们的世界是怎样的,以及我们是怎么理解它的

3.2. 宏伟的目标会掩盖其荒谬的本质

3.2.1. 首要的问题在于,以前从来没人试图将人类所有的基础常识组织汇编

3.2.1.1. 你得定义将使用到的所有词汇,还有各种术语,它们之间是怎么关联的

3.2.1.2. 定义基本术语和概念,并围绕它们组织整个知识体系,被称为本体工程

3.2.1.3. 随着项目的推进,时不时还得推翻重来

3.3. 其实在大规模知识工程中,Cyc算是拥有复杂技术的一次实践

3.3.1. 它教会了我们在开发和组织基于大型知识基础的知识系统中的各种方法

3.4. 从严格精准的意义上来说,Cyc假说——通用人工智能的本质是知识体系问题,可以通过一个合适的基于知识的系统来解决——既没有被证实,也没有被证伪

3.4.1. Cyc不能成为通用人工智能成功案例并不能证明这个理论是错误的,只能证明这种方式没有用而已

3.5. 从某种意义上说,Cyc项目是领先于时代的

3.5.1. Cyc项目开始30年以后,谷歌发布了知识图谱,这是一个庞大的知识库,知识图谱里面汇集了大量关于实体世界的信息(地点、人物、电影、书籍、重大事件等),这些信息被用来丰富谷歌搜索引擎的查找结果

3.5.1.1. 知识图谱并没有以通用人工智能为目标,目前也不清楚它涉及了多少基于知识系统的至关重要的世界观推理

3.5.1.2. 知识图谱多多少少还是携带了Cyc的基因

3.5.2. Cyc和谷歌知识图谱最关键的区别在于,知识图谱中的知识并非手工编码的,而是自动从维基百科等网页中提取出来的

3.6. 不管我们回顾历史时如何尽力客观评价Cyc项目,可悲的事实总是无法改变

3.6.1. Cyc项目在人工智能发展史中之所以留下浓墨重彩的一笔,源于它是一个人工智能被过度炒作的极端案例,它完全辜负了人们寄予的不切实际的厚望

4. 破灭

4.1. 基于知识的人工智能被证明实际应用非常有限

4.2. 在逻辑上,增加更多的信息永远不会消除你之前得到的任何结论

4.3. 但是增加的信息(即“翠迪是一只企鹅”)确确实实使我们需要撤销之前的结论(即“翠迪会飞”)

4.4. 常识推理还有另外一个问题,在我们遇到矛盾的时候就会凸显

4.4.1. 逻辑完全失效:它不能应对这样的场景,也无法告知我们任何有意义的结论

4.4.2. 矛盾是我们每天都会遇见的现实

4.4.2.1. 在数学中,如果遇见矛盾,就意味着你犯了错

4.5. 事实证明,构建和部署专家系统比最初想象的困难得多

4.5.1. 最主要的难题是后来被称为知识获取的问题

4.6. 到了20世纪80年代末,专家系统的繁荣已经结束

4.6.1. 基于知识的系统技术倒不能说是失败了,毕竟许多成功的专家系统也在这一时期内建立起来,此后也逐步有更多的专家系统出现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/740312.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动推理笔记

啊我居然回来用了,难绷命题逻辑(还记得我吗?) 命题公式 由若干布尔变量和运算符($\neg, \cap, \cup, \rightarrow, \leftrightarrow$)得到的公式 有一些命题,我们能否从中得到另一个命题 将问题转化成更“正式”的问题 使用自动化程序解决“正式”的问题 通过形式化,可…

Springmvc中转发和重定向

配置IndexControllerpackage com.powernode.springmvc.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;@Controller public class Inde…

编译过程简介

编译过程一般可以分为6步:扫描、语法分析、语义分析、源代码优化、代码生成和目标代码优化。整个过程词法分析:扫描器扫描代码之后,将代码生成一个个token 语法分析:语法分析器对token进行语法分析,最后生成一个语法树对于不同的编程语言,可以共用一个语法分析器,因为只…

回顾 DTC 2024 大会——聚焦数据技术创新:揭秘下一代纯实时搜索引擎 INFINI Pizza

2024 年 4 月 12 日至 13 日,备受瞩目的第十三届“数据技术嘉年华”(DTC2024)在北京新云南皇冠假日酒店盛大开幕。本次大会由中国 DBA 联盟(ACDU)与墨天轮社区联合主办,以“智能云原生一体化——DB 与 AI 协同创新,模型与架构融合发展”为主题,旨在推动数据技术的创新与…

Java 字符串拼接原理

原文:Java 字符串拼接原理我们知道 Java 可以直接使用加号+来拼接字符串。 字符串+拼接的本质是使用StringBuilder.append()(已在Java8测试通过),最终如果要赋值给字符串变量时,会调用toString()。 /*** 字符串追加*/ @Test public void testStrAppend() {/** + 之前先隐式…

scope-sentry-数据泄露规则提取

工具简述 Scope Sentry是一款具有资产测绘、子域名枚举、信息泄露检测、漏洞扫描、目录扫描、子域名接管、爬虫、页面监控功能的工具,通过构建多个节点,自由选择节点运行扫描任务。当出现新漏洞时可以快速排查关注资产是否存在相关组件。 对该工具分析主要是分析内部的信息泄…

es8.x 版本使用及 java api client

1.为什么不使用High Level REST Client 了 那在 ElasticSearch 7.15.0 版本开始,官方又不建议使用 High Level REST Client 了,为什么呢?因为它是基于原生的 REST API,而这些 API 在某些情况下限制了某些功能的性能优化。与此同时,官方也推出了 Elasticsearch Java 客户端…

7.7-DPday1

动态规划理论基础什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的 在关于贪心…

gitlab私有仓库搭建

安全:关闭防火墙,selinux 1.安装GItlab所需的依赖包 yum install curl policycoreutils-python openssh-server postfix wget -y安装gitlab 获取gitlab源码包 选择各种yum源去安装 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.3-ce.0.el7.x86_64…

[LeetCode] 134. Gas Station

想到了提前判断和小于0的情况,懒得写,果然被阴间用例10万个加油站坑了。 class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:#1n = len(gas)if n ==1:if gas[0] >= cost[0]:return 0else:return -1#-1startpoint =[gas[x] - cost[…

算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」不要轻易使用 For 循环 For 循环,老铁们在编程中经常用到的一个基本结构,特别是在处理列表、字典这类数据结构时。但是,这东西真的是个双刃剑。虽然看起来挺直白,一…