智能体程序的组件如何工作

我们已经将智能体程序(用非常高级的术语)描述为由各种组件组成,其功能是回答诸如“现在的世界是什么样的?” “我现在应该采取什么动作” “我的动作将导致什么?” 等问题。人工智能学生的下一个问题是,“这些组件究竟是如何工作的?”要正确的回答这个问题大约需要一千页的篇幅,但在这里我们希望读者能够注意一些基本区别,即组件表示智能体所处环境的各种方式之间的区别。

粗略地说,我们可以通过一个复杂性和表达能力不断增加的横轴来描述表示,即原子表示、因子化表示和结构化表示。为了辅助说明这些观点,我们可以考虑特定的智能体组件,例如处理“我的动作会导致什么”。这个组件描述了作为采取动作的结果可能在环境种引起的变化。

在原子表示中,世界的每一个状态都是不可分割的,它没有内部结构。考虑这样一个任务:通过城市序列找到一条从某个国家的一端到另一端的行车路线。为了解决这个问题,将世界状态简化为所处城市的名称就足够了,这就是单一的知识原子,也是一个“黑盒”,它唯一可分辨的属性是与另一个黑盒相同或不同。

因子化表示将每个状态拆分为一组固定的变量或属性,每个变量或属性都可以有一个值。考虑同一驾驶问题更真实的描述,即我们需要关注的不仅仅是一个城市或另一个城市的原子位置,可能还需要关注邮箱中的汽油量、当前的 GPS 坐标、油量警示灯是否工作,通行费、收音机上的电台等。两个不同的原子状态没有任何共同点(只是不同的黑盒),但两个不同的因子状态可以共享某些属性(如位于某个特定的GPS位置),而其他属性不同(如有大量汽油或没油),这使得研究如何将一种状态转换为另一种状态变得更加容易。

出于许多目的,我们需要将世界理解为存在着相互关联的事物,而不仅仅是具有值的变量。例如,我们可能会注意到有一辆卡车正在倒车进入一个奶牛场的车道,但一头散养的奶牛挡住了卡车的路。因子化表示不太可能为属性 TruckAheadBackingIntoDairyFarmDrivewayBlockedByLooseCow 预先配备 true或false的值。 这就需要一个结构化表示,在这种表示中可以明确的描述诸如奶牛和卡车之类的对象及其各种不同的关系。

如前所述,原子表示、因子化表示和结构化表示所在的轴是表达性增强的轴。粗略地说,可以通过简洁的描述捕捉到更具表达性的表示,表达性差的表示也可以捕捉到一切,但需要更多的描述。通常,表达性更强的语言更简洁;例如,国际象棋规则可以用一两页结构化表示语言来描述,但需要数千页因子化表示语言来描述,而需要 10^{38}页的原子语言来描述。但是,随着表示能力的增强,推理和学习变得更加复杂。为了避免缺点的同时获得表达性表示的好处,真实世界中的智能系统可能需要轴上的所有点同时运行。

另一各表示轴涉及从概念到物理记忆中位置的映射,包括计算机的内存和大脑的记忆。如果概念和记忆位置之间存在一对一的映射,我们称之为局部表示。但是,如果一个概念的表示分别在多个记忆位置,并且每个记忆位置被用作多个不同概念表示的一部分,我们称之为分布式表示。分布式表示对噪声和信息丢失更健壮。使用局部表示,从概念到记忆位置的映射是随机的,如果传输错误导致几位乱码,我们将可能卡车与无关的概念停战混淆。但在分布式表示中,可以把每个概念想象成多维空间中的一个点,即使有一些乱码,也会移动到该空间中附近的点,其具有相似的含义。
[1]


  1. 从明天起做一个快乐的 agent 工程师 ↩

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容