Soar (認知架構)
Soar 是一种認知架構 ，最初是由（John Laird）、艾伦·纽厄尔和卡内基·梅隆大学的保羅·羅森布魯姆（Paul Rosenbloom）创建。现在由萊爾德在密西根大学的研究小组维护和开发 。
Soar项目的目标是开发通用智慧代理所需的固定计算構件 ，可以执行廣泛的任务，并编码、使用和学习所有类型的知识，以实现人类全部的认知能力，如决策、问题解决、计划和自然语言理解。Soar既是认知理论，也是该理论的计算实现。自1983年萊爾德發表论文以来，人工智慧研究人员已經根據不同的人类行为面向，廣泛使用Soar来创建智慧代理和认知模型 。目前對Soar最全面的描述是2012年出版的《Soar認知架構》（The Soar Cognitive Architecture）。
Soar涵蓋了通用智慧在计算结构上的多个假设，而當中有许多假設与其他认知架构是相通的，包括由约翰·罗伯特·安德森创建的ACT-R以及（Stan Franklin）创建的LIDA（認知架構） 。最近，Soar著重於通用AI（功能和效率），而ACT-R著重於认知建模（對人類認知的詳細建模）。
在艾伦·纽厄尔的书“ 認知统一理论 ”中，描述了最早構成Soar基礎的认知理论「问题空间假设」， 這也追溯到最早期的人工智慧系統之一，由纽厄尔、西蒙和Shaw在1955年提出的逻辑理论家。问题空间假设认为，在嘗試實現目標時，所有目標導向的行為都可以被看作是對可能狀態空間的搜索（问题空间）。每個步驟都會選擇一個運算元（Operator），將其應用到代理的當前狀態，這可能導致內部發生變化，比如從長期記憶、世界的改變或外部行為中提取知識。（Soar的名字源于狀態、運算元和結果（State、Operator And Result）的基本循环;但是，它不再被视为縮寫字。）問題空間假設的本質是，即使是像規劃這樣複雜的活動，所有行為都可以分解為一系列選擇及應用的原始運算元，而這些選擇及應用映射到人類行為上需要大約50ms的時間。
Soar理論的第二個假設是，雖然每一步只能選擇一個運算元，從而造成一個連續的瓶頸，但是選擇和應用的過程是透過平行規則觸發來實現的，因此能夠脈絡依賴地提取程序性知識。
第三個假設是，如果選擇或應用運算元的知識不夠完整或不夠確定時，就會產生僵局，結構會自動創建一個子狀態。在子狀態中，會遞迴地使用相同的問題解決過程，但是目標必須是提取或發現知識，以便決策能夠繼續。這可能會導致子狀態的堆疊，在這些子狀態中，如规划或等傳統的問題方法自然會產生 。當在子狀態中創建的結果解決僵局時，子狀態及其相關結構被移除。總體方法被稱為通用子目標。
這些假設導致了一個支持三層處理的的架構。最低層级是自下而上、平行和自動化的處理歷程。下一層是審議層级，在這個層級，會將從第一層獲得的知識用於提議、選擇和應用單個動作。這兩個層级實現了快速、熟練的行為，并且大致对应于丹尼尔·卡内曼的「系統一处理级别」。當知識不完整或不確定時，則與系統二大致對應，會透過使用子狀態的第三層處理，自動產生更複雜的行為。
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代理进行大规模培训的可行性。
RWA-Soar项目的重要成果之一是（Milind Tambe）所开发的STEAM，这是一种灵活的团队合作框架，在这种框架中，代理使用科恩&萊維斯克的聯合意圖框架，來維護他們的隊友模型。
NTD-Soar是NASA测试主任 （NTD）的模拟人，该负责人负责协调NASA太空梭发射前的准备工作。NTD-Soar是一个綜合的认知模型，整合了许多不同的复杂认知功能，包括自然语言处理、注意力、以及在一個廣泛的代理模型中解決問題。
Soar已經被用來模擬虛擬人類，在南加州大學創意技術研究所開發的虛擬世界中，支援面對面的對話及協作。虛擬人類具有知覺、自然语言理解、情绪、身體控制和動作等綜合能力。
在《星際爭霸》、《雷神之鎚2》、《》、《魔域幻境之浴血戰場》和《我的世界》等遊戲中，遊戲AI代理都是使用Soar來構建的，它們的支持功能包括 、即時策略和對手等等。AI代理也被用於電子遊戲，包括使用強化學習的《無限馬里奧》、《》、《太空侵略者》和使用強化學習和心像的《Fast Eddie》。
Soar可以在移动设备上運行。已針對iOS，為遊戲《》開發了手機应用程序，該程序會直接從手機上執行Soar架構作為AI對手的引擎。
自1991年实現最初的Robo-Soar来控制Puma机器人手臂以来，已经使用Soar构建了许多机器人的应用程序。範圍從移動式機器人的控制到的人形服務機器人、任務型機器騾以及無人水下載具 。
目前，Soar社群的研究和開發重點是交互式任務學習（ITL），即透過自然教練的互动，自動學習新任務、環境特徵、行為約束和其他規範。 对ITL的研究已应用于桌面游戏和多房间导航。
在初期，Merle-Soar演示了Soar如何学习，模仿匹茲堡附近的擋風玻璃生產工廠中的排程人員的複雜調度任務。