读书笔记——

ARTIFICIAL INTELLIGENCE(A MODERN APPROACH)

作者:Stuart J. Russell, Peter Norvig著(殷建平 祝恩 刘越 陈跃新 王挺 译)

第1章 绪论

1.1 什么是人工智能

1.1.1 像人一样行动:图灵测试的途径

图灵测试(Turing Test)的设计旨在为智能提供一个令人满意的可操作的定义。计算机尚需具有以下能力:

  • 自然语言处理(natural language processing)使之能成功地用英文交流
  • 知识表示(knowledge representation)以存储它知道的或听到的信息
  • 自动推理(automated reasoning)以运用存储的信息来回答问题并推出新结论
  • 机器学习(maching learning)以适应新情况并检测和预测模式

完全图灵测试(total Turing Test)还包括视频信号以便讯问者既可测试对方的感知能力,又有机会“通过舱口”传递物理对象。要通过完全图灵测试,计算机还需具有:

  • 计算机视觉(computer vision)以感知物体
  • 机器人学(robotics)以操纵和移动对象

1.1.2 像人一样思考:认知建模的途径

认知科学(cognitive science)这个交叉学科领域把来自AI的计算机模型与来自心理学的实验技术相结合,试图构建一种精确且可测试的人类思维理论。

1.1.3 合理地思考:“思维法则”的途径

逻辑学(logic)

逻辑主义(logicist)

1.1.4 合理地行动:合理Agent的途径

合理Agent(rational agent)是一个为了实现最佳结果,或者,当存在不确定性时,为了实现最佳期望结果而行动的Agent。

合理Agent的途径与其他途径相比有两个优点。

  • 首先,它比“思维法则”的途径更一般因为正确的推理只是实现合理性的几种可能的机制之一。
  • 其次,它比其他基于人类行为或人类思维的途径更经得起科学发展的检验。

1.2 人工智能的基础

1.2.1 哲学

重点:

  • 形式规则可用于推出有效的结论吗?
  • 思想如何从物理的大脑中产生?
  • 知识来自何方?
  • 知识如何导致行动?

二元论(dualism)

唯物主义(materialism)

经验主义(empiricism)

逻辑实证主义(logical positivism)

观察语句(observation sentences)

证实理论(confirmation theory)

1.2.2 数学

重点:

  • 什么是能导出有效结论的形式化规则?
  • 什可以被计算?
  • 我们如何用不确定的信息来推理?

哲学家们标出了人工智能的一些基本思想,但是到正式科学的跳跃要求在三个基础领域(逻辑、计算和概率)具有一定水准的数学形式体系。

算法(algorithm)

不完备性定理(incompleteness theorem)

可计算的(computable)

易处理性(tractability)

NP-完全(NP-completeness)

概率(probability)

贝叶斯的规则构成了人工智能系统中大多数用于不确定推理的现代方法的基础。

1.2.3 经济学

重点:

  • 我们应该如何决策以便收益最大?
  • 当其他人不合作时我们应该如何做到这样?
  • 当收益遥遥无期时我们应该如何做到这样?

效用(utility)

决策理论(Decision theory)把概率理论和效用理论结合起来,为在不确定情况下——即,在概率描述能适当捕获决策指定者环境的情况下,做出(经济的或其他的)决策提供一个形式化且完整的框架。

博弈论(game theory)

运筹学(operations research)

马尔可夫决策过程(Markov decision processes)

基于满意度(satisficing)的模型——做出“足够好”的决策

1.2.4 神经科学

重点:

  • 大脑如何处理信息?

神经科学(Neuroscience)研究的是神经系统,特别是大脑。

即使使用一台具有几乎无限容量的计算机,我们仍然不知道如何实现人脑级的智能。

1.2.5 心理学

重点:

  • 人类和动物如何思考与行动?

行为主义(behaviorism)

认知心理学(Cognitive psychology)

认知科学(cognitive science)

目前心理学家中常见(虽然远离普遍的)观点是“认知理论应该像计算机程序”;即,认知理论应该描述详细的信息处理机制,靠这个机制可以实现某种认知功能。

1.2.6 计算机工程

重点:

  • 我们如何才能建造高效的计算机?

为了人工智能获得成功,我们需要两件东西:智能和人工制品。计算机已是精选的人工制品。

人工智能还欠了计算机科学的软件方面一笔债,后者提供了操作系统、编程语言和为编写现代程序(以及关于程序的文档)所需的工具。但是这也是债务已归还的一个领域:人工只能中的工作开创的许多思想已想方设法反向进入主流计算机科学,包括分时、交互式解释器、使用窗口和鼠标的个人计算机、快速开发环境、链表数据类型、自动存储管理以及符号化、函数式、说明性和面向对象编程的关键概念。

1.2.7 控制论

重点:

  • 人工制品可以如何在其自身的控制下运转?

控制论(control theory)

现代控制论,特别是被称为随即优化控制的分支,其目标是设计随时最大化目标函数(objective function)的系统。这与我们关于人工智能的观点大致一致:设计能最佳表现的系统。

1.2.8 语言学

重点:

  • 语言与思维如何关联?

现代语言学与人工智能在大约相同的时间“诞生”,并且一起长大,交叉于一个称为计算语言学(computational linguisitics)或自然语言处理(natural language processing)的混合领域。

知识表示(knowledge representation)

1.3 人工智能的历史

1.3.1 人工智能的孕育期(1943——1955年)

赫布型学习(Hebbian learning):用于修改神经元之间的连接强度的更新规则。

1.3.2 人工智能的诞生(1956年)

1.3.3 早期的热情,巨大的期望(1952——1969年)

物理符号系统(physical symbol system)

微观世界(microworlds)

适应机(adalines)

感知机(perceptrons)

感知机收敛定理(perceptron convergence theorem)

1.3.4 现实的困难(1966——1973年)

困难:

  • 第一种困难起源于大多数早期程序对其主题一无所知
  • 第二种困难是人工智能试图求解的许多问题的难解性
  • 第三种困难起源于用来产生智能行为的基本结构的某些根本局限。

机器进化(machine evolution)(现在称为遗传算法(genetic algorithms))

1.3.5 基于知识的系统:力量的秘诀(1969——1979年)

AI研究的第一个十年呈现的问题求解的美景是一种通用的搜索机制,它试图串联基本的推理步骤来寻找完全解。这样的方法被称为弱方法(weak method),因为它尽管通用,但它们不能扩展到大规模的或困难的问题实例。弱方法的替代方案是使用更强有力的、领域相关的知识,以允许更大量的推理步骤,且可以更容易地处理狭窄的专门领域里发生的典型情况。也许有人会说:要求解一个难题,你不许已经差不多知道答案。

专家系统(expert systems)

确定性因素(certainty factors)的不确定性演算

1.3.6 人工智能成为产业(1980年——现在)

1.3.7 神经网络的回归(1986年——现在)

反传(back-propagation)

连接主义(connectionist)

1.3.8 人工智能采用科学方法(1987年——现在)

AI的建立,部分是出于对类似控制论和统计学等已有领域的局限性的叛逆,但是它现在开始接纳那些领域。

隐马尔可夫模型(hidden Markov models)(HMMs)

数据挖掘(data mining)

贝叶斯网络(Bayesian network)

1.3.9 智能Agent的出现(1995年——现在)

人类级AI(human-level AI)

人工通用智能(AGI, Artificial General Intelligence)

友好的AI(Friendly AI)

1.3.10 极大数据集的可用性(2001年——现在)

1.4 最新发展水平

今日的人工智能能做什么?

  • 机器人汽车(Robotic vehicles)
  • 语音识别(Speech recognition)
  • 自主规划与调度(Autonomous planning and scheduling)
  • 博弈(Game playing)
  • 垃圾信息过滤(Spam fighting)
  • 后勤规划(Logistics planning)
  • 机器人技术(Robotics)
  • 机器翻译(Machine Translation)

1.5 本章小结

要点:

  • 不同人会对AI有不同的思考。要问的两个重要问题是:你关心的是思考还是行为?你是想模拟人还是按照理想标准工作?
  • 在本书中,我们采用的观点是智能主要与理性行为(rational action)相关。理想地,智能Agent(intelligent agent)要采取一个环境中最好的可能行为。我们将研究如何建造在这个意义上具备智能的Agent的问题。
  • 哲学家们(回溯到公元前400年)考虑的想法是思维在某些方面像机器一样,思维对用某种内部语言编码的知识进行操作,思想用于选择采取什么样的行动。
  • 数学家们提供了处理确定的逻辑命题或者不确定的概率命题的工具。它们还建立了理解计算和对算法进行推理的基础。
  • 经济学家们形式化了为决策指定者提供最大化期望结果的决策问题。
  • 神经科学家发现了关于大脑如何进行工作的一些事实,以及它与计算机类似和不同的地方。
  • 心理学家们采用了认为人与动物都是信息处理机的思想。语言学家们说明了语言的使用符合这个模型。
  • 计算机工程师们提供了使得AI应用成为可能的强大机器。
  • 控制论处理的是如何设计以环境的反馈为基础的执行最优行动的设别。初始的时候,控制论的数学工具与AI相当不同,但是两个领域正越来越近。
  • AI历史上有许多从成功到错误乐观、进而导致丧失热情和资金的循环。也有很多引入新的创新方法再系统地提炼出最佳思想的循环。
  • AI在过去十年间取得了更快速的进步,因为在实验和方法比较中使用了更多的科学方法。
  • 理解智能的理论基础的最新进展与实际系统的能力改进已经携手共进。AI的子领域开始变得更集成化,另外AI还与其他学科找到了共同基础。

第2章 智能Agent

2.1 Agent和环境

Agent通过传感器感知环境并通过执行器对所处环境产生影响。

我们用感知来表示任何给定时刻Agent的感知输入。Agent的感知序列是该Agent所收到的所有输入数据的完整历史。从数学角度看,我们可以说Agent函数描述了Agent的行为,它将任意给定感知序列映射为行动。

从Agent内部看,人造Agent的Agent函数通过Agent程序实现。Agent函数是抽象的数学描述;Agent程序则是具体实现,它在一些物理系统内部运行。

2.2 好的行为:理性的概念

理性Agent是做正确的Agent

性能度量

2.2.1 理性

任何指定的时刻,什么是理行的判断依赖于以下4个方面:

  • 定义成功标准的性能度量
  • Agent对环境的先验知识
  • Agent可以完成的行动
  • Agent截止到此时的感知序列

从这可以导出理性Agent的定义:

对每一个可能的感知序列,根据已知的感知序列提供的证据和Agent具有的先验知识,理性Agent应该选择能使其性能度量最大化的行动。

2.2.2 全知者、学习和自主性

一个全知的Agent明确地知道它的行动产生的实际结果并且做出相应的动作;但全知者在现实中是不可能的。

理性不等于完美。理性是使期望的性能最大化,而完美是使实际的性能最大化。完美对Agent而言是不太合理的要求。

因此,对理性的定义并不要求全知,因为理性的选择只依赖于到当时为止的感知序列。

我们的定义不仅要求理性Agent收集信息,而且要求Agent从它所感知的信息中尽可能多的学习。

理性Agent应该是自主的——它应该学习,以弥补不完整的或者不正确的先验知识。

2.3 环境的性质

2.3.1 任务环境的规范描述

PEAS描述:

  • Performance(性能)
  • Environment(环境)
  • Actuators(执行器)
  • Sensors(传感器)

一些软件Agent(或称软件机器人,softbot)却存在于丰富的、无限制的环境中。互联网的复杂性堪比物理世界匹敌,包含很多人工Agent和人类Agent。

2.3.2 任务环境的性质

人工智能中研究的任务环境显然是范围很大的。但我们仍然可以定义数量相当少的维度,来对任务环境进行分类。这些维度在很大程度上不但决定了适当的Agent设计,也决定了实现Agent的主要技术群体的实用性。

  • 完全可观察的与部分可观察的:如果Agent的传感器在每个时间点上都能获取环境的完整状态,那么我们就说任务环境是完全可观察的。如果传感器能够检测所有与行动决策相关的信息,那么该任务环境是有效完全可观察的。噪音、不精确的传感器,或者传感器丢失了部分状态数据,都可能导致环境成为部分可观察的。如果Agent根本没有传感器,环境则是无法观察的。
  • 单Agent与多Agent:竞争性的多Agent环境;合作的多Agent环境。多Agent环境中的Agent设计问题往往与单Agent环境的相差甚远。
  • 确定的与随机的:如果环境的下一个状态完全取决于当前状态和Agent执行的动作,那么我们说该环境是确定的;否则,它是随机的。原则上说,Agent在完全可观察的、确定的环境中无需考虑不确定性。然而,如果环境是部分可观察的,那么它可能表现为随机的。大多数现实环境相当复杂,从实践角度考虑,它们必须处理成随机的。我们使用单词“随机”是为了暗示后果是不确定的并且可以用概率来量化;而不确定的环境中行动后果有多种可能,但与概率无关。
  • 片段式的与延续式的:在片段式的任务环境中,Agent的经历被分成了一个个原子片段。在每个片段中Agent感知信息并完成单个行动。关键的式,下一个片段不依赖于以前的片段中采取的行动。在延续式的环境中,当前的决策会影响到所有未来的决策。片段式的环境要比延续式环境简单得多,因为Agent不需要前瞻。
  • 静态的与动态的:如果环境在Agent计算的时候会变化,那么我们称该Agent的环境是动态的;否则环境则是静态的。如果环境本身不随时间变化而变化,但是Agent的性能评价随时间变化,我们称这样的环境是半动态的(如下棋中的计时)。
  • 离散的与连续的:环境的状态、时间的处理方式以及Agent的感知信息和行动,都有离散/连续之分。
  • 已知的与未知的:严格地说,这种区分指的不是环境本身,指的是Agent的知识状态,这里的知识是指环境的“物理法则”。

人们会意识到,最难处理的情况就是部分可观察的、多Agent的、随机的、延续的、动态的、连续的和未知的环境。