《人工智能:现代方法》第一部分 智能体
<h1 id="人工智能现代方法第一部分-智能体">《人工智能:现代方法》第一部分 智能体</h1><hr>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126220946603-1832089247.png" alt="" loading="lazy"></p>
<h2 id="21-智能体和环境">2.1 智能体和环境</h2>
<p><strong>智能体(Agent)</strong>:具有自治性、社会性、反应性和预动性的基本特征的实体,也可被看作是相应的软件程序或者是一个实体(比如人、车辆、机器人等)</p>
<p><strong>多智能体系统(Multi-Agent System)</strong>:多个相互作用的智能体,各个智能体之间通过相互通信、合作、竞争等方式,完成单个智能体不能完成的,大量而又复杂的工作</p>
<p><strong>智能体的特点</strong>:情境性(Situatedness)、自主性(Autonomous)、适应性(Adaptivity)、社交性(Sociability)</p>
<p><strong>智能体的任务环境PEAS表示</strong>:</p>
<ul>
<li><strong>性能度量(Performance Measure)</strong>:智能体行为成功的客观指标</li>
<li><strong>环境(Environment)</strong>:智能体周围工作环境和条件</li>
<li><strong>执行器(Actuators)</strong>:智能体产生结果的设备、硬件和软件,将动作的输出传递给环境</li>
<li><strong>传感器(Sensors)</strong>:智能体观察和感知环境的设备,智能体通过其接收输入。</li>
</ul>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221350455-1540866843.png" alt="" loading="lazy"></p>
<p>智能体的三个主要工作组件:<br>
<strong>传感器</strong>:检测环境变化<br>
<strong>执行器</strong>:能量转化为运动(e.g. 电机、齿轮)<br>
<strong>效应器</strong>:影响环境(e.g. 手指、显示屏、轮子)</p>
<blockquote>
<p><strong>智能体</strong>是在环境中感知和行动的实体<br>
智能体包括</p>
<ul>
<li>
<p>动物智能体</p>
</li>
<li>
<p>人类智能体</p>
</li>
<li>
<p>机器人智能体(机器人)</p>
</li>
<li>
<p>软件智能体(软件机器人)</p>
<ul>
<li>互联网智能体</li>
</ul>
<blockquote>
<ul>
<li>爬虫</li>
<li>网络机器人</li>
<li>邮件机器人</li>
<li>搜索机器人等</li>
</ul>
</blockquote>
<ul>
<li>聊天机器人<br>
单代理或通常是多代理(所谓分布式AD)</li>
</ul>
</li>
</ul>
</blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221409112-1893592868.png" alt="" loading="lazy"></p>
<blockquote>
<p><strong>传感器和执行器</strong><br>
传感器以某种形式测量环境的某些方面可以被智能体用作输入:</p>
<ul>
<li>视觉、听觉、触觉</li>
<li><strong>主动传感</strong>:发出信号(如雷达或超声波)并感知这个信号在环境中的反射</li>
<li><strong>loT(物联网)</strong><br>
感知为智能体提供了关于他们所处世界的信息<br>
通过解释传感器的反应来居住</li>
<li><strong>执行器</strong>
<ul>
<li>手、腿、声道等</li>
<li>机器人出租车:可供人类司机使用的出租车<br>
例如,油门,转向,刹车等等</li>
</ul>
</li>
</ul>
</blockquote>
<ul>
<li><strong>智能体</strong>:任何通过<strong>传感器(sensor)</strong>感知<strong>环境(environment)</strong>并通过<strong>执行器(actuator)</strong>作用于该环境的事物都可以被视为<strong>智能体(agent)</strong>。<br>
<img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230127175859617-1464576635.png" alt="" loading="lazy"></li>
<li>如图2-1所示。以人为例做类比,一个人类智能体以研究、耳朵和其他器官作为传感器,以手、腿、声道等作为执行器。</li>
</ul>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221359076-2065207597.png" alt="" loading="lazy"></p>
<blockquote>
<p>智能体是可以被视为感知其环境的任何事物,通过传感器并通过执行器作用于环境。</p>
</blockquote>
<ul>
<li>同样地,机器人智能体就能够以摄像头和红外测距仪作为传感器,还有各种电动机作为执行器。</li>
<li>软件智能体接收文件内容、网络数据包和人工输入(键盘/鼠标/触摸屏/语音)作为传感输入,并通过写入文件、发送网络数据包、显示信息或生成声音对环境进行操作。</li>
<li><strong>环境</strong>可以是一切,甚至是整个宇宙!</li>
<li>实际上,我们在设计智能体时,关心的只是宇宙中某一部分的状态,即影响智能体感知以及受智能体动作影响的部分。</li>
</ul>
<p>一个<strong>多智能体系统</strong>(multi-agent system,缩写M.A.S.),是由一个在一个环境中交互的多个智能体组成的计算系统。多智能体系统也能被用在解决分离的智能体以及单层系统难以解决的问题。智能可以由一些方法,函数,过程,搜索算法或加强学习来实现。尽管存在相当大的重叠,然而一个多智能体系统并不总是一个基于智能体的模型(ABM)表现一致。ABM的目标是寻找遵循简单规则的智能体(这些智能体不需要体现出太强的“智慧”)集体行为的解释,通常在自然系统又或者解决具体的工程问题。</p>
<ul>
<li><strong>感知</strong>:我们使用术语<strong>感知(percept)</strong>来表示智能体的传感器正在感知的内容。智能体的<strong>感知序列(percept sequence)</strong>是智能体所感知的一切的完整历史。</li>
</ul>
<blockquote>
<p>一般而言,一个智能体在任何给定时刻的动作选择可能取决于内置知识和迄今为止观察到的整个感知序列,而不是它未感知到的任何事物。</p>
</blockquote>
<p>通过为每个可能的感知序列指定智能体的动作选择,我们或多或少地说明了关于智能体的所有内容。</p>
<p>从数学上讲,我们说智能体的行为由<strong>智能体函数(agent function)</strong>描述,该函数将任意给定的感知序列映射到一个动作。</p>
<p>原则上,我们可以通过尝试所有可能的感知序列并记录智能体响应的动作来构建智能体函数表格。<br>
如果智能体在选择其动作时使用一些随机化,那就必须多次尝试每个序列来确定每次动作的概率。</p>
<p>在内部,人工智能体的智能体函数将由<strong>智能体程序(agent program)</strong>实现。智能体函数是一种抽象的数学描述,而智能体程序是一个具体体现,可以在某些物理系统中运行。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230127184225488-1129525935.png" alt="" loading="lazy"></p>
<p>最后需要强调的是,智能体这一概念旨在成为分析系统的共建,而不是将世界划分为智能体和非智能体的绝对表征。<br>
在某种意义上,工程的所有领域都可以被视为设计与世界互动的人工制品,人工智能运行在这个系列最有趣的一端,在这一端,人工制品具有重要的计算资源,任何环境需要非凡的决策。</p>
<h2 id="22-良好行为理性的概念">2.2 良好行为:理性的概念</h2>
<p><strong>理性智能体(rational agent)</strong>是做正确事情的事物。<br>
显然,做正确的事情要比做错误的事情要好,那么做正确的事情意味着说明呢?</p>
<h3 id="221-性能度量">2.2.1 性能度量</h3>
<ul>
<li>
<p><strong>性能度量</strong>:我们通过结果来评估智能体的行为。当智能体进入环境时,它会根据接受的感知产生一个动作序列。这一动作序列会导致环境经历这一系列的状态。如果序列是理想的,则智能体表现良好。这种可取性的概念由<strong>性能度量</strong>(performance measure)描述,该度量评估任何给定环境状态的序列。</p>
</li>
<li>
<p>在最初,性能度量是在机器设计者的头脑中或者是在机器受众的头脑纵。我们将看到,一些智能体设计具有性能度量的显示表示,而在其他设计中,性能度量完全是隐式的,智能体可能会做正确的事情,但它不知道为什么。</p>
</li>
<li>
<p>需要注意的是,正确地制定性能度量可能非常困难。</p>
</li>
<li>
<p>即使避免了明显的缺陷,一些棘手的问题仍然存在。</p>
</li>
</ul>
<h3 id="222-理性">2.2.2 理性</h3>
<p>在任何时候,理性取决于以下四个方面,换言之,<strong>什么是理性的判断?</strong></p>
<ul>
<li>1、定义成功标准的性能度量。</li>
<li>2、智能体对环境的先验认识。</li>
<li>3、智能体可以执行的行动。</li>
<li>4、智能体到未知的感知序列。</li>
</ul>
<p><strong>理性智能体的定义</strong>:</p>
<blockquote>
<p>对每个可能的序列,根据已知的感知序列提供的证据和智能体内建的先验知识。理性智能体应该选择期望使其性能度量化最大的行动。</p>
</blockquote>
<p>判断一个智能体,是否是理性智能体,我们需要视情况而定:</p>
<ul>
<li>首先,我们需要说明性能度量是什么?</li>
<li>其次,需要清楚智能体对环境了解多少?</li>
<li>智能体具有哪些传感器和执行器</li>
<li>若智能体的执行结果与其预期性一样,那么就可以认为智能体确实是理性,反之。</li>
</ul>
<p>显而易见的,同一个智能体在不同的情况下可能会变得不理性。<br>
,一旦清除了所有灰尘,该智能体将会毫无必要地反复来回;如果性能度量考虑对每个动作罚 1 分,那么智能体的表现就会很差。<br>
在确定所有方格都干净的情况下,一个更好的智能体不会做任何事情。如果干净的方格可能再次变脏,智能体应该偶尔检查,并在必要时重新清理。<br>
如果环境的地理信息是未知的,智能体则需要对其进行探索(explore)。</p>
<h3 id="223-全知学习和自主">2.2.3 全知、学习和自主</h3>
<p><strong>理性智能体(Rational Agent)</strong>:选择一个预期能最大化其性能度量的动作</p>
<p><strong>全知智能体(Omniscient Agent)</strong>:明确知道其行为的实际结果,“做事正确”</p>
<p><strong>理性</strong>和<strong>全知</strong>的概念:</p>
<p> 一个<strong>全知</strong>的智能体知道它的行动产生的实际结果并且做出相应的动作。但一个全知者在实际情况中是不现实不可能的。理性不等于完美。<strong>理性</strong>是使期望的最大化。而完美是使实际性能的最大化,所以完美是对一个智能体不合理的要求。因为理性的选择取决于当时的感知序列。</p>
<p> 所以<strong>理性智能体</strong>在行动前应当观察行动。因为观察有助于最大化期望性能。为了修改未来的感知信息而采取行动的那个过程称为信息收集。这也是理性的重要的一部分。</p>
<p> 对于理性,不仅是需要智能体收集信息,而且需要智能体尽可能的从他感知的东西中进行学习。智能体最初的设定可以反映了环境的一些先验知识,但是随着智能体获得经验。这些知识会被改变或者增加。有一些极端的情况中环境就会被完全当成先验知识。在这样的情况下,智能体不再需要感知和学习,他只需要正确的感知即可。</p>
<p>一般来说成功的智能体会把智能体函数的计算任务分成三个不同的时期:</p>
<blockquote>
<ul>
<li>
<p>1、设计智能体的时候,设计者会完成一些计算</p>
</li>
<li>
<p>2、思考下一步的时候,智能体会做更多地计算。</p>
</li>
<li>
<p>3、当他从经验中进行学习的时候他要进行更多地计算来决定如何修改自己的行为。</p>
</li>
</ul>
</blockquote>
<p> 现阶段拓展一个智能体依赖于设计者的先验知识而不是它自身的感知能力。我们就说该智能体缺乏自主性。</p>
<p> 理性智能体应该是自主的。它应该能够尽可能的学习,以此来弥补不全面或者不正确的先验知识。当得到关于经验的环境的充分地经验后。</p>
<p> 理性智能体的行动才会有效果的独立于他的先验知识,从而与学习相结合后使得设计一种在很多不同环境下都能成功的理性智能体成为可能。</p>
<h2 id="23-环境的本质">2.3 环境的本质</h2>
<p>智能体执行任务,必须要依赖于任务环境(task environment),它的本质上是“问题”,而理性智能体是“解决方案”。<br>
对于智能体程序而言,如何制定任务环境,任务环境的形式,以及任务环境的性质将直接影响智能体程序的恰当设计。</p>
<h3 id="231-指定任务环境">2.3.1 指定任务环境</h3>
<p>在讨论某个智能体的理性时,我们必须指定性能度量、环境以及智能体的执行器和传感器。<br>
我们将所有这些都归在任务环境的范畴下,基于首字面缩写规则,我们称其为<strong>PEAS</strong>(<strong>P</strong>erformance,<strong>E</strong>nvironment,<strong>A</strong>ctuator,<strong>S</strong>ensor)描述。</p>
<blockquote>
<p>在设计智能体时,第一步必须始终是尽可能完整地指定任务环境。</p>
</blockquote>
<p>以自动驾驶出租车司机为例,结合出租车任务环境的PEAS描述进行讨论,有如下结果:</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128153528251-1648880551.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128154115577-233257774.png" alt="" loading="lazy"></p>
<ul>
<li><strong>性能度量</strong>:首先我们希望自动驾驶追求的性能度量(performance measure)是什么?<br>
理想的标准包括到达正确的目的地,尽量减少油耗和磨损,尽量减少行程事件或成本,尽量减少违背交通法规和对其他驾驶员的干扰,最大限度地提高安全性和乘客舒适度,最大化利润。显然,其中一些目标是相互冲突的,因此需要权衡。</li>
<li><strong>环境</strong>:接下来,出租车将面临什么样的驾驶环境(environment)?|<br>
任何出租车司机都必须能够在各种道路上行驶,如乡村车道、城市小巷以及 12 车道的高速公路。道路上有其他交通工具、行人、流浪动物、道路工程、警车、水坑和坑洼。出租车还必须与潜在以及实际的乘客互动。<br>
另外,还有一些可选项。出租车可以选择在很少下雪的南加利福尼亚州或者经常下雪的阿拉斯加运营。它可能总是靠右行驶,或者我们可能希望它足够灵活,在英国或日本时可以靠左行驶。显然,环境越受限,设计问题就越容易解决。</li>
<li><strong>执行器</strong>:自动驾驶出租车的执行器(actuator)包括可供人类驾驶员使用的器件,例如通过加速器控制发动机以及控制转向和制动。此外,它还需要输出到显示屏或语音合成器,以便与乘客进行对话,或许还需要某种方式与其他车辆进行礼貌的或其他方式的沟通。</li>
<li><strong>传感器</strong>:出租车的基本传感器(sensor)将包括一个或多个摄像头以便观察,以及激光雷达和超声波传感器以便检测其他车辆和障碍物的距离。为了避免超速罚单,出租车应该有一个速度表,而为了正确控制车辆(特别是在弯道上),它应该有一个加速度表。要确定车辆的机械状态,需要发动机、燃油和电气系统的传感器常规阵列。像许多人类驾驶者一样,它可能需要获取GPS 信号,这样就不会迷路。最后,乘客需要触摸屏或语音输入才能说明目的地。</li>
</ul>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128153334564-175489376.png" alt="" loading="lazy"></p>
<p>图 2-5 中简要列举了一些其他智能体类型的基本 PEAS 元素。更多示例参见习题 2.PEAS。<br>
这些示例包括物理环境和虚拟环境。注意,虚拟任务环境可能与“真实”世界一样复杂。例如,在拍卖和转售网站上进行交易的<strong>软件智能体(software agent)</strong>,或称软件机器人或<strong>软机器人(softbot)</strong>,为数百万其他用户和数十亿对象提供交易,其中许多对象具有真实的图片。</p>
<h3 id="232-任务环境的属性">2.3.2 任务环境的属性</h3>
<p>智能体的环境类型(Types of Environments):</p>
<blockquote>
<p>(1) <strong>完全可观察 vs 部分可观察</strong>(e.g. 国际象棋 vs 自动驾驶)<br>
(2) <strong>确定性环境 vs 随机性环境</strong>(即当前状态是否唯一地确定下一状态,e.g. 国际象棋 vs 自动驾驶)<br>
(3) <strong>竞争环境 vs 合作环境</strong>(e.g. 国际象棋 vs 自动驾驶,自动驾驶是多辆自动驾驶汽车合作避免相撞)<br>
(4) <strong>单智能体 vs 多智能体</strong>(e.g. 一个人在迷宫中 vs 足球队)<br>
(5) <strong>动态环境 vs 静态环境</strong>(e.g. 过山车 vs 空房子)<br>
(6) <strong>离散环境 vs 连续环境</strong>(即一个环境是否由有限数量的操作组成,e.g. 国际象棋 vs 自动驾驶)<br>
(7) <strong>片段式 vs 延续式环境</strong>(e.g. 问答机器人 vs 网球运动员)</p>
</blockquote>
<p>注:(6)是在空间上的连续,(7)是在时间上的连续</p>
<ul>
<li>
<p>(1) <strong>完全可观测的(fully observable)</strong>与<strong>部分可观测的(partially observable)</strong>:如果智能体的传感器能让它在每个时间点都能访问环境的完整状态,那么我们说任务环境是完全可观测的。如果传感器检测到与动作选择相关的所有方面,那么任务环境就是有效的完全可观测的,而所谓的相关又取决于性能度量标准。完全可观测的环境很容易处理,因为智能体不需要维护任何内部状态来追踪世界。由于传感器噪声大且不准确,或者由于传感器数据中缺少部分状态,环境可能部分可观测。例如,只有一个局部灰尘传感器的真空吸尘器无法判断其他方格是否有灰尘,自动驾驶出租车无法感知其他司机的想法。如果智能体根本没有传感器,那么环境是不可观测的(unobservable)。在这种情况下,有人可能会认为智能体的困境是无解的,但是正如我们在第 4 章中讨论的那样,智能体的目标可能仍然可以实现,有时甚至是确定可以实现的。</p>
</li>
<li>
<p><strong>单智能体的(single-agent)</strong>与多<strong>智能体的(multiagent)</strong>:单智能体和多智能体环境之间的区别似乎足够简单。例如,独自解决纵横字谜的智能体显然处于单智能体环境中,而下国际象棋的智能体则处于二智能体环境中。然而,这里也有一些微妙的问题。首先,我们已经描述了如何将一个实体视为智能体,但没有解释哪些实体必须视为智能体。智能体 A(例如出租车司机)是否必须将对象 B(另一辆车)视为智能体,还是可以仅将其视为根据物理定律运行的对象,类似于海滩上的波浪或随风飘动的树叶?关键的区别在于 B 的行为是否被最佳地描述为一个性能度量的最大化,而这一性能度量的值取决于智能体 A 的行为。<br>
例如,国际象棋中的对手实体 B 正试图最大化其性能度量,根据国际象棋规则,这将最小化智能体 A 的性能度量。因此,国际象棋是一个竞争性(competitive)的多智能体环境。但是,在出租车驾驶环境中,避免碰撞使所有智能体的性能度量最大化,因此它是一个部分合作<br>
的(cooperative)多智能体环境。它还具有部分竞争性,例如,一个停车位只能停一辆车。</p>
<p>多智能体环境中的智能体设计问题通常与单智能体环境下有较大差异。例如,在多智能体环境中,通信通常作为一种理性行为出现;在某些竞争环境中,随机行为是理性的,因为它避免了一些可预测性的陷阱。</p>
</li>
<li>
<p><strong>确定性的(deterministic)</strong>与<strong>非确定性的(nondeterministic)</strong>:如果环境的下一个状态完全<br>
由当前状态和智能体执行的动作决定,那么我们说环境是确定性的,否则是非确定性的。<br>
原则上,在完全可观测的确定性环境中,智能体不需要担心不确定性。然而,如果环境是部分可观测的,那么它可能是非确定性的。<br>
大多数真实情况非常复杂,以至于不可能追踪所有未观测到的方面;出于实际目的,必须将其视为非确定性的。从这个意义上讲,出租车驾驶显然是非确定性的,因为人们永远无法准确地预测交通行为。此外,轮胎可能会意外爆胎,发动机可能会在没有警告的情况下失灵。我们描述的真空吸尘器世界是确定性的,但变化可能包括非确定性因素,如随机出现的灰尘和不可靠的吸力机制。<br>
最后注意一点,<strong>随机的(stochastic)</strong>一词被一些人用作“非确定性”的同义词,但我们会区分这两个术语。<br>
如果环境模型显式地处理概率(例如,“明天的降雨可能性为 25%”),那么它是随机的;如果可能性没有被量化,那么它是“非确定性的”(例如,“明天有可能下雨”)。</p>
</li>
<li>
<p><strong>回合式的(episodic)</strong>与<strong>序贯的(sequential)</strong>:在回合式任务环境中,智能体的经验被划分为原子式的回合。在每一回合中,智能体接收一个感知,然后执行单个动作。至关重要的是,下一回合并不依赖于前几回合采取的动作。许多分类任务是回合式的。<br>
例如,在装配流水线上检测缺陷零件的智能体需要根据当前零件做出每个决策,而无须考虑以前的决策;而且,当前<br>
的决策并不影响下一个零件是否有缺陷。但是,在序贯环境中,当前决策可能会影响未来所有决策。a 国际象棋和出租车驾驶是序贯的:在这两种情况下,短期行为可能会产生长期影响。<br>
因为在回合式环境下智能体不需要提前思考,所以要比序贯环境简单很多。</p>
</li>
<li>
<p><strong>静态的(static)</strong>与<strong>动态的(dynamic)</strong>:如果环境在智能体思考时发生了变化,我们就说该智能体的环境是动态的,否则是静态的。静态环境很容易处理,因为智能体在决定某个操作时不需要一直关注世界,也不需要担心时间的流逝。但是,动态环境会不断地询问智能体想要采取什么行动,如果它还没有决定,那就等同于什么都不做。如果环境本身不会随着时间的推移而改变,但智能体的性能分数会改变,我们就说环境是<strong>半动态的(semidynamic)</strong>。驾驶出租车显然是动态的,因为驾驶算法在计划下一步该做什么时,其他车辆和出租车本身在不断移动。<br>
在用时钟计时的情况下国际象棋是半动态的。填字游戏是静态的。</p>
</li>
<li>
<p><strong>离散的(discrete)</strong>与<strong>连续的(continuous)</strong>:离散/连续的区别适用于环境的状态、处理时间的方式以及智能体的感知和动作。例如,国际象棋环境具有有限数量的不同状态(不包括时钟)。国际象棋也有一组离散的感知和动作。驾驶出租车是一个连续状态和连续时间的问题,出租车和其他车辆的速度和位置是一系列连续的值,并随着时间平稳地变化。出租车的驾驶动作也是连续的(转向角等)。严格来说,来自数字照相机的输入是离散的,但通常被视为表示连续变化的强度和位置。</p>
</li>
<li>
<p><strong>已知的(known)</strong>与<strong>未知的(unknown)</strong>:严格来说,这种区别不是指环境本身,而是指智能体(或设计者)对环境“物理定律”的认知状态。在已知环境中,所有行动的结果(如果环境是非确定性的,则对应结果的概率)都是既定的。显然,如果环境未知,智能体将不得不了解它是如何工作的,才能做出正确的决策。<br>
已知和未知环境之间的区别与完全可观测和部分可观测环境之间的区别不同。一个已知的环境很可能是部分可观测的,例如,在纸牌游戏中,知道规则但仍然无法看到尚未翻转的牌。<br>
相反,一个未知环境可以是完全可观测的,如一个全新的电子游戏,屏幕可能会显示整个游戏状态,但在尝试之前并不知道各个按钮的作用。</p>
</li>
</ul>
<h2 id="24-智能体的结构">2.4 智能体的结构</h2>
<p>人工智能的工作是设计一个<strong>智能体程序(agent program)</strong>实现智能体函数,即从感知到动作的映射。假设该程序就运行在某种具有物理传感器和执行器的计算设备上,我们称之为<strong>智能体架构(agent architecture)</strong>。</p>
<p></p><div class="math display">\[智能体 = 架构 + 程序
\]</div><p></p><p>显然,我们选择的智能体程序必须是适合相应架构的程序。<br>
通常,架构能使程序可以使用来自传感器的感知,然后运行程序,并将程序生成的动作选择反馈给执行器。</p>
<ul>
<li>
<p>在这里设计的智能体程序都有相同的框架:它们将当前感知作为传感器的输入,并将动作返回给执行器。</p>
<p>(另一种选择是,我们可以让智能体程序作为环境异步运行的协程。每个这样的协程都有一个输入和输出端口,并由一个循环组成,该循环读取输入端口的感知,并将动作写到输入端口。)</p>
</li>
<li>
<p>智能体程序(将当前感知作为输入)和智能体函数(可能依赖整个感知历史)之间的差异。因为环境中没有其他可用信息,所有智能体程序别无选择,只能将当前感知作为输入。</p>
</li>
<li>
<p>如果智能体的动作需要依赖于整个感知序列,那么智能体必须记住历史感知。</p>
</li>
</ul>
<blockquote>
<p><strong>智能体的结构</strong>:</p>
<ul>
<li><strong>行为(Behavior)</strong>:感知后做出的动作</li>
<li><strong>架构(Architecture)</strong>:某个具备物理传感器和执行器的计算装置</li>
<li><strong>函数(Function)</strong>:环境信息→行为,整个感知历史→动作</li>
<li><strong>程序(Program)</strong>:描述智能体行为,必须适合架构,当前感知→动作,是智能体函数的实现</li>
</ul>
</blockquote>
<h3 id="241-智能体程序">2.4.1 智能体程序</h3>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128160411424-361901917.png" alt="" loading="lazy"></p>
<p>关于智能体的结构,这里主要有以下四种基本类型依次为:</p>
<ul>
<li><strong>简单反射型智能体</strong>:直接感知信息做出反应</li>
<li><strong>基于模型的反射型智能体</strong>:保持内部状态,依赖感知历史</li>
<li><strong>基于目标的智能体</strong>:为达到目标而行动</li>
<li><strong>基于效用的智能体</strong>:试图最大化其期待的“快乐”<br>
所有这些都可以变成
<ul>
<li><strong>学习智能体</strong>:可以从过去的经验中学习,由学习元件、评判元件、性能元件、问题产生器组成</li>
</ul>
</li>
</ul>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221529033-846194766.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128160859266-809430591.png" alt="" loading="lazy"></p>
<h3 id="242-简单反射型智能体">2.4.2 简单反射型智能体</h3>
<p>最简单的智能体是<strong>简单反射型智能体(simple reflex agent)</strong>。<br>
这些智能体根据当前感知选择动作,忽略感知历史的其余部分。</p>
<p>该智能体的智能体程序如下图所示:</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128160912660-1874425260.png" alt="" loading="lazy"></p>
<p>即使在更为复杂的环境中,也会出现简单的反射行为。<br>
想象自己是自动驾驶出租车司机。如果前面的汽车刹车并且刹车灯亮起,那么你应该注意到这一点并开始刹车。换句话说,你通<br>
过对视觉输入进行一些处理来建立我们称之为“前面的汽车正在刹车”的条件。然后,这会触发智能体程序中的既定联结,对应动作“启动刹车”。我们称这样的联结为<strong>条件-动作规则(condition-action rule)</strong>,写作:</p>
<blockquote>
<p><strong>如果</strong>前面的车正在刹车,<strong>则</strong>启动刹车。</p>
</blockquote>
<p>人类也有许多这样的联结,其中一些是习得反应(如驾驶),而另一些则是先天反射(如在有东西接近眼睛时眨眼)。</p>
<p>一种更通用、更灵活的方法是,首先为条件操作规则构建通用解释器,然后为特定任务环境创建规则集。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221551190-1039859466.png" alt="" loading="lazy"></p>
<p>上图给出了通用程序的结构示意图,展示条件 - 动作规则如何在智能体中建立从感知到动作的联结。</p>
<blockquote>
<ul>
<li>简单反射型智能体具有值得赞扬的简单特性,但它们的智能有限。智能体只有在当前感知的基础上才能做出正确的决策,也就是说,只有在环境完全可观测的情况下才可行。</li>
<li>即使是轻微的不可观测性也会造成严重的问题。</li>
<li>对在部分可观测环境中工作的简单反射型智能体而言,无限循环通常是不可避免的。</li>
<li>如果智能体可以<strong>随机化(randomize)</strong>其操作,则可以跳出无限循环。</li>
<li>因此,<strong>随机化</strong>的简单反射型智能体可能优于确定性的简单反射型智能体。</li>
<li>在某些多智能体环境中,正确的随机行为是理性的。在单智能体环境中,随机化通常是不理性的。</li>
</ul>
</blockquote>
<h3 id="243-基于模型的反射型智能体">2.4.3 基于模型的反射型智能体</h3>
<p><strong>内部状态</strong>:处理部分可观测性的最有效方法是让智能体追踪它现在观测不到的部分世界。也就是说,智能体应该维护某种依赖于感知历史的<strong>内部状态(internal state)</strong>,从而至少反映当前状态的一些未观测到的方面。</p>
<p>随着时间的推移,更新这些内部状态信息需要在智能体程序中以某种形式编码两种知识。<br>
首先,需要一些关于世界如何随时间变化的信息,这些信息大致可以分为两部分:<strong>智能体行为的影响</strong>和<strong>世界如何独立于智能体而发展</strong>。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221627665-241509945.png" alt="" loading="lazy"></p>
<ul>
<li><strong>转移模型</strong>:这种关于“世界如何运转”的知识(无论是在简单<br>
的布尔电路中还是在完整的科学理论中实现)被称为世界的<strong>转移模型(transition model)</strong>。</li>
<li><strong>传感器模型</strong>:一些关于世界状态如何反映在智能体感知中的信息。例如,当前面的汽车开始刹车时,前向摄像头的图像中会出现一个或多个亮起的红色区域;当摄像头被淋湿时,图像中会出现水滴状物体并部分遮挡道路。这种知识称为<strong>传感器模型(sensor model)</strong>。</li>
<li><strong>基于模型的智能体</strong>:转移模型和传感器模型结合在一起让智能体能够在传感器受限的情况下尽可能地跟踪世界<br>
的状态。使用此类模型的智能体称为基于模型的智能体(model-based agent)。</li>
</ul>
<p>智能体程序如图 2-12 所示。有趣的部分是函数 Update-State,它负责创建新的内部状态描述。模型和状态<br>
的表示方式的细节因环境类型和智能体设计中使用的特定技术而异。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128161040644-986990705.png" alt="" loading="lazy"></p>
<p>无论使用哪种表示,智能体几乎不可能准确地确定部分可观测环境的当前状态。 因此,关于当前状态的不确定性可能是不可避免的,但智能体仍然需要做出决定。</p>
<h3 id="244-基于目标的智能体">2.4.4 基于目标的智能体</h3>
<p>了解环境的现状并不总是足以决定做什么。</p>
<p>正确的决定取决于最终的目标。换句话说,除了当前状态的描述之外,智能体还需要某种描述理想情况的目标信息,例如设定特定的目的地。智能体程序可以将其与模型(与基于模型的反射型智能体中使用的信息相同)相结合,并选择实现目标的动作。|</p>
<p>下图展示了基于目标的智能体结构。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221652188-407664690.png" alt="" loading="lazy"></p>
<p>尽管基于目标的智能体看起来效率较低,但它更灵活,因为支持其决策的知识是显式表示的,并且可以修改。</p>
<p>例如,只要将目的地指定为目标,就可以很容易地更改基于目标的智能体的行为,以到达不同的目的地。反射型智能体关于何时转弯和何时直行的规则只适用于单一目的地,这些规则必须全部更换才能去新的目的地。</p>
<h3 id="245-基于效用的智能体">2.4.5 基于效用的智能体</h3>
<p> 性能度量会给任何给定的环境状态序列打分,因此它可以很容易地区分<strong>实现目标</strong>(到达出租车目的地)所采取的更可取和更不可取的方式。智能体的<strong>效用函数(utility function)</strong>本质上是性能度量的内部化。如果内部效用函数和外部性能度量一致,那么根据外部性能度量选择动作,以使其效用最大化的智能体是理性的。</p>
<p> 与基于目标的智能体一样,基于效用的智能体在灵活性和学习方面有很多优势。此外,在两种情况下,仅靠目标是不充分的,但基于效用的智能体仍然可以做出理性的决策。首先,当存在相互冲突的目标时,只能实现其中的一部分(例如速度和安全),效用函数会进行适当的权衡。其次,当智能体有多个目标实现,但没有一个目标可以确定地实现时,效用提供了一种方法,可以权衡目标的重要性和成功的可能性。</p>
<p> 部分可观测性和非确定性在真实世界中普遍存在,因此,不确定性下的决策也普遍存在。从技术上讲,基于效用的理性智能体会选择能够最大化其动作结果<strong>期望效用(expected utility)</strong>的动作,也就是在给定每个结果的概率和效用的情况下,智能体期望得到的平均效用。</p>
<p>基于效用的智能体结构如下图所示。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230127215023697-1330719602.png" alt="" loading="lazy"></p>
<h3 id="246-学习型智能体">2.4.6 学习型智能体</h3>
<p>图灵早期的论文中,关于实现智能机器的想法,他提出的方法是构造学习型机器,然后教它们。在人工智能的许多领域,这是目前创建最先进系统的首选方法。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230126221703957-1567024563.png" alt="" loading="lazy"></p>
<p>任何类型的智能体(基于模型、基于目标、基于效用等)都可以构建(或不构建)成学习型智能体。</p>
<p>此外智能体的学习还有另一个优势:它让智能体能够在最初未知环境中运作,并变得比其最初的知识可能允许的能力更强。</p>
<p>学习型智能体可分为四个概念组件,最重要的区别在于负责提升的<strong>学习元素</strong>和负责选择外部行动的<strong>性能元素</strong>。<strong>性能元素</strong>是我们之前认为的整个智能体:它接受感知并决定动作。<strong>学习元素</strong>使用来自<strong>评估者(critic)</strong>对智能体表现的反馈,并以此确定应该如何修改性能元素以在未来做的更好。</p>
<ul>
<li>学习元素的设计在很大程度上取决于性能元素的设计。</li>
<li>学习型智能体的最后一个组件是<strong>问题生成器(problem generator)</strong>。它负责建议动作,这些动作将获得全新和信息丰富的经验。如果性能元素完全根据自己的方式,它会继续选择已知最好的动作。但如果智能体愿意进行一些探索,并在短期内做一些可能不太理想的动作,那么从长远来看,它可能会发现更好的动作。问题生成器的工作是建议这些探索性行动。</li>
<li>学习元素可以对智能体图中显示的任何“知识”组件进行更改。</li>
<li>无论外部性能标准如何,改进基于模型的智能体的组件,使其更好地符合现实几乎总是一个好主意。</li>
<li>更一般地说,人类的选择可以提供有关人类偏好的信息。</li>
<li>总之,智能体有各种各样的组件,这些组件可以在智能体程序中以多种方式表示,因此学习方法之间似乎存在很大差异。然而,主题仍然是统一的:智能体中的学习可以概括为对智能体的各个组件进行修改的过程,使各组件与可用的反馈信息更接近,从而提升智能体的整体性能。</li>
</ul>
<h3 id="247-智能体程序的组件如何工作">2.4.7 智能体程序的组件如何工作</h3>
<p> 出于目的,将世界理解为存在着相互关联的事物,而不仅仅是具有值的变量。</p>
<p> 原子表示,因子化表示和结构化表示所在的轴是表达式增强的轴,即可以通过简洁的描述捕捉到更具表达性的表示。为了避免缺点的同时获得表达性表示的好处,真实世界中的、智能系统可能需要轴上所有的点同时运行。</p>
<p> 轴涉及从概念到物理记忆中位置的映射,包括计算机的内存和大脑的记忆,如果概念和记忆位置之间存在一对一的映射,称之为局部表示,如果一个概念的表示分布在多个记忆位置,每个记忆位置被用作多个不同概念表示的一部分,我们称之为分布式表示。在分布式表示中,可以把每个概念想象成多维空间中的一个点,可以从一定程度上降低对乱码的影响。</p>
<p><img src="https://img2023.cnblogs.com/blog/1571518/202301/1571518-20230128155803619-56552209.png" alt="" loading="lazy"></p>
<h2 id="总结">总结</h2>
<p>本章是人工智能的旋风之旅,在这个过程中我们认为人工智能是智能体设计的科学。本章要回顾的要点如下。</p>
<ul>
<li>智能体是在环境中感知和行动的事物。智能体的智能体函数指定智能体在响应任意感知序列时所采取的动作。</li>
<li>性能度量评估智能体在环境中的行为。给定到目前为止所看到的感知序列,理性智能体的动作是为了最大化性能度量的期望值。</li>
<li>任务环境规范包括性能度量、外部环境、执行器和传感器。在设计智能体时,第一步必须始终是尽可能完整地指定任务环境。</li>
<li>任务环境在几个重要维度上有所不同。它们可以是完全可观测的或部分可观测的、单智能体的或多智能体的、确定性的或非确定性的、回合式的或序贯的、静态的或动态的、离散的或连续的、已知的或未知的。</li>
<li>在性能度量未知或难以正确指定的情况下,智能体优化错误目标的风险很大。在这种情况下,智能体设计应该反映真实目标的不确定性。</li>
<li>智能体程序实现智能体函数。存在各种基本的智能体编程,反映了决策过程中明确使用的信息类型。这些设计在效率、紧凑性和灵活性方面各不相同。智能体程序的适当设计取决于环境的性质。</li>
<li>简单反射型智能体直接响应感知,而基于模型的反射型智能体保持内部状态以跟踪当前感知中不明晰的世界状态。基于目标的智能体采取行动来实现目标,而基于效用的智能体试图最大化自己期望的“快乐”。</li>
<li>所有智能体都可以通过学习提升性能。</li>
</ul>
<h2 id="参考">参考</h2>
<p> 《人工智能:现代方法》(第四版)<br>
https://blog.csdn.net/qaqwqaqwq/article/details/128216771</p>
</div>
<div id="MySignature" role="contentinfo">
Talk is cheap. Show me the code<br><br>
来源:https://www.cnblogs.com/isLinXu/p/17061381.html
頁:
[1]