本發(fā)明涉及專家系統(tǒng)中的規(guī)則推理技術,尤其關注Rete算法中Rete網(wǎng)絡的構建方法。本發(fā)明可以在專家系統(tǒng)中使用,提高推理網(wǎng)絡的構建速度和推理的效率。本發(fā)明屬于人工智能、專家系統(tǒng)領域。
背景技術:
:專家系統(tǒng)是一個智能計算機程序系統(tǒng),其內(nèi)部含有大量的某個領域專家水平的知識與經(jīng)驗,能夠利用人類專家的知識和解決問題的方法來處理該領域問題。也就是說,專家系統(tǒng)是一個具有大量的專門知識與經(jīng)驗的程序系統(tǒng),它應用人工智能技術和計算機技術,根據(jù)某領域一個或多個專家提供的知識和經(jīng)驗,進行推理和判斷,模擬人類專家的決策過程,以便解決那些需要人類專家處理的復雜問題。專家系統(tǒng)核心邏輯由推理引擎組成,目前大部分規(guī)則推理引擎都是用Rete算法作為核心推理算法。Rete算法是由CharlesForgy博士與1979年提出的,之后又在1982年的論文中進行了詳細的論述。Rete算法是一種正向鏈(ForwardChaining)推理算法,其核心思想是采用增量匹配的概念,將分離的匹配項根據(jù)內(nèi)容動態(tài)構造匹配樹,以達到顯著降低計算量的效果。目前Rete算法仍是規(guī)則推理中效率最高的算法之一。Rete算法分為兩個過程:匹配樹構造和事實匹配。其中匹配樹稱為Rete網(wǎng)絡,Rete網(wǎng)絡是一個有向無環(huán)圖,主要用于過濾事實數(shù)據(jù)。事實匹配則是使事實沿著Rete網(wǎng)絡運動,直至到達規(guī)則結論的過程。Rete網(wǎng)絡包括3部分:根節(jié)點、Alpha網(wǎng)絡和Beta網(wǎng)絡。(1)、根節(jié)點(RootNode):是所有事實對象進入網(wǎng)絡的入口,是一個虛擬節(jié)點,不具有實際意義。(2)、Alpha網(wǎng)絡:用于過濾事實,通過模式匹配找出事實集中所有符合的模式集合,可將事實集(workingmemory)轉化為符合條件的模式集(alphamemory)。(3)、Beta網(wǎng)絡:用于匹配規(guī)則,通過連接操作將的模式集(alphamemory)組合形成匹配集(betamemory),最終將匹配集轉化為規(guī)則結論(action)并執(zhí)行。在一個Rete網(wǎng)絡中,規(guī)則通過網(wǎng)絡節(jié)點的形式呈現(xiàn)。規(guī)則的條件構成Alpha網(wǎng)絡,每一個條件都對應一個Alpha節(jié)點;規(guī)則模式構成Beta網(wǎng)絡,Beta節(jié)點由Alpha節(jié)點相互連接形成,每一個Beta節(jié)點代表模式的一部分,Beta(n)節(jié)點代表規(guī)則的全部模式,規(guī)則的結論對應終端節(jié)點,是Beta網(wǎng)絡的葉子節(jié)點也是Beta(n)節(jié)點的子節(jié)點。因此構建Rete網(wǎng)絡需要完成Alpha網(wǎng)絡和Beta網(wǎng)絡的構建。Rete網(wǎng)絡的構建步驟如下:Rete算法是一種前向規(guī)則快速匹配算法,通過構建Rete網(wǎng)絡進行模式匹配,利用基于規(guī)則的系統(tǒng)的兩個特征,即時間冗余性(Temporalredundancy)和結構相似性(structuralsimilarity),提高系統(tǒng)模式匹配效率,其匹配速度與規(guī)則數(shù)目無關。但是Rete算法存在以下問題:Rete算法在創(chuàng)建推理網(wǎng)絡的時候,沒有考慮各個節(jié)點之間的共享度,導致網(wǎng)絡的生成和存儲都占用了較大的空間。針對Rete算法的不足之處,本發(fā)明提出了一種高共享性Rete網(wǎng)絡構建方法。技術實現(xiàn)要素:本發(fā)明是通過下述技術方案實現(xiàn)的。本發(fā)明提出了共享度模型來作為網(wǎng)絡構建的依據(jù),在構建Rete網(wǎng)絡的時候,通過計算Alpha節(jié)點和Beta節(jié)點的節(jié)點共享度和模式共享度以及其所屬類別的平均節(jié)點共享度,將其排序,然后再生成Rete網(wǎng)絡,達到優(yōu)化RETE網(wǎng)絡的目的。1.問題分析節(jié)點共享是Rete網(wǎng)絡的一大特性,在事實匹配過程中可以避免重復匹配,提高匹配效率。但是在建立Rete網(wǎng)絡時,模式的條件順序會極大的影響網(wǎng)絡的節(jié)點共享性能。Rete網(wǎng)絡包含Alpha網(wǎng)絡和Beta網(wǎng)絡,下面分析模式的條件順序對這兩個網(wǎng)絡節(jié)點共享性能的影響。首先分析對Alpha網(wǎng)絡的影響。假設存在兩個規(guī)則,其模式分別為(C1,C2,…,Cn,Ca1,Ca2,…,Cap)和(C1,C2,…,Cn,Cb1,Cb2,…,Cbq),這里C表示同一類型條件。顯然這兩個模式有n個相同條件。那么其對應的Alpha網(wǎng)絡模型應該如圖1所示。這里將第二個模式的第一個條件移到第n個條件后,即將模式變?yōu)?C2,…,Cn,C1,Cb1,Cb2,…,Cbq),那么當建立Rete網(wǎng)絡時,由于兩個模式相同條件的條件順序不同,雖然有n個相同節(jié)點但是卻沒有一個共享節(jié)點,節(jié)點共享失敗,其對應的Rete網(wǎng)絡如圖2所示??梢钥闯觯瑢τ谕活愋偷臈l件,其排列順序對Alpha網(wǎng)絡的節(jié)點共享有很大影響。其次分析對Beta網(wǎng)絡的影響。假設存在兩條規(guī)則,其模式分別為(C,D,E)和(C,D,E,F(xiàn)),C、D、E、F代表不同類型的條件,其對應的Beta網(wǎng)絡如圖3所示。如果將第二條規(guī)則的條件順序改變,變?yōu)?D,E,F(xiàn),C),那么構建Rete網(wǎng)絡時,將不存在節(jié)點共享,如圖4所示。通過上面的分析,可以看出條件順序對Alpha網(wǎng)絡和Beta網(wǎng)絡的節(jié)點共享性能有較大影響,先加入的條件被優(yōu)先共享。2.共享度模型為了使排序更加合理,本發(fā)明提出了使用節(jié)點共享度模型調(diào)整節(jié)點順序,進而建立高共享性Rete網(wǎng)絡。定義1Rete網(wǎng)絡節(jié)點共享度:節(jié)點共享度代表一個節(jié)點需要被共享的程度。這里使用引用該節(jié)點條件的規(guī)則數(shù)對其進行量化。例如,如果一個條件被三條規(guī)則共享,則該條件對應節(jié)點的共享度為3。在理想情況下,整個Rete網(wǎng)絡中不存在相同節(jié)點,則節(jié)點的共享度為該條件出現(xiàn)的次數(shù)。因此,對于一個條件c,其節(jié)點共享度為該條件在規(guī)則集中出現(xiàn)的次數(shù),用dc表示。顯然dc越大,條件的共享程度應當越高。由于條件的共享程度和順序相關,條件順序越靠前其共享程度越高,因此需要將條件按其節(jié)點共享度排列。例如由模式(c1,c2)和(c3,c1)組成的模式集,將其按節(jié)點度排序后變?yōu)?c1,c2),(c1,c3),在構造Rete網(wǎng)絡時,c1被先加入網(wǎng)絡并得到共享。這種簡單排序可以解決一部分共享問題,但是對于節(jié)點共享度相同的條件,由于其排序是隨機的,對網(wǎng)絡的共享性能會造成影響,例如由模式(c1,c2,c4),(c1,c3),(c1,c2,c3,c4)組成的模式集,按照節(jié)點度對其降序排列,c1排在第一位,剩余的c2、c3、c4由于節(jié)點共享度相同,其排序是隨機的,假設其排序為c2、c3、c4,那么對應的Alpha網(wǎng)絡如圖5所示,只有c2被共享,c3和c4沒有共享。如果將排序變?yōu)閏2、c4、c3,則Alpha網(wǎng)絡變?yōu)閳D6所示。此時,c2、c4被共享,c3沒有共享。實際中,節(jié)點共享度相同是比較普遍的現(xiàn)象,當同一節(jié)點共享度的條件數(shù)量很多時,其排序對Rete網(wǎng)絡的節(jié)點共享性能影響很大。因此需要對有相同節(jié)點共享度的條件進一步排序。這里再引入模式節(jié)點共享度的概念。定義2RETE網(wǎng)絡模式共享度:模式是由若干條件組成的,將模式共享度定義為模式中所有條件節(jié)點共享度的和。設模式M包含n個條件(c1,c2,…,cn),則dM=Σi=1nci---(1)]]>模式共享度反映了整個模式在網(wǎng)絡中的共享程度,dM越大,則模式的共享程度越高。由于模式包含條件,模式的共享程度高則表示其包含的條件共享程度高,因此可以使用模式共享度對具有相同節(jié)點共享度的條件做進一步排序。條件會出現(xiàn)在多個模式中,設條件c出現(xiàn)在p個模式(M1,M2,…,Mp)中,模式共享度為(dM1,dM2,…,dMp)。則c的模式共享度為:dcM=Σi=1pdMp---(2)]]>模式共享度反映了其他條件對該條件的依賴情況,dcM越大,依賴程度越高,而依賴程度越高,其共享程度就越高,順序應當靠前。因此可以依據(jù)模式共享度對節(jié)點共享度相同的條件降序排列來區(qū)分相同節(jié)點共享度的條件。在一個Rete網(wǎng)絡中,規(guī)則通過網(wǎng)絡節(jié)點的形式呈現(xiàn)。規(guī)則的條件構成Alpha網(wǎng)絡,每一個條件都對應一個Alpha節(jié)點;規(guī)則模式構成Beta網(wǎng)絡,Beta節(jié)點由Alpha節(jié)點相互連接形成,每一個Beta節(jié)點代表模式的一部分,Beta(n)節(jié)點代表規(guī)則的全部模式,規(guī)則的結論對應終端節(jié)點,是Beta網(wǎng)絡的葉子節(jié)點也是Beta(n)節(jié)點的子節(jié)點。Rete網(wǎng)絡需要完成Alpha網(wǎng)絡和Beta網(wǎng)絡的構建。下面分別介紹基于共享度模型的Alpha網(wǎng)絡和Beta網(wǎng)絡構建方法。3.Alpha網(wǎng)絡構建方法在一個Rete網(wǎng)絡中,規(guī)則通過網(wǎng)絡節(jié)點的形式呈現(xiàn)。Alpha網(wǎng)絡實際上是規(guī)則條件的網(wǎng)絡,其共享性能依賴條件順序,首先使用節(jié)點共享度模型對條件進行排序,具體方法如下:通過上述方法可以獲得按節(jié)點共享度降序排列的條件集合,使用這個集合可以直接構造Alpha網(wǎng)絡,不需要再次讀取規(guī)則集。改進后的Alpha網(wǎng)絡構建方法如下所示,網(wǎng)絡構建流程圖見例圖7。4.Beta網(wǎng)絡構建方法對于Alpha網(wǎng)絡,由于條件已經(jīng)排序完畢,因此直接按照條件的順序使用Rete算法建立網(wǎng)絡即可。對于Beta網(wǎng)絡,情況略有不同,因為Beta網(wǎng)絡使用連接和投影的方式進行模式匹配,連接的對象是Alpha節(jié)點而不是條件,因此在考慮條件節(jié)點共享度的同時也要考慮Alpha節(jié)點的共享度。Rete算法在構造Alpha網(wǎng)絡時會對Alpha節(jié)點進行分類,節(jié)點共享度模型可以保證在同一類型中Alpha節(jié)點的排序,但是卻無法保證各個類型的排序,例如規(guī)則集(f),(c,d),(c,e)其中c、d、e、f代表不同類型的條件,顯然條件c出現(xiàn)的次數(shù)多,其排序應當靠前,但是由于先讀入第一條規(guī)則,因此會先產(chǎn)生f類型的Alpha節(jié)點。在構造Beta網(wǎng)絡和事實匹配的過程中,按照順序都會先和f類型的Alpha節(jié)點進行連接操作,不僅影響節(jié)點共享性,還會大大增加了匹配的計算規(guī)模。因此需要對構建好的Alpha分類進行排序,Alpha分類包含多個Alpha節(jié)點,每一個Alpha節(jié)點對應一個條件,根據(jù)節(jié)點共享度模型,可以計算出整個Alpha分類的共享度,以這個共享度為依據(jù)對分類進行排序避免規(guī)則順序對Beta網(wǎng)絡的影響。定義3Alpha分類的共享度:設Alpha分類中有n個Alpha節(jié)點,對應的節(jié)點共享度為(d1,d2,…,dn),那么Alpha分類的共享度為:共享度高的分類,順序應當靠前。對于共享度相同的分類,隨機排列順序可能會降低Beta網(wǎng)絡的節(jié)點共享性。設網(wǎng)絡中有兩個Alpha分類的共享度均為n:其中一個分類包含1個Alpha節(jié)點,另一個分類包含有n個Alpha節(jié)點。如果包含n個節(jié)點的分類被排在前面,那么每次都需要先與n個節(jié)點進行n次連接。如果前者在Alpha網(wǎng)絡中排在較前位置,每次只需要進行1次連接即可。為了反映分類中節(jié)點個數(shù)對共享性能的影響,這里為Alpha分類引入平均共享度的概念,對于一個含有m個Alpha節(jié)點,共享度為n的Alpha分類,其平均共享度為:共享度相同的Alpha分類,其平均共享度高的順序應該靠前。因此,給出Alpha分類排序步驟,如下所示。根據(jù)以上優(yōu)化,可以獲得按Alpha分類降序排列的Alpha網(wǎng)絡,使用這個網(wǎng)絡可以保證共享度高的Alpha分類被優(yōu)先連接,從而提高Beta網(wǎng)絡的節(jié)點共享性能。依據(jù)Alpha網(wǎng)絡和規(guī)則集,可以構造Beta網(wǎng)絡,構建Beta網(wǎng)絡的方法如下所示,Beta網(wǎng)絡構建流程圖見例圖8。5.實驗結果分析選擇UCI成人受教育程度和工資水平的數(shù)據(jù)集作為測試用例,該數(shù)據(jù)集共有32561個成人數(shù)據(jù),總計423293個條件(統(tǒng)計相同條件),條件共分14個類型,詳細情況如表1所示:表1數(shù)據(jù)集條件分類表使用該數(shù)據(jù)集,利用關聯(lián)規(guī)則挖掘在支持度為5%,置信度為50%的情況下得到17071條規(guī)則,篩選掉無效規(guī)則共獲得1808條規(guī)則,規(guī)則舉例如下:(1)、{13,Bachelors,Husband,Male}=>{>50K},0.68;意為受教育時間13年,學士學位的已婚男性工資大于50K的概率為0.68。(2)、{Bachelors,United-States}=>{<=50K},0.58;意為美國的學士工資小于等于50K的概率為0.58。(3)、{10,Not-in-family,Some-college}=>{<=50K},0.938;意為受教育時間10年,沒有親人的高中畢業(yè)生工資小于等于50K的概率為0.93。使用Java語言實現(xiàn)Rete網(wǎng)絡構建算法,使用1808條規(guī)則構造Rete網(wǎng)絡,并與傳統(tǒng)Rete算法在構建時間和節(jié)點共享性能兩方面進行對比,共進行4次實驗,其結果如表2:表2對比實驗結果表由于UCI數(shù)據(jù)集的條件是按照條件分類進行排序的,本身具有一定的次序,因此采用傳統(tǒng)構造方法得到的Rete網(wǎng)絡有較好的節(jié)點共享性能,總共享度小于1。但是依舊可以看出明顯的提升效果,改進后的構建算法在節(jié)點共享性能上提升了0.31。在實際應用中,大部分規(guī)則集的條件是隨機排序的,因此改進后的高共享性Rete網(wǎng)絡構建算法在實際應用中會取得更好的優(yōu)化效果。使用同樣的數(shù)據(jù)集進行事實匹配算法的對比實驗。對比兩種網(wǎng)絡結構下,采用相同規(guī)則推理方式的效率。為避免外在因素的影響,每一組實驗進行3次,以推理時間作為結果進行對比,實驗結果如表3,將表3中各組實驗的平均結果匯成折線圖如圖9所示。表3對比實驗結果表可以看出,高共享性網(wǎng)絡對推理效率的提升幅度是比較穩(wěn)定的,不會隨著事實集的增加而發(fā)生明顯變化。對于本專利采用的數(shù)據(jù)集而言,效率提升約為20%。隨著事實集的增加,推理效率會有進一步的明顯提升。6.有益效果對于上述技術方案的技術效果分析如下:在分析了條件順序對Rete網(wǎng)絡節(jié)點共享性的影響的基礎上,為使條件排序更加合理,引入了節(jié)點共享度模型的概念,并根據(jù)該模型改進了Rete網(wǎng)絡構建算法。高共享性網(wǎng)絡通過節(jié)點共享度調(diào)整規(guī)則條件和Alpha節(jié)點的順序,提高了整個Rete網(wǎng)絡的節(jié)點共享性能,減少了冗余節(jié)點。依據(jù)本專利提出的方法,構建出來的Rete網(wǎng)絡具有高共享性,在事實推理時可以有效減少節(jié)點匹配次數(shù),進而縮短推理時間,提高推理效率。附圖說明圖1為Alpha網(wǎng)絡節(jié)點共享模型圖。圖2為Alpha網(wǎng)絡節(jié)點共享失敗模型圖。圖3和圖4為Beta網(wǎng)絡節(jié)點共享模型圖。圖5和圖6節(jié)點共享度相同示例圖。圖7為Alpha網(wǎng)絡構造算法流程圖。圖8為Beta網(wǎng)絡構建算法流程圖。圖9為對比實驗結果折線圖。圖10為具體實施方式中生成的Alpha網(wǎng)絡圖。圖11為具體實施方式中排序完成的Alpha網(wǎng)絡。圖12為具體實施方式中最終生成的Beta網(wǎng)絡圖。具體實施方式為了更好地說明本發(fā)明的目的和優(yōu)點,以下結合實施例和附圖對本發(fā)明做進一步說明。我們假設某醫(yī)療規(guī)則集R包含三條規(guī)則:規(guī)則1:中度感冒(頭痛,流鼻涕,咳嗽)規(guī)則2:輕度感冒(流鼻涕,咳嗽)規(guī)則3:重度感冒(鼻塞,咳痰)規(guī)則說明:如規(guī)則2,一個患者同時有流鼻涕和咳嗽癥狀,則專家系統(tǒng)診斷其為輕度感冒。其中頭痛是屬于條件類別A(頭部癥狀),流鼻涕和鼻塞是屬于條件類別B(鼻部癥狀),咳嗽和咳痰是屬于條件類別C(咽部癥狀)。根據(jù)說明書提出的條件排序算法,我們依據(jù)說明書提出的共享度模型,計算各個節(jié)點共享度和模式共享度,對上述條件進行排序。各條件的節(jié)點共享度和模式共享度如下表4所示:表4節(jié)點共享度和模式共享度計算結果條件頭痛流鼻涕鼻塞咳嗽吐痰節(jié)點共享度12121模式共享度59292根據(jù)節(jié)點共享度(主排序依據(jù))和模式共享度(次排序依據(jù))對以上條件進行排序,得到有序的條件序列(流鼻涕,咳嗽,頭痛,鼻塞,咳痰)。依據(jù)Alpha網(wǎng)絡構造方法構造Alpha網(wǎng)絡如圖10所示。進一步,依據(jù)Alpha分類排序算法,計算各分類的平均節(jié)點共享度,其結果如表5所示。根據(jù)每個類別的平均共享度改進該Alpha網(wǎng)絡,如圖11所示。表5平均節(jié)點共享度計算結果類別頭部癥狀鼻部癥狀咽部癥狀平均節(jié)點共享度11.51.5依據(jù)Beta網(wǎng)絡構建方法構建出Beta網(wǎng)絡,如圖12所示??梢钥闯?,較傳統(tǒng)的Rete網(wǎng)絡得出的結構圖,其冗余節(jié)點的數(shù)目已經(jīng)減少了很多。當前第1頁1 2 3