什么是推理引擎
編輯在人工智能領域,推理引擎是將邏輯規則應用于知識庫以推斷出新信息的系統組件。xxx個推理引擎是專家系統的組件。典型的專家系統由知識庫和推理引擎組成。知識庫存儲有關世界的事實。推理引擎將邏輯規則應用于知識庫并推導出新知識。由于知識庫中的每個新事實都可能觸發推理引擎中的其他規則,因此該過程將重復進行。推理引擎主要以特殊規則或事實兩種模式之一工作,前向鏈接和后向鏈接。前向鏈接從已知事實開始,然后斷言新事實。向后鏈接從目標開始,并向后工作以確定必須斷言哪些事實才能實現目標。
邏輯及示例
編輯推理引擎使用的邏輯通常表示為IF-THEN規則。這種規則的一般格式是IF <邏輯表達式> THEN <邏輯表達式>。在開發專家系統和推理引擎之前,人工智能研究人員專注于更強大的定理證明者環境,該環境提供了更全面的一階邏輯實現。例如,包含通用量化(對于所有X某些語句為真)和存在量化的常規語句(存在一些X,使得某些語句為true)。研究人員發現,這些定理證明環境的強大功能也是它們的缺點。創建邏輯表達式可能要花費不確定的甚至無限的時間來終止,這太容易了。例如,在通用量化中,對無窮集(例如所有自然數的集合)進行聲明是很常見的。這樣的陳述是完全合理的,甚至在數學證明中也是必需的,但是當包含在計算機上執行的自動定理證明器中時,可能會導致計算機陷入無限循環。專注于IF-THEN語句(邏輯學家稱之為Modus Ponens)仍然為開發人員提供了一種非常強大的通用機制來表示邏輯,但是可以與計算資源一起有效地使用。
有關如何在推理引擎中使用此規則的簡單示例如下。在前向鏈接中,推理引擎將在知識庫中找到與Human(x)匹配的任何事實,并且對于發現的每個事實,推理引擎會將新信息Mortal(x)添加到知識庫中。因此,如果它找到一個名為“蘇格拉底”的人類物體,則可以推斷出“蘇格拉底”是“凡人”。在向后鏈接中,系統將有一個目標,例如回答問題是Socrates Mortal?它將搜索知識庫,并確定蘇格拉底是否是人類,如果可以,則斷言他也是凡人。但是,在向后鏈接中,一種常見的技術是將推理引擎與用戶界面集成在一起。通過這種方式,系統不再是簡單地自動化,而是可以是交互式的。在這個簡單的例子中,如果系統的目標是回答蘇格拉底是否為真人,并且尚不知道他是否是人類,那么它將生成一個向用戶詢問“蘇格拉底是人類嗎?”的窗口。然后將相應地使用該信息。
這種將推理引擎與用戶界面集成在一起的創新導致了專家系統的第二次早期發展:解釋功能。知識作為規則而不是代碼的顯式表示形式使得有可能向用戶生成解釋。兩種解釋都是實時的和事后的。因此,如果系統詢問用戶“蘇格拉底是人類嗎?”?用戶可能想知道為什么有人問她這個問題,而系統將使用規則鏈來解釋為什么它當前正在嘗試確定這一點知識:即,它需要確定Socrates是否是Mortal,而這樣做需要確定他是否是人類。最初,這些解釋與開發人員在調試任何系統時處理的標準調試信息沒有太大不同。
推理引擎通過三個連續步驟循環:匹配規則,選擇規則和執行規則。規則的執行通常會導致將新的事實或目標添加到知識庫中,從而觸發重復的循環。這個循環一直持續到沒有新的規則可以匹配為止。
xxx步,匹配規則,推理引擎將找到由知識庫的當前內容觸發的所有規則。在前向鏈接中,引擎會尋找規則,其中前提(左側)與知識庫中的某些事實匹配。在向后鏈接中,引擎會尋找可以滿足當前目標之一的前提條件。
在第二步選擇規則中,推理引擎對匹配的各種規則進行優先排序,以確定執行它們的順序。在最后一步,執行規則,引擎以步驟2中確定的順序執行每個匹配的規則,然后再次迭代回到步驟1。循環一直持續到沒有新規則匹配為止。
實現
編輯早期的推理引擎主要專注于前向鏈接。這些系統通常以Lisp編程語言實現。Lisp由于其強大的符號操縱能力而成為早期AI研究的常用平臺。此外,作為一種解釋型語言,它提供了適合調試復雜程序的高效開發環境。這些好處的必然結果是,與當時的編譯語言(例如C)相比,Lisp程序往往更慢且更不可靠。早期的一種常見方法是采用專家系統應用程序,并將用于該系統的推理引擎重新打包,以作為其他研究人員可用于開發其他專家系統的可重用工具。例如,MYCIN是用于醫學診斷的早期專家系統,而EMYCIN是從MYCIN推斷出來的推理引擎,可供其他研究人員使用。
隨著專家系統從研究原型轉移到已部署的系統,人們越來越關注速度和健壯性等問題。OPS5是最早的也是最受歡迎的正向鏈接引擎之一,它使用Rete算法來優化規則觸發的效率。另一種非常流行的技術是Prolog邏輯編程語言。Prolog主要專注于向后鏈接,并且還具有各種商業版本以及針對效率和健壯性的優化。
隨著專家系統引起了商業界對各種公司的極大興趣,其中許多公司是由著名的AI研究人員創辦或指導的,他們創建了推理引擎的產品版本。例如,Intellicorp最初是由Edward Feigenbaum指導的。這些推理引擎產品最初也經常是在Lisp中開發的。然而,對更實惠和商業上可行的平臺的需求最終使個人計算機平臺非常受歡迎。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/111515/