机器学习笔记(十五)规则学习
?
15.規(guī)則學(xué)習(xí)
15.1基本概念
機(jī)器學(xué)習(xí)中的規(guī)則(rule)通常是指語義明確、能描述數(shù)據(jù)分布所隱含的客觀規(guī)律或領(lǐng)域概念、可寫成若…則…形式的邏輯規(guī)則。規(guī)則學(xué)習(xí)(rulelearning)是從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)出一組能用于對未見示例進(jìn)行判別的規(guī)則。
顯然,規(guī)則集合中的每天規(guī)則都可看作一個子模型,規(guī)則集合是這些子模型的一個集成。當(dāng)同一個示例被判別結(jié)果不同的多條規(guī)則覆蓋時,稱發(fā)生了沖突(conflict),解決沖突的辦法稱為沖突消解(conflict resolution)。常用的沖突消解策略有投票法、排序法、元規(guī)則法等。投票法是將判別相同的規(guī)則數(shù)最多的結(jié)果作為最終結(jié)果。排序法是在規(guī)則結(jié)合上定義一個順序,在發(fā)生沖突時使用排序最前的規(guī)則;相應(yīng)的規(guī)則學(xué)習(xí)過程稱為帶序規(guī)則(ordered rule)學(xué)習(xí)或優(yōu)先級規(guī)則(priority rule)學(xué)習(xí)。元規(guī)則法是根據(jù)領(lǐng)域知識事先設(shè)定一些元規(guī)則(meta-rule),即關(guān)于規(guī)則的規(guī)則,例如發(fā)生沖突時使用長度最小的規(guī)則,然后根據(jù)元規(guī)則的指導(dǎo)來使用規(guī)則集。
此外,從訓(xùn)練集學(xué)得的規(guī)則集合也許不能覆蓋所有可能的未見示例;對此,規(guī)則學(xué)習(xí)算法通常惠設(shè)置一條默認(rèn)規(guī)則(default rule),由它來處理規(guī)則集合未覆蓋的樣本。
從形式語言表達(dá)能力而言,規(guī)則可分類兩類:
1)命題規(guī)則(propositionalrule)
由原子命題(propositionalatom)和邏輯連接詞(與、或、非、蘊(yùn)含)構(gòu)成的簡單陳述句。
2)一階規(guī)則(first-orderrule)
基本成分是能描述事物的屬性或關(guān)系的原子公式(atomic formula)。如表達(dá)父子關(guān)系的謂詞(predicate)父親(X,Y)就是原子公式;再比如加一操作add(x)=x+1。
一階規(guī)則能表達(dá)復(fù)雜的關(guān)系,因此也被稱為關(guān)系型規(guī)則(relational rule)。
以西瓜集為例,簡單地把屬性當(dāng)作謂詞來定義示例與屬性值之間的關(guān)系,則命題規(guī)則集R可改寫為一階規(guī)則集R*:
顯然,從形式語言系統(tǒng)的角度來看,命題規(guī)則是一階規(guī)則的特例。因此一階規(guī)則的學(xué)習(xí)比命題規(guī)則要復(fù)雜得多。
?
15.2序貫覆蓋
規(guī)則學(xué)習(xí)的目標(biāo)是產(chǎn)生一個能覆蓋盡可能多的樣例的規(guī)則集。最直接的做法是序貫覆蓋(sequential covering),即逐條歸納:在訓(xùn)練集上每學(xué)到一條規(guī)則,就將該規(guī)則覆蓋的訓(xùn)練樣例去除,然后以剩下的訓(xùn)練樣例組成訓(xùn)練集重復(fù)上述過程。由于每次只處理一部分?jǐn)?shù)據(jù),因此也稱為分治(separate-and-conquer)策略。
以命題規(guī)則學(xué)習(xí)為例來考察序貫覆蓋法。命題規(guī)則的規(guī)則體是對樣例屬性值進(jìn)行評估的布爾函數(shù),如色澤=青綠、漢唐率≤0.2等,規(guī)則頭是樣例類別。序貫覆蓋法的關(guān)鍵是如何從訓(xùn)練集學(xué)出單條規(guī)則。
這種基于窮盡搜索的做法在屬性和候選值較多時會由于組合爆炸而不可行。現(xiàn)實(shí)任務(wù)中一般有兩種策略來產(chǎn)生規(guī)則:
1)自頂向下(top-down),即從比較一般的規(guī)則開始,逐漸增加新文字以縮小規(guī)則覆蓋范圍,直到滿足預(yù)定條件為止,也稱為生成-測試(generate-then-test)法,是規(guī)則逐漸特化(specialization)的過程,是從一般到特殊的過程;
2)自底向上(bottom-up),即從比較特殊的規(guī)則開始,逐漸刪除文字以擴(kuò)大覆蓋范圍,直到滿足條件為止;也稱為數(shù)據(jù)驅(qū)動(data-driven)法,是規(guī)則逐漸泛化(generalization)的過程,是從特殊到一般的過程。
自頂向下是覆蓋范圍從大到小搜索規(guī)則,自底向上則正好相反;前者更容易產(chǎn)生泛化性能較好的規(guī)則,而后者更適合于訓(xùn)練樣本較少的情形;另外,前者對噪聲的魯棒性比后者要強(qiáng);因此,在命題規(guī)則學(xué)習(xí)中通常使用前者,而后者則在一階規(guī)則學(xué)習(xí)這類假設(shè)空間非常復(fù)雜的任務(wù)使用較多。
以命題規(guī)則學(xué)習(xí)為例,對于自頂向下的規(guī)則生成方法,文中給出了西瓜集例子。例子中規(guī)則生成過程設(shè)計一個評估規(guī)則優(yōu)劣的標(biāo)準(zhǔn),例子中給出的標(biāo)準(zhǔn)是:先考慮規(guī)則準(zhǔn)確率,準(zhǔn)確率同時考慮覆蓋樣例數(shù),再相同時考慮屬性次序。現(xiàn)實(shí)應(yīng)用中可根據(jù)具體任務(wù)情況設(shè)計適當(dāng)?shù)臉?biāo)準(zhǔn)。例子中每次僅考慮一個最優(yōu)文字,過于貪心,容易陷入局部最優(yōu),為緩解這個問題,采用集束搜索(beam search),即每輪保留最優(yōu)的b個邏輯文字,在下一輪均用于構(gòu)建候選集,再把候選集中最優(yōu)的b個留待下一輪使用。
序貫覆蓋法簡單有效,幾乎所有規(guī)則學(xué)習(xí)算法都以其為基本框架,也能方便地推廣到多分類問題上,只需將每類分別處理即可:當(dāng)學(xué)習(xí)關(guān)于第c類的規(guī)則時,將所有屬于類別c的樣本作為正例,其他類別的樣本作為反例。
?
15.3剪枝優(yōu)化
規(guī)則生成本質(zhì)上是一個貪心搜索過程,需要一定的機(jī)制來緩解過擬合的風(fēng)險,最常見的做法是剪枝(pruning)。與決策樹相似,剪枝可發(fā)生在規(guī)則生長過程中,即預(yù)剪枝;也可發(fā)生在規(guī)則產(chǎn)生后,即后剪枝。通常是基于某種性能度量指標(biāo)來評估增/刪邏輯文字前后的規(guī)則性能,或增/刪規(guī)則前后的規(guī)則集性能,從而判斷是否要進(jìn)行剪枝。
RIPPER中的后處理機(jī)制是為了在剪枝的基礎(chǔ)上進(jìn)一步提升性能,對R中的每條規(guī)則ri,RIPPER為它產(chǎn)生兩個變體:
第一:r*i:基于ri覆蓋的樣例,用IREP*重新生成一條規(guī)則r*i,該規(guī)則稱為替換規(guī)則(replacement rule);
第二:r**i:基于ri增加文字進(jìn)行特化,然后再用IREP*剪枝生成一條規(guī)則r**i,該規(guī)則稱為修訂規(guī)則(revised rule)。
接下來,把r*i和r**i分別于R中除ri之外的規(guī)則放在一起,組成規(guī)則集R*和R**,將它們與R一起進(jìn)行比較,選擇最優(yōu)的規(guī)則集保留下來。
RIPREP更有效的原因是:最初生成R時,規(guī)則是按序生成的,每條規(guī)則都沒有對其后產(chǎn)生的規(guī)則加以考慮,這樣的貪心算法本質(zhì)常導(dǎo)致算法陷入局部最優(yōu);而RIPPER的后處理優(yōu)化過程將R中的所有規(guī)則放在一起重新加以優(yōu)化,恰是通過全局的考慮來緩解貪心算法的局部性,從而往往能獲得更好的效果。
?
15.4一階規(guī)則學(xué)習(xí)
受限于命題邏輯表達(dá)能力,命題規(guī)則學(xué)習(xí)難以處理對象之間的關(guān)系(relation),而關(guān)系信息再很多任務(wù)中是很重要的,要用一階邏輯表示,使用一階規(guī)則學(xué)習(xí)。
描述了樣例間關(guān)系的數(shù)據(jù)稱為關(guān)系數(shù)據(jù)(relational data),有原樣本屬性轉(zhuǎn)化而來的原子公式稱為背景知識(backgroundknowledge),而由樣本類別轉(zhuǎn)化而來的原子公式稱為關(guān)系數(shù)據(jù)樣例(examples)。如從西瓜集學(xué)出的一階規(guī)則:
若允許將目標(biāo)謂詞作為候選文字加入規(guī)則體,則FOIL能學(xué)出遞歸規(guī)則;若允許將否定形式的文字作為候選,則往往能得到更簡潔的規(guī)則集。
FOIL可大致看作是命題規(guī)則學(xué)習(xí)與歸納邏輯程序設(shè)計之間的過度,其自頂向下的規(guī)則生成過程不能支持函數(shù)和邏輯表達(dá)式嵌套,因此規(guī)則表達(dá)能力仍有不足;但它是把命題規(guī)則學(xué)習(xí)過程通過變量替換等操作直接轉(zhuǎn)化為一階規(guī)則學(xué)習(xí),因此比一般歸納邏輯程序設(shè)計技術(shù)更高效。
?
15.5歸納邏輯程序設(shè)計
歸納邏輯程序設(shè)計(Inductive Logic Programming,ILP)在一階規(guī)則學(xué)習(xí)中引入了函數(shù)和邏輯表達(dá)式嵌套。這使得,一方面機(jī)器學(xué)習(xí)系統(tǒng)具備了更為強(qiáng)大的表達(dá)能力;另一方面ILP可看作用機(jī)器學(xué)習(xí)技術(shù)來解決基于背景知識的邏輯程序(logic program)貴南,其學(xué)得的規(guī)則可被PROLOG等邏輯程序設(shè)計語言直接使用。
然后,函數(shù)和邏輯表達(dá)式嵌套的引入也帶來了計算上的巨大挑戰(zhàn)。例如,給給定一元謂詞P和一元函數(shù)f,能組成的文字有P(X),P(f(X)),P(f(f(X)))等無窮多個,這就是使得規(guī)則學(xué)習(xí)過程中可能的候選原子公式有無窮多個。若仍采用命題邏輯規(guī)則或FOIL學(xué)習(xí)那樣自頂向下的規(guī)則生成過程,則在增加規(guī)則長度時將因無法列舉所有候選文字而失敗。實(shí)際困難還包括,在計算FOIL增益時需對規(guī)則覆蓋的全部正反例計數(shù),而在引入函數(shù)和邏輯表達(dá)式嵌套之后也變得不可行。
1)最小一般泛化
歸納邏輯程序設(shè)計采用自底向上的規(guī)則生成策略,直接將一個或多個正例所對應(yīng)的具體事實(shí)(grounded fact)作為初始規(guī)則,再對規(guī)則逐步進(jìn)行泛化以增加對樣例的覆蓋率。泛化操作主要是兩個動作:將規(guī)則中的常量替換為邏輯變量,刪除規(guī)則體中的某個文字。
例子:
更好(1,10)<—根蒂更蜷(1,10)∩聲音更沉(1,10)∩臍部更凹(1,10)∩觸感更硬(1,10)
更好(1,15)<—根蒂更蜷(1, 15)∩臍部更凹(1, 15)∩觸感更硬(1, 15)
這兩條是事實(shí),說明西瓜1比西瓜10、15的特征比較,是特殊的關(guān)系數(shù)據(jù)樣例,不具有泛化能力。需要將這樣的特殊規(guī)則轉(zhuǎn)變?yōu)楦话愕囊?guī)則,采用的最基礎(chǔ)技術(shù)就是最小一般泛化(Least General Generalization,LGG)。
給定一階公式r1和r2,LGG先找出設(shè)計相同謂詞的文字,然后對文字中每個位置的常量逐一進(jìn)行考察,若常量在兩個文字中相同則保持不變,記LGG(t,t)=t;否則將它們替換為同一個新變量,并將該替換應(yīng)用關(guān)于公式的所有其他位置,假定這兩個不同的常量分別為s、t,新變臉為V,則記為LGG(s,t)=V,并在以后所有出現(xiàn)的LGG(s,t)的位置用V來代替。一句話,常量換變量。
更好(1,Y)<—根蒂更蜷(1,Y)∧聲音更沉(1,10)∧臍部更凹(1,Y)∧觸感更硬(1,Y)
更好(1,Y)<—根蒂更蜷(1, Y)∧臍部更凹(1, Y)∧觸感更硬(1, Y)
接著,LGG忽略r1和r2中不含共同謂詞的文字。顯然上面這個例子中,聲音更沉謂詞就要忽略了。最終兩條規(guī)則經(jīng)過LGG的兩個步驟,常量換變量和保留交集謂詞,就變成:
更好(1,Y)<—根蒂更蜷(1, Y)∧臍部更凹(1, Y)∧觸感更硬(1, Y)
這條規(guī)則就是可以判斷西瓜1是否比其他瓜更好。為提高泛化能力,結(jié)合西瓜2的初始規(guī)則:
更好(2,10)<—顏色更深(2,10)∧根蒂更蜷(2,10)∧敲聲更沉(2,10)∧臍部更凹(2,10)∧觸感更硬(2,10)
對這兩個規(guī)則進(jìn)行LGG,還是常量換變量和保留交集謂詞,最后就變成:
更好(X,Y)<—根蒂更蜷(X, Y)∧臍部更凹(X, Y)∧觸感更硬(X, Y)
這條規(guī)則就可以用來比較任何兩個西瓜的優(yōu)劣了。
如果在規(guī)則中引入非符號,LGG還能進(jìn)行更復(fù)雜的泛化操作。另外,上面例子的初始規(guī)則僅包含變量同為(X,Y)的關(guān)系,而背景知識應(yīng)該包含更多的關(guān)系,故此ILP系統(tǒng)常采用不用的初始規(guī)則選擇方法。最常用的是RLGG(relative leastgeneral generalization,RLGG),在計算LGG時考慮所有的背景知識,將樣例e的初始規(guī)則定義為e<-K,其中K是背景知識中所有原子的合取。
容易證明,LGG能特化為r1和r2的所有一階公式中最特殊的一個:不存在既能特化為r1和r2,也能泛化為它們的LGG的一階公式r*。在歸納邏輯程序設(shè)計中,獲得LGG之后,可將其看作單條規(guī)則加入規(guī)則集,并可采用對規(guī)則集進(jìn)行后剪枝來進(jìn)一步優(yōu)化。
2)逆歸結(jié)
在邏輯學(xué)中,演繹(deduction)與歸納(induction)是人類認(rèn)識世界的兩種基本方式。演繹是從一般性規(guī)律出發(fā)來探討具體事務(wù),而歸納則是從個別事物出發(fā)概括出一般性規(guī)律。一般數(shù)學(xué)定理證明是演繹實(shí)踐的代表,而機(jī)器學(xué)習(xí)顯然是屬于歸納的范疇。1965年邏輯學(xué)家J.A.Robinson提出,一階謂詞演算中的演繹推理能用一條十分簡潔的規(guī)則描述,這就是數(shù)理邏輯中著名的歸結(jié)原理(resolution principle);二十年后,計算機(jī)科學(xué)家S.Muggleton和W.Butine針對歸納推理提出了逆歸結(jié)(inverse resolution),這對歸納邏輯程序設(shè)計的發(fā)展起到了重要作用。
基于歸結(jié)原理,可將復(fù)雜的邏輯規(guī)則與背景知識聯(lián)系起來化繁為簡,從一般到特殊;基于逆歸結(jié),可依托背景知識發(fā)明新概念和關(guān)系,從特殊到一般。以命題演算為例,來說明歸結(jié)和逆歸結(jié)。
假設(shè)兩個邏輯表達(dá)式C1和C2成立,其分別包含了互補(bǔ)項L1與L2;不是一般性,令L=L1=﹁L2,C1=A∨L,C2=B∨﹁L。
歸結(jié)原理是通過演繹消去L而得到歸結(jié)項C=A∨B。
逆歸結(jié)的過程相反,是研究在已知C和某個Ci的情況下如何得到Cj(i≠j):C2=(C-( C1-{L}))∨{﹁L }。
在邏輯推理實(shí)踐中如何實(shí)現(xiàn)逆歸結(jié)呢?有四種完備的逆歸結(jié)操作。若以規(guī)則形式p←q等價地表達(dá) p∨﹁q,并假定用小寫字母表示邏輯文字、大寫字母表示合取式組成的邏輯子句,則這四類操作是:
這里X/Y表示X蘊(yùn)含Y,即X推出Y。上述規(guī)則中,X的子句或是Y的歸結(jié)項,或是Y的某個子句的等價項;而Y中出現(xiàn)的新邏輯文字則可看作通過歸納學(xué)到的新命題。
歸結(jié)、逆歸結(jié)都能容易地擴(kuò)展為一階邏輯形式,與命題邏輯的主要不同之處在于,一階邏輯的歸結(jié)、逆歸結(jié)通常需進(jìn)行合一置換操作。
置換(substitution)是用某些項來替換邏輯表達(dá)式中的變量。如用⊙={1/X,2/Y}置換C=色澤更深(X,Y)∧敲聲更沉(X,Y)可得到C*=C⊙=色澤更深(1,2) ∧敲聲更沉(1,2),其中{X,Y}稱為⊙的作用域(domain)。與代數(shù)中的置換類似,一階邏輯中也有復(fù)合置換和逆置換。
合一(unification)是用一種變量置換令兩個或多個邏輯表達(dá)式相等。如對A=色澤更深(1,X)和B=色澤更深(Y,2),可用⊙={2/X,1/Y}使A⊙=B⊙=色澤更深(1,2),此時稱A和B是可合一的(unifiable),稱⊙為A和B的合一化子(unifer)。若δ是一組一階邏輯表達(dá)式W的合一化子,且對W的任意合一化子Θ均存在相應(yīng)的置換λ使Θ=δoλ,則稱δ為W的最一般合一置換或最一般合一化子(most general unifier,記為MGU),這是歸納邏輯程序中最重要的概念之一。如色澤更深(1,Y)和色澤更深(X,Y)能被Θ1={1/X},Θ2={1/X,2/Y},Θ3={1/Z,Z/X}合一,但僅有Θ1是它們的MGU。
一階邏輯進(jìn)行歸結(jié)時,需利用合一操作來搜索互補(bǔ)項L1與L2。對兩個一階邏輯表達(dá)式C1=A∨L1和C2=B∨L2,若存在合一化子Θ使得L1Θ=﹁L2Θ,則可對其進(jìn)行歸結(jié):C=( C1-{ L1})Θ∨( C2-{L2})Θ。
類似地,可利用合一化子將逆歸結(jié)項擴(kuò)展到一階邏輯的逆歸結(jié)。定義C1=C/ C2和C2=C/C1為歸結(jié)商(resolution quotient),于是,逆歸結(jié)的目標(biāo)就是在已知C和C1時求出歸結(jié)商C2。對某個L1∈C1,假設(shè)?1是一個置換,可使( C1-{ L1}) ?1蘊(yùn)含C,即推出C。這里?1的作用域是C1中所有變量,記vars(C1),其作用是使C1-{L1}與C中的對應(yīng)文字能合一。令?2為作用域是vars(L1)-vars(C1-{L1})的置換,L1為歸結(jié)商C2中將被消去的文字,Θ2是以vars(L2)為作用域的置換,?1和?2共同作用域L1,使得﹁L1 ?1o ?2= L2Θ2,于是?1o ?2oΘ2為﹁L1與L2的MGU。將前兩步的復(fù)合置換?1o ?2記為Θ1,用Θ2-1表示Θ2的逆置換,則有(﹁L1Θ1) Θ2-1=L2,可得一階逆歸結(jié):C2=(C-( C1-{ L1})Θ1∨{﹁L1Θ1})Θ2-1。在一階情形下L1、L2、Θ1和Θ2的選擇通常都不唯一,需通過其他判斷標(biāo)準(zhǔn)來取舍,如覆蓋率、準(zhǔn)確率、信息熵等。例子可看文中的西瓜集。
逆歸結(jié)的一大特點(diǎn)就是能自動發(fā)明新謂詞,這些新謂詞可能對應(yīng)于樣例屬性和背景知識中不存在的新知識,對知識發(fā)現(xiàn)和精化有重要意義。但自動發(fā)明的新謂詞究竟對應(yīng)于什么語義,要在任務(wù)領(lǐng)域中進(jìn)一步理解。在現(xiàn)實(shí)任務(wù)中,ILP系統(tǒng)通常先自底向上生成一組規(guī)則,然后再結(jié)合最小一般泛化與逆歸結(jié)進(jìn)一步學(xué)習(xí)。
本章總結(jié),規(guī)則學(xué)習(xí)是符號主義學(xué)習(xí)(symbolism learning)的主要代表,是最早開始研究的機(jī)器學(xué)習(xí)技術(shù)之一。規(guī)則學(xué)習(xí)主要提出了命題規(guī)則學(xué)習(xí)、一階規(guī)則學(xué)習(xí)和歸納邏輯程序設(shè)計,并給出序貫覆蓋、剪枝優(yōu)化等技術(shù)。ILP復(fù)雜度很高,問題規(guī)模稍大難以處理,隨著統(tǒng)計學(xué)習(xí)的興起,規(guī)則學(xué)習(xí)被邊緣化;不過在富含結(jié)構(gòu)信息和領(lǐng)域知識的任務(wù)中,邏輯表達(dá)的重要性凸顯,因此結(jié)合規(guī)則學(xué)習(xí)和統(tǒng)計學(xué)習(xí)又抬頭。實(shí)際上,規(guī)則學(xué)習(xí)應(yīng)該是最早的機(jī)器學(xué)習(xí)方法,典型就是知識工程與專家系統(tǒng),而統(tǒng)計學(xué)習(xí)后面崛起,究竟最終機(jī)器學(xué)習(xí)的根本在規(guī)則還在統(tǒng)計,顯然仍未有定論。總結(jié)
以上是生活随笔為你收集整理的机器学习笔记(十五)规则学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于word插入特殊符号不显示的问题及解
- 下一篇: 机器学习知识点(三十四)机器学习类学习资