在人工智慧領域中,推理引擎是智慧系統中的一個軟體組件,它通過將邏輯規則應用於知識庫來推導出新的資訊。推理引擎的誕生可以追溯到專家系統的早期時期,這些系統通常包含一個知識庫和一個推理引擎。知識庫儲存有關世界的事實,而推理引擎則將這些事實應用於邏輯規則,推導出新的知識。這個過程是不斷迴圈的,每當知識庫中新增的事實會觸發推理引擎中的額外規則時,便會重新進行推理。
推理引擎主要運行在兩種模式中,分別是前向鏈接和後向鏈接。
前向鏈接意思是從已知的事實開始,推導出新的事實。而後向鏈接則是從目標開始,向後推斷需要哪些事實才能達成這些目標。此推理的擴展也包含了受訓神經網絡生成預測或決策的過程。在這種情境下,"推理引擎"可能是指執行這些操作的系統特定部分,甚至是硬體。這種推理在各種應用中扮演重要角色,包括圖像識別、自然語言處理以及自動駕駛車輛。這些應用中的推理階段通常特徵為高量的數據輸入和實時處理需求。
推理引擎所使用的邏輯通常以“如果-那麼”(IF-THEN)規則的形式表示。這種規則的通用格式是 IF
研究者們發現,這些定理證明環境的強大也是其缺點。過去的1965年,創建一個無法確定或甚至無限時間終止的邏輯表達式實在太容易了。
例如,在全稱量化中,通常會對無窮集合(例如所有自然數的集合)進行表述。這些聲明在數學證明中是完全合理的,甚至是必需的,但當被納入在計算機上運行的自動定理證明器中時,可能導致計算機陷入無限循環。雖然IF-THEN語句(邏輯學家稱其為 modus ponens)仍提供了非常強大的通用機制以表達邏輯,但它可以有效地使用計算資源。此外,一些心理學研究表明,人類在存儲複雜知識時也傾向於使用IF-THEN表述。
早期的推理引擎主要集中於前向鏈接。這些系統通常使用Lisp編程語言實現,因為Lisp擁有強大的符號處理能力,並且作為解釋型語言,提供了適合於調試複雜程序的生產開發環境。由於這些優勢,Lisp程序通常比當時的編譯語言(如C)更慢且不夠穩健。
MYCIN是早期的一個專家系統,用於醫療診斷,而EMYCIN則是從MYCIN提取的推理引擎,並提供給其他研究者使用。
隨著專家系統從研究原型轉向部署系統,速度和穩健性問題變得越來越受重視。OPS5是第一個也是最受歡迎的前向鏈接引擎之一,使用Rete算法來優化規則觸發的效能。另外一種非常受歡迎的技術是以Prolog邏輯編程語言為主的實現,這主要集中於後向鏈接。
目前有一些開源實現,如ClipsRules和RefPerSys,這些系統受到CAIA和Jacques Pitrat工作的啟發。Frama-C靜態源代碼分析器也使用了一些推理引擎技術。
隨著技術的發展,推理引擎在前沿的人工智慧應用中仍擁有重要地位,並能夠從日益複雜的知識中推導出新資訊。這不由得讓人思考,在未來的世界中,推理引擎將如何改變我們的生活和工作方式?