產生式表示法簡介
產生式規則的基本形式
P→Q或IF P THEN Q產生式規則的例子
r6: IF 動物有犬齒 AND 有爪 AND 眼盯前方THEN 該動物是食肉動物
其中,r6是該產生式的編號;“動物有犬齒 AND 有爪 AND 眼盯前方”是產生式的前提P;“該動物是食肉動物”是產生式的結論Q。
與其他計算模型的區別
與蘊涵式的主要區別:
(1) 蘊涵式表示的知識只能是精確的,產生式表示的知識可以是不確定的原因是蘊涵式是一個邏輯表達式,其邏輯值只有真和假。
(2) 蘊含式的匹配一定要求是精確的,而產生式的匹配可以是不確定的
原因是產生式的前提條件和結論都可以是不確定的,因此其匹配也可以是不確定的。
與條件語句的主要區別:
(1) 前件結構不同產生式的前件可以是一個複雜的的結構
傳統程式設計語言中的左部僅僅是一個布爾表達式
(2) 控制流程不同
產生式系統中滿足前提條件的規則被激活後,不一定被立即執行,能否執行將取決於衝突消解策略
傳統程式設計語言中是嚴格地從一個條件語句向其下一個條件語句傳遞。
產生式表示法
產生式是一種知識表達方法,具有和Turing機一樣的表達能力。事實與規則的表示
事實可看成是斷言一個語言變數的值或是多個語言變數間的關係的陳述句,語言變數的值或語言變數間的關係可以是一個詞。不一定是數字。如雪是白色的,其中雪是語言變數,其值是白色的。John喜歡Mary,其中John、Mary是兩個語言變數,兩者的關係值是喜歡。一般使用三元組(對象,屬性,值)或(關係,對象1,對象2)來表示事實,其中對象就是語言變數,若考慮不確定性就成了四元組表示(增加可信度)。這種表示的機器內部實現就是一個表。
如事實“老李年齡是35歲”,便寫成(Lee,age,35)
事實“老李、老張是朋友”,可寫成(friend,Lee,Zhang)
對於規則是表示事物間的因果關係,以下列形式表示:
condition->action
condition作為前件或模式,而action稱作動作或後件或結論。前件部分常是一些事實Ai的合取,而結論常是某一事實B,如考慮不確定性,需另附可信度度量值。
產生式系統的組成和推理
多數較為簡單的專家系統(Expert System)都是以產生式表示知識的,相應的系統稱作產生式系統。產生式系統,由知識庫和推理機兩部分組成。其中知識庫由規則庫和資料庫組成。規則庫是產生式規則的集合,資料庫是事實的集合。
規則是以產生式表示的。規則集蘊涵著將問題從初始狀態轉換解狀態的那些變換規則,規則庫是專家系統的核心。規則可表成與或樹形式,基於資料庫中的事實對這與或樹的求值過程就是推理。
資料庫中存放著初始事實、外部資料庫輸入的事實、中間結果事實和最後結果事實。
推理機是一個程式,控制協調規則庫與資料庫的運行,包含推理方式和控制策略。
產生式系統的推理方式有正向推理、反向推理和雙向推理
正向推理:從已知事實出發,通過規則庫求得結論,或稱數據驅動方式。推理過程是:
規則集中的規則前件與資料庫中的事實進行匹配,得匹配的規則集合。
從匹配規則集合中選擇一條規則作為使用規則。
執行使用規則的後件。將該使用規則的後件送入資料庫中
重複這個過程直至達到目標
具體說如資料庫中含有事實A,而規則庫中有規則A->B,那么這條規則便是匹配規則,進而將後件B送入資料庫中。這樣可不斷擴大資料庫直至包含目標便成功結束。如有多條匹配規則需從中選一條作為使用規則,不同的選擇方法直接影響著求解效率,選規則的問題稱作控制策略。正向推理會得出一些與目標無直接關係的事實,是有浪費的。
反向推理:從目標(作為假設)出發,反向使用規則,求得已知事實,或稱目標驅動方式,推理過程是:
規則集中的規則後件與目標事實進行匹配,得匹配的規則集合;
從匹配的規則集合中選擇一條規則作為使用規則;
將使用規則的前件作為子目標;
重複這個過程直至各子目標均為已知事實成功結束;
如果目標明確,使用反向推理方式效率較高。
雙向推理:同時使用正向推理又使用反向推理。