人工智能 计算智能体基础|开篇 第一章
印象最深的 AI 书籍:人工智能 计算智能体基础笔记。书籍全文链接
第一章 什么是人工智能
什么是人工智能
从定义去理解人工智能或许比较难以消化,尝试着在理解人工智能定义时,思考下人为什么是充满智慧的。
这是 Artificial Intelligence Foundations of computational agents 给出的定义:
Artificial intelligence , or AI , is the field that studies the synthesis and analysis of computational agents that act intelligently.
我们称智能体( Agent ) 为能针对环境做出行动或决策的个体。一个 聪明 的智能体需要包括四点:
- 考虑到其行动的短期和长期后果,它的所作所为适合其环境和目标
- 它可以灵活地适应不断变化的环境和不断变化的目标
- 它从经验中学习
- 鉴于其感知和计算限制,它会做出适当的选择
人的思考是需要花费精力的。类似的,人工智能的思考也是基于有限的计算力的,因此上述人工智能定义中,将智能体描述为 computational agents 。
通过下文的 怎么设计人工智能体 可以更好的了解,什么是人工智能。
为什么做人工智能
《人工智能 计算智能体基础》中给出了这样的答案:
人工智能的核心 工程目标 是 设计 和 合成 有用的智能工件。我们实际上想要构建智能行动的智能体。这样的试剂在许多应用中都是有用的。
实现该目的则需要包括对自然及人工制造个体的分析、假设、验证、设计、执行等。
因此 人工智能可以被视为一种研究知识和智能本质的学科 ,人工智能不能像经济学、心理学等只观察智能系统的外部行为,而是需要用可执行的模型进行实验,最重要的是这些模型可以以完整而严格的方式进行检查、设计和复现。
人工智能和自然智能
通常被冠以“人工”的名词会被认为是假的、非自然的,如人工海浪。但人工智能并非如此,一个个体如果是智能的,那么它就是真的智能,不是假的智能。
分析和思考自然智能或许能让我们更好的设计人工智能,人类是自然的智能个体,可能比人类更聪明的一类智能个体是 组织 。蚁群是组织的典型例子。每个个体蚂蚁可能不是很聪明,但蚁群可以比任何个体蚂蚁更聪明。因此,你会在人工智能算法的设计中发现,学者们常根据自然智能的灵感设计算法:蚁群算法、神经网络、遗传算法等等。
但在构建智能系统时,设计人员必须决定哪些智能来源需要编程,哪些内容可以学习。我们不太可能构建一个从零开始并学习一切的智能体。
思考:为模型注入先验知识是避免从零学习的一种手段嘛?
人工智能简史
400 年前 - 人们开始撰写关于思想和理性的本质的文章。当时的人工智能之父 Hobbes (1588–1679) 认为思考是象征性的推理。
19 世纪,第一台通用计算机出现。
20 世纪初,人们在理解计算方面做了很多工作。许多计算模型被提出,如:Alan Turing (1912-1954) 的图灵机,Church (1903-1995) 的 lambda 演算。可以证明,这些不同的演算形式是等价的。因此有了图灵假说:
Any effectively computable function can be carried out on a Turing machine (and so also in the lambda calculus or any of the other equivalent formalisms).
计算机被制造出来的最初应用就是人工智能程序:
- Samuel [ 1959 ]在 1952 年建立了一个跳棋程序,并在 1950 年代后期实施了一个学习下跳棋的程序。他的程序在 1961 年击败了康涅狄格州跳棋冠军。
- Wang [ 1960 ]实施了一个程序,证明了数学原理 [Whitehead 和 Russell,1910 ]中的所有逻辑定理(近 400 个)
- Newell 和 Simon [ 1956 ]建立了一个程序 Logic Theorist,它发现了命题逻辑中的证明。
神经网络在 1943 年被提出,包括:
- McCulloch 和 Pitts [ 1943 ]展示了一个简单的阈值化“形式神经元”如何成为图灵完备机器的基础。
- Minsky [ 1952 ]描述了这些神经网络的第一次学习 。
- Rosenblatt [ 1958 ]的 感知器 。
然而由于算力限制,神经元启发的学习工作在数年中逐渐衰落。
在 1960 年代和 1970 年代,自然语言理解系统被开发用于有限的领域。
- Daniel Bobrow [ 1967 ]的 STUDENT 程序可以解决用自然语言表达的高中代数任务。
- CHAT-80 [Warren and Pereira, 1982 ]可以用自然语言回答地理问题。
在 1970 年代和 1980 年代,有大量工作针对某个领域展开,其目的像领域专家一样完成特定的任务。
- DENDRAL [Buchanan and Feigenbaum, 1978 ]于 1965 年至 1983 年在有机化学领域发展起来,提出了新有机化合物的合理结构。
- MYCIN [Buchanan 和 Shortliffe,1984 年],从 1972 年到 1980 年开发,诊断血液感染性疾病,规定抗菌治疗,并解释其原因。
在 1990 年代和 2000 年代期间,人工智能的子学科有很大的发展,例如感知(perception)、概率和决策理论推理(probabilistic and decision-theoretic reasoning)、规划(planning)、具身系统(embodied systems)、机器学习和许多其他领域。
怎么设计人工智能体
人工智能部分基础概念及其中的推理关系
环境中的智能体
上图表示了一个智能体在环境中的运作逻辑。他有着以下属性:
- 先验知识 :可以是学习到的,也可以是我们设定的。
- 能力 :他能够执行的动作,如恒温器的能力就是控制温度。
- 反馈: 能够对当前环境做出反应,能够从环境刺激中学到经验
- 偏好/目标 :大部分的智能体是无偏好的,如恒温器。但是部分智能体被设置成有偏好的,或者在学习过程中产生了偏好。
智能体的计算
从智能体的设计到运行,涉及到的计算主要分为三方面:
- 设计时的计算:设计者花费在设计智能体上的计算。
- 离线计算:智能体在采取行动前完成的计算,如学习和编译。
- 在线计算:智能体在应对环境中完成的计算,如观察和更新知识
根据环境和智能体自身能力,可分为两个极端:
- 通过建立复杂的推理系统来应对单一的环境。 一个例子就是人工的写入大量规则以解决给定的业务场景。此优势在于通常情况下智能体的可解释性强,维护方式简单。智能体进行少量的推理,但智能体的观察者和设计者需要根据智能体和环境进行推理。因此智能体的设计者需要证明他设计的智能体具有安全性、活跃性、公平性等。
- 为复杂的环境构建智能体。 此优势在于,这是人类生活的环境,也是我们希望 AI 所处的环境。
而 AI 工程师们则在这两个极端之间前进,从简单的环境开始,再到复杂的环境。
智能体的知识
AI 表示与传统语言中的计算机程序不同的一种方式是,AI 表示通常指定需要计算的内容,而不是如何计算。因此,我们需要以智能体的 知识 作为中间件。
知识 是有关某个领域的信息,可用于解决该领域中的任务。因此知识如何在计算机中表示是关键,但知识表征表示面临着几方面难点:
- 充分性: 该表征需要足以表达并解决任务
- 规范性: 表征应该是可维护的,应该很容易看出表征与被表征领域之间的关系,以便容易确认知识是否正确。
- 泛化性: 任何任务上微小的变化,应该会导致表征微小的变化。
- 高效性: 表征易于处理,计算具备准确性以及高效性。
- 学习性: 能够从人、数据和过去的经验中获得。
定义任务和解决方法
正如我们处理事情,我们总是希望理清问题或需求所在,而后决定要将事情处理到什么地步。
在 定义任务 时,我们希望计算机具备常识推理,即对任务中未提及的陈述,应该能够做出常识性的结论。如给定餐厅机器人任务:把用户用餐的盘子收起来,机器人则应该具备常识,仅收集用户用完餐后的盘子,而不是把正在用餐的用户盘子一并端走。
常见的有四种解决方案:
最佳解决方案 :任务的 最佳 解决方案是根据解决方案质量的某种衡量标准的最佳解决方案。如对于决策任务,常采用效用作为度量标准,效用考虑多方面因素。如扫地机器人,你可能希望他用较少的时间整理完屋子,因此错过一些偏僻的角落可能比浪费过多时间要好。
令人满意的解决方案 :解决方案只需要满足客户要求即可,不一定要最完美。如决策任务中的旅行商人问题,我们可能希望得到一个满意的解。
近似最优解 :当我们知道理论上的最优质值,那么则可以以此为标准,指定一个近似的标准。如我们知道两点间直线最短,那么我们可能希望扫地机器在两点之间的行动距离接近理论距离即可。
可能的解决方案 :该方案下,模型通常输出的是一个存在概率的答案,而非准确解。如模型有 90% 的预测准确率。或者模型在 xx 任务上有 80% 的 F1。这在机械学习领域是很常见的解决方案。
智能体的设计维度
人工智能智能体设计存在多个复杂的维度需要考虑,下表对所有维度进行了关键词总结,在下文中可以查看各个维度的详细描述:
维度 | 关键词 |
---|---|
模块化 | 扁平、模块化、分层 |
规划视野 | 有限规划,无限规划 |
表示 | 状态、特征、关系 |
计算限制 | 完全理性、有限理性 |
学习 | 知识被给予,知识被学习 |
感知不确定性 | 完全可观察,部分可观察 |
效果不确定性 | 确定性的,随机的 |
偏爱 | 目标,复杂的偏好 |
智能体数量 | 单智能体,多智能体 |
相互作用 | 线下,线上 |
模块化
大事化小,分而治之
模块化可包括:
- 扁平化--没有组织结构(对于小任务)。
- 模块化--系统被分解成颗粒自己理解的交互模块。 如将复杂任务划分成多个子任务
- 分层--将子任务划分为更简单的任务,如发送 http 请求等具体步骤(对于大任务)。
规划视野
顾全大局,或关注当下
如同做事,智能体可以被设置成
- 非计划智能体: 只关注目前任务的结果,做什么都不考虑时间和未来
- 有限期: 在当前任务时,只考虑到下一步或下几步后的影响。
- 无限期: 智能体能够为了长期利益,进行连续的但不确定步骤。如需要到达某地地智能体可能不知道要花费多少步骤。
表示
表示涉及了如何描述世界。
通常表征可以表示智能体地状态、功能或关系。
状态通常是我们描述地对象,如环境可能有冷、舒适、热等几种状态。
状态可能无法完全描述世界,但足以描述智能体应该做什么。
状态可以通过特征来描述,如 30 个布尔类型特征可以描述 个状态。
计算极限
我们应该花多少时间进行决策
智能体在行动先取药进行考虑或计算,大部分算法的质量是随时间提高的。
决定花费多少时间在推理和决策计算上是具有挑战性的,因为智能体不知道如果多花一点时间推理或计算,结果会好多少。
学习
从经验或者先验知识中学习
学习的难点在于:
- 如何表示数据和学习的结果
- 学习哪些数据
- 如何整合背景知识
- 哪些学习偏差是合适的
- 如何应用学习
不确定性
不确定性分为:
感知不确定性: 在棋盘中,我们可以确切地知道世界(棋盘)的所有状态。但一名医生实际上可能并不知道患者患有哪些疾病。
行为效果不确定性 :某些状态下智能体知道其行为的效果,如下棋时候。但在许多情况下,我们很难预测一个动作的效果。通常的,智能体能做的就是对效果进行概率分布。
偏好
偏好也可以是目标。目标可以是:
- 最终目标: 一个在某个最终状态下为真的命题,或;
- 全局目标: 一个在所有访问状态中都必须为真的命题。
智能体数量
智能体的数量通常可以是多个的,如多智能体系统。
交互
现实中,在执行任务时通常需要与环境交互
对于简化的假设,智能体可以在采取行动之前推理出最好的事情,及离线推理。如根据今天的数据,在制定好明天的送货路线。
当智能体需要在环境中交互时,就是在线推理。
维度的交互
任何两个维度都可能发生交互反应,如:
偏好与不确定性矛盾: 智能体需要在以一定概率满足主要目标或以更高概率满足不太理想的目标之间进行权衡。
交互与规划视野的矛盾: 智能体必须考虑思考和行动之间的权衡。观察交互、推理、行动都需要计算资源。
模块与表示的关联: 如何表示一个智能体,将很大程度上依赖于它如何以模块化方式呈现。
原型应用
本书中考虑了 5 个简单的应用场景,并以此展开分析:
- 自主配送机器人。如自主送快递机器人。
- 诊断助手。如电气问题诊断、医学诊断等
- 辅导系统。在某些学习领域对学生进行辅导。
- 交易智能体。如监控家庭中有多少剩余食品,并在需要之前订阅商品,同时保持成本最低水平。
- 智能家居。如在水电便宜的时间段工作洗衣服,在太阳充足的白天进行太阳能充电,并且保持顾客的生活幸福感等。
通过这几个案例,可以更好的理解上述的 10 个维度:
- 对于任何案例,先考虑到模块化和表示,即事件应该如何被分解,并且分解后的各个部分及其关系应该如何被表示。
- 考虑定义输入与输出:这也涉及到表征,对于输入,考虑他的不确定性及输入源(环境交互性);对于输出,考虑他的不确定性以及偏好
- 考虑如何转化输入为输出:输入与输出的定义将直接影响我们的黑盒子(人工智能智能体)处理事件的方式。 学习、规划视野、环境交互 都需要计算资源。
- 学习 是必须的,任何模型几乎都需要学习。
- 环境交互 值得考虑,如对于智能驾驶,他可能没有很多的时间去计算一次完美的推理。
- 智能体数量 值得考虑,通常根据任务而定。如多个科室之前的资源竞争可以考虑多智能体系统。单个科室的诊断助手可以考虑单智能体任务。
重点总结
练习题:
狗比蠕虫更聪明
人比狗更聪明
一个组织比个人更聪明
思考一个 AI 的具体应用:
- 该程序具体做了什么
- 他使用了哪些人工智能技术
- 他的表现如何
- 他有多少用户,这些用户需要什么专业知识?
- 他为什么是智能的,它的哪些方面使其成为智能系统?
- 它的用户界面是什么样的,具体用什么语言和环境编写?
- 他有什么参考资料?
推荐阅读
McCarthy 和 Hayes [ 1969 ]的复杂逻辑表示