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如何學習，模仿匹茲堡附近的擋風玻璃生產工廠中的人類調度器的複雜調度任務。