Soar (認知架構)

Soar 是一种认知架构 ，最初是由约翰·莱尔德(John Laird)、艾伦·纽厄尔和卡内基·梅隆大学的保罗·罗森布鲁姆(Paul Rosenbloom)创建。现在由莱尔德在密歇根大学的研究小组维护和开发 。 
Soar项目的目标是开发通用智能代理所需的固定计算构件，可以执行广泛的任务，并编码、使用和学习所有类型的知识，以实现人类全部的认知能力，如决策、问题解决、计划和自然语言理解。Soar既是认知理论，也是该理论的计算实现。自1983年莱尔德发表论文以来，人工智能研究人员已经根据不同的人类行为面向，广泛使用Soar来创建智能代理和认知模型 。目前对Soar最全面的描述是2012年出版的《Soar认知结构》。

理论

Soar涵盖了通用智能在计算结构上的多个假设，而当中有许多假设与其他认知架构是相通的，包括由约翰·罗伯特·安德森创建的ACT-R以及史丹·富兰克林(Stan Franklin)创建的LIDA 。最近，Soar着重于一般AI(功能和效率)，而ACT-R着重于认知建模 (对人类认知的详细建模)。 
在艾伦·纽厄尔的书“ 认知统一理论 ”中，描述了最早构成Soar基础的认知理论“问题空间假设”， 这也追溯到最早期的人工智能系统之一，由纽厄尔、西蒙和Shaw在1955年提出的逻辑理论家。问题空间假设认为，在尝试实现目标时，所有目标导向的行为都可以被看作是对可能状态空间的搜索（问题空间）。每个步骤都会选择一个算子(Operator)，将其应用到代理的当前状态，这可能导致内部发生变化，比如从长期记忆、世界的改变或外部行为中提取知识。（Soar的名字源于状态、算子和结果(State、Operator And Result)的基本循环;但是，它不再被视为缩写字。）问题空间假设的本质是，即使是像规划这样复杂的活动，所有行为都可以分解为一系列选择及应用的原始算子，而这些选择及应用映射到人类行为上需要大约50ms的时间。 
Soar理论的第二个假设是，虽然每一步只能选择一个算子，从而造成一个连续的瓶颈，但是选择和应用的过程是通过并行规则触发来实现的，因此能够脉络依赖地提取程序性知识。 
第三个假设是，如果选择或应用算子的知识不够完整或不够确定时，就会产生僵局，结构会自动创建一个子状态。在子状态中，会递回地使用相同的问题解决过程，但是目标必须是提取或发现知识，以便决策能够继续。这可能会导致子状态的堆叠，在这些子状态中，如规划或分层任务分解传统的问题方法自然会产生。当在子状态中创建的结果解决僵局时，子状态及其相关结构被移除。总体方法被称为通用子目标。 
这些假设导致了一个支持三层处理的的架构。最低层级是自下而上、并行和自动化历程。下一层是审议层级，在这个层级，会将从第一层获得的知识用于提议、选择和应用单个动作。这两个层级实现了快速、熟练的行为，并且大致对应于丹尼尔·卡内曼的“系统1处理级别”。当知识不完整或不确定时，与系统2大致对应，会通过使用子状态的第三层处理，自动产生更复杂的行为。 
Soar的第四个假设是，其底层结构是模块化的，但是并非像计划或语言这样，基于任务或能力的模块，而是作为独立于任务的模块，包括:决策模块、记忆模块(短期空间/视觉记忆、工作记忆、长期程序性记忆、陈述性记忆和情节记忆)、与所有长期记忆相关的学习机制、知觉模块、运动模块。关于以下所描述记忆的具体属性还有进一步的假设，包括所有的学习都是在线的和渐进式的。 
第五个假设是，记忆元素（空间/视觉记忆中的记忆元素除外）被表示为符号的关系结构。符号系统是通用智能所必需的假设，被称为物理符号系统假设 。一个Soar重要的演进是，所有符号结构都具有相关的统计元数据(例如使用频率、近期信息或预期的未来回报)，这些统计元数据会影响符号结构的提取、维护和学习。

处理周期-决策程序

Soar的主要处理周期来自程序性记忆（如何操作的知识）和工作记忆（当前情况的表征）之间的交互作用，以支持算子的选择和应用。工作记忆中的信息以一种基于状态的符号图形结构表示。程序性记忆中的知识被表示为if-then生产规则 （条件和动作的集合），这些规则不断地与工作记忆的内容匹配。当规则的条件与工作记忆中的结构匹配时，将触发并执行这个动作。这种规则和工作记忆的组合也称为产出系统。与大多数产出系统不同的是，在Soar中，所有匹配规则都是并行触发。 
与将单个规则的选择作为决策的关键不同，Soar会借由规则提出、评估和应用来选择及采用算子，以实现决策。算子会由测试当前状态的规则提出，并在工作记忆中创建算子的表征形式和可接受的偏好，这表明这个算子应该被考虑选择和采用。附加规则会去匹配提议的算子，并比较及评估提议的其他算子来创建附加偏好。通过决策过程分析偏好，决策过程会选择优选的算子，并安装为工作记忆中的当前算子。匹配到当前算子的规则将触发应用，并修改工作记忆。修改工作记忆可以是简单的推论、查询以提取Soar的长期语义记忆或情节记忆、对运动系统下达指令来执行环境动作，或与空间视觉系统(SVS)的交互作用(SVS是工作记忆与知觉的接口)。对工作记忆的这些修改会导致提出和评估新的算子，然后选择并采用。

强化学习

Soar有着创建数值偏好来评估算子的规则，而Soar支援强化学习，可以根据奖励来调整规则值。为了提供最大的灵活性，在工作记忆中有一个结构会创造奖励。

僵局、子状态和组集

如果对算子的偏好不足以指定选择哪一个算子，或者没有足够的规则来采用某个算子，就会出现僵局。为了应对并化解僵局，将在工作记忆中创建子状态。然后，附加的程序性知识可以在子状态中建议和选择算子，以获得更多的知识，并在原始状态中创建偏好或修改该状态来化解僵局。子状态为随需求应变的复杂推理提供了一种手段，包括层次任务分解、计划和对陈述性长期记忆的触接。一旦僵局被化解，除了结果外，子状态中的所有结构都将被移除。导致结果的子状态处理，Soar的组集机制会将其编译成规则。自此之后，学习的规则会在类似的情况下自动触发，这样就不会出现僵局，逐步地将复杂的推理转换为自动化/反应性处理。最近，通过目标导向和自动知识库扩充机制，已扩展了整个通用子目标化程序，该机制允许以创新和问题导向的方式重新组合Soar代理所拥有的知识，从而解决僵局 。

符号输入和输出

符号输入及输出是通过附加在顶部状态的工作记忆结构(输入-链接及输出-链接)来产生。如果结构创建在工作记忆的输出链接上，这些结构就会被转换为外部动作的命令(例如，运动控制)。

空间视觉系统与心像

为了支援与视觉系统和非符号推理的交互作用，Soar拥有其空间视觉系统(SVS)。SVS内部将世界表示为场景图(一个对象和组件子对象的集合，每个对象和组件子对像都具有诸如形状、位置、姿态、相对位置和比例等空间属性)。使用SVS的Soar代理可以创建过滤器，自动从其场景图中提取特征及关联，然后将其添加到工作记忆中。此外，一种Soar工具可以添加结构到SVS并用于心像。例如，代理可以在给定位置创建SVS中的假想对象，并查询它是否与任何感知对象发生冲突。

语义记忆

Soar中的语义记忆（SMEM）被设计为事实类结构的超大型长期记忆。SMEM中的数据表示为有向循环图。可以通过在工作记忆的保留区域中创建命令的规则来存储或提取结构。提取到的结构将添加到工作记忆中。 
SMEM结构具有表示每个记忆使用频率或新近度的激活值，从而实现了最初为ACT-R开发的基本级别的激活方案。在提取过程中，将提取SMEM中与查询匹配并具有最高激活值的结构。Soar还支持扩散激发，其中激活从已提取到工作记忆中的SMEM结构扩散到与其链接的其他长期记忆。这些记忆又将有所衰减地扩散激发到其相邻记忆。扩散激发是一种允许当前情境影响提取语义记忆的机制。

情节记忆

情节记忆 （EPMEM）会自动在时间流中记录工作记忆的快照。先前的情节可以通过查询提取到工作记忆中。一旦提取到情节，则可以提取下一个（或上一个）情节。代理可以使用EPMEM顺序播放过去的情节（允许它预测动作的效果）、提取特定记忆或查询具有某些记忆结构的情节。

学习

Soar的每一个长期记忆都与在线学习机制有关，这些机制可以创建新的结构，或者根据代理的经验修改元数据。例如，Soar通过一个称为组集的过程来学习新的程序性记忆规则，并使用强化学习来调整算子的选择规则。

开发代理

在Soar中开发代理的标准方法首先从编写载入程序性记忆的规则开始，然后使用适当的陈述性知识来初始化语义性记忆。代理开发的过程在官方的Soar手册和研究小组网站提供的教程中有着详细说明。

软件

Soar架构由密歇根大学的约翰·莱尔德研究小组维护和推广。当前架构以C和C ++组合编写而成，这可以免费在研究小组的网站上获得（BSD许可证）。 
Soar可以通过Soar标记语言（SML）实现与外部语言环境的接口，包括C++、Java、Tcl及Python。 SML是用于“创建Soar代理实例”及“实现其I / O链接接口”的主要机制。 
JSoar是用Java编写的Soar的实现。它由AI研发公司SoarTech维护。尽管JSoar通常不会反映Soar的C / C ++版本的最新发展和变化，但它紧密遵循密歇根大学的架构实现。

应用领域

以下是在Soar中实现的不同应用领域的历史列表。尽管其中绝大多数是玩具任务或拼图，但在Soar中已经实现了一百多种系统。

拼图和游戏

纵观Soar的历史，Soar已被用于实现各种经典的AI谜题和游戏，例如河内塔、水壶、井字游戏、8-拼图问题、传教士和吃人恶魔问题，以及积木世界的变体。 Soar的最初成就之一是，是显示出许多不同的弱方法会很自然地从它所编码的任务知识中产生，这个属性被称为“通用弱方法”。

电脑配置

Soar的第一个大规模应用是R1-Soar，这是由Paul Rosenbloom部分地重新实现John McDermott为配置DEC计算机而开发的R1（ XCON ） 专家系统。R1-Soar展示了Soar能够扩展到中等规模的问题，使用分层任务分解和规划，以及通过组集将将深思熟虑的计划和问题解决转化为具反应性的执行能力。

自然语言理解

NL-Soar是由Jill Fain Lehman，Rick Lewis，Nancy Green，Deryle Lonsdale和Greg Nelson以Soar开发的自然语言理解系统。包括自然语言理解、生成和对话的能力，强调实时增量解析和生成。NL-Soar被用于TacAir-Soar的实验版本和NTD-Soar的实验版本。

模拟飞行员

Soar的第二个大规模应用涉及代理的开发，用于大规模分布式模拟的训练。密歇根大学和南加州大学信息科学学院（ISI）共同开发了两种用于执行美国战术空中任务的主要系统。密歇根州的系统被称为TacAir-Soar，并模拟飞行了固定翼的美国军事战术任务（例如近空支援、打击、CAPs、加油和SEAD任务）。ISI系统被称为RWA-Soar和旋翼(直升机)飞行任务。TacAir-Soar和RWA-Soar具备的一些能力包括注意力、态势感知和适应、实时计划和动态重新计划以及Soar代理人与人类之间的复杂沟通、协调和合作。这些系统参加了美国国防部高等研究计划署(DARPA)的综合战区（STOW-97）先进概念技术演示（ACTD），这是当时联合战场在48小时内合成代理的最大部署，包括现役人员的培训。这些系统证明了使用AI代理进行大规模培训的可行性。

STEAM

RWA-Soar项目的重要成果之一是Milind Tambe所开发的STEAM，这是一种灵活的团队合作框架，在这种框架中，代理使用科恩&莱维斯克的联合意图框架，来维护他们的队友模型。

NTD

NTD-Soar是NASA测试主任（NTD）的模拟人，该负责人负责协调NASA航天飞机发射前的准备工作。NTD-Soar是一个综合的认知模型，整合了许多不同的复杂认知功能，包括自然语言处理、注意力、视觉搜索以及在一个广泛的代理模型中解决问题。

虚拟人类

Soar已经被用来模拟虚拟人类，在南加州大学创意技术研究所开发的虚拟世界中，支援面对面的对话及协作。虚拟人类具有知觉、自然语言理解、情绪、身体控制和动作等综合能力。

游戏AI和移动应用

在《星际争霸》、《雷神之锤2》、《深入绝地3》、《魔域幻境之浴血战场》和《我的世界》等游戏中，游戏AI代理都是使用Soar来构建的，它们的支持功能包括空间推理 、实时策略和对手预测等等。AI代理也被用于电子游戏，包括使用强化学习的《无限马里奥》、《青蛙过街2》、《太空侵略者》和使用强化学习和心像的《Fast Eddie》。 
Soar可以在移动设备上运行。已针对iOS，为游戏《吹牛骰》开发了手机应用程序，该程序直接从手机上运行Soar架构，作为对手AI的引擎。

机器人技术

自1991年实现最初的Robo-Soar来控制Puma机器人手臂以来，已经使用Soar构建了许多机器人的应用程序。从移动机器人控制到人形服务的REEM机器人、可任务的机器人骡子和无人水下航行器 。

互动式任务学习

目前，Soar社群的研究和开发重点是交互式任务学习(ITL)，即通过自然教练的互动，自动学习新任务、环境特征、行为约束和其他规范。 对ITL的研究已应用于桌面游戏和多房间导航。

调度

在初期，Merle-Soar演示了Soar如何学习，模仿匹兹堡附近的挡风玻璃生产工厂中的人类调度器的复杂调度任务。