機器學習讀書筆記(二)

By RaySaint 2011/06/17

 

概念學習和歸納偏置

 

感覺概念學習現在提得很少,可能是因爲在機器學習的實際應用中很少用到,但是從概念學習中很容易引出歸納偏置的概念,而歸納偏置是個很重要的概念,因此這次會簡單講講概念學習,着重於歸納偏置。可以看到歸納偏置對於機器學習的重要性。


概念學習

 

給定一樣例集合以及每個樣例是否屬於某一概念的標註,怎樣自動推斷出該概念的一般定義。這一問題被稱爲概念學習。

一個更準確的定義:

概念學習是指從有關某個布爾函數的輸入輸出訓練樣例中推斷出該布爾函數。注意,在前面一篇文章《機器學習的基本概念和學習系統的設計》中提到,機器學習中要學習的知識的確切類型通常是一個函數,在概念學習裏面,這個函數被限定爲是一個布爾函數,也就是它的輸出只有{0,1}(0代表false,1(代表true)),也就是說目標函數的形式如下:

f: X->{0,1}

根據上面的定義,很明顯概念學習屬於監督學習分類問題

 

舉一個《機器學習》By mitchell書上的例子來更好的理解概念學習。

目標概念:Aldo(人名)會去海邊游泳的日子,注意,這裏這樣描述不太好,很容易理解成我們要得到的表示目標感念的函數輸出的是一串日期,不符合前面所說的概念學習的目標是推斷一個布爾函數,實際上,這裏是給出一個日子,基於這一天的各種屬性,推斷Aldo是否會在這天去游泳。下面的表1描述了一系列日子的樣例,每個樣例表示爲屬性的集合。屬性EnjoySport表示這一天Aldo是否樂於進行水上運動,也是需要預測的屬性;Sky、AirTemp、Humidity、Wind、Water、Forcast是已知的屬性,就是要基於這些屬性來推斷Aldo是否會在這天去海邊游泳。

 

表1 目標概念EnjoySport的正例和反例

Example Sky AirTemp Humidity Wind Water Forecast EnjoySport
1 Sunny Warm Normal Strong Warm Same Yes
2 Sunny Warm High Strong Warm Same Yes
3 Rainy Cold High Strong Warm Change No
4 Sunny Warm High Strong Cool Change Yes

 

接下來要確定假設(目標函數)的形式,可以先考慮一個較爲簡單的形式,即實例的各個屬性的合取式。可令每個假設爲6個約束的向量,這些約束指定了Sky、AirTemp、Humidity、Wind、Water、Forcast的值。每個屬性可取值爲:

  • 由“?”表示任意本屬性可接受的值。
  • 明確指定的屬性值(如warm)。
  • 由“∅”表示不接受任何值。

如果某些實例x滿足假設h的所有約束,那麼h將x分類爲正例(h(x)=1)。比如,爲判定Aldo只在寒冷的和潮溼的日子裏進行隨上運動(並與其他屬性無關),這樣的假設可以表示爲下面的表達式:

<?, Cold, High, ?, ?, ?>

也就是要表達:

if AirTemp = Cold ∧ Humidity = High then EnjoySport = Yes

那麼最一般的假設是每一天都是正例,可表示爲:

<?, ?, ?, ?, ?, ?>

而最特殊的假設即每一天都是反例,表示爲:

<∅, ∅, ∅, ∅, ∅, ∅>

這裏有幾點要注意:

1. <∅, ∅, ∅, ∅, ∅, ∅><∅, ?, ?, ?, ?, ?><∅, ∅, ?, ?, ?, ?>等等其實是一樣的假設,也就是隻要假設中有一個屬性爲“∅”,那麼這個假設就表示每天都是反例。

2. 你很可能會懷疑,這裏假設的形式爲什麼一定是屬性的合取,若屬性Humidity有3種取值:High、Normal和Low,那麼就無法表達Aldo會在溼度Normal或High的時候去海邊游泳,因爲這是一個析取式:

if Humidity = Normal ∨ Humidity = High then EnjoySport = Yes

後面會講,斷言假設的形式爲屬性的合取是一種歸納偏置它使得我們的學習器是有偏的,如果學習器是無偏的,那麼它根本上無法對未見實例進行分類,這一點很重要,後面會慢慢解釋。

現在做一些術語定義,方便後面的表述:

  • (1)待學習的概念或函數稱爲目標概念,記作c。
  • (2)概念定義在一個實例集合上,這個集合表示爲X。學習目標概念時,必須提供一套訓練樣例(訓練集,記爲D),訓練集中的人每個樣例爲X中的一個實例x和它的目標概念值c(x)(如上面的表1中的example)。c(x)=1,x稱爲正例(positive);c(x)=0,x稱爲反例(negative)。可以用序偶<x, c(x)>來描述訓練樣例。
  • (3)給定目標概念c的訓練樣例集,學習器面臨的問題就是假設或估計c。使用符號H來表示所有可能假設的集合,也稱爲假設空間,對於我們的問題來說假設空間就是所有各個屬性的合取式。H中的每個假設h表示X上定義的布爾函數,即h:X->{0,1}。機器學習的目標就是尋找一個假設h,使對於X中的所有x,h(x)=c(x)。

歸納學習假設

機器學習的任務是在實例集合X上尋找一個與目標概念c相同的假設h,然而我們對於c僅有的信息只是它在訓練結合上的值。因此,歸納學習算法最多隻能保證輸出的假設能與訓練樣例相擬合。如果沒有更多的信息,我們只能假定,對於未見實例最好的假設就是與訓練樣例數據最佳擬合的假設。這是一個歸納學習的基本假定。下面給出一個準確的定義:

 

歸納學習假設 任一假設如果在足夠大的訓練樣例集合中很好地逼近目標函數,它也能在未見實例中很好地逼近目標函數。

 

那麼現在該講講如何逼近目標函數,也就是先前在《機器學習的基本概念和學習系統的設計》中提到的搜索策略,即如何搜索假設空間H獲得與目標概念c一致的假設h。


假設的一般到特殊序、變型空間和候選消除算法

 

假設的一般到特殊序

許多概念學習算法(如這裏要講的候選消除算法),搜索假設空間的方法依賴於一種針對任意概念學習都很有效的結構:假設的一般到特殊序關係。

考慮下面兩個假設:

h1=<Sunny, ?, ?, Strong, ?, ?>

h2=<Sunny,?, ?, ?, ?, ?>

很明顯,被h1劃分爲正例的實例都會被h2劃分爲正例,因此,可以說h2比h1更一般,h1比h2更特殊。現在要定義“比……更一般”這種關係

定義:令hj和hk爲在X上定義的布爾函數。稱hj more_general_than_or_equal_to hk (記作hj≥ghk),當且僅當

image

如果hj≥ghk ∧ (hk ≠g hj),那麼就說 hj 嚴格的 more_general_than hk(寫作hj>ghk),可以得出≥g的一些簡單性質:

(1) 自反性,hj≥ghj

(2) 反對稱,若hj≥ghk,那麼hk 非≥g hj

(3) 傳遞性,若hi≥ghj且hj≥ghk,那麼hi≥ghk

很明顯,≥g是假設空間H上的一個偏序關係。

≥g很重要,因爲它在假設空間H上對任意概念學習問題提供了一種有效的結構,可以更加有效地搜索假設空間。

 

變型空間

爲了更好的說明變型空間,先給出一個定義:

一個假設h與訓練樣例集合D一致,當且僅當對D中每一個樣例<x,c(x)>都有h(x) = c(x)。

記爲

image

馬上要提到的候選現出算法能夠表示與訓練樣例一致的所有假設。在假設空間中的這一子集被稱爲關於假設空間H和訓練樣例D的變型空間,因爲它包含了目標概念的所有合理的變型。

定義:關於假設空間H和訓練樣例集D的變型空間,標記爲VSH,D,是H中與訓練樣例D一致的所有假設構成的子集。

image

使用上面介紹到的一般到特殊序的結構,可以用更簡潔的形式表示變型空間。變型空間可以表示爲它的極大一般的和極大特殊的成員。

看下面一個假設(怎麼得到的先不管),

h = <Sunny, Warm, ?, Strong, ?, ?>

這個h和表1中的4個訓練樣例一致,實際上,這只是與訓練樣例一致的所有6個假設之一。下面的圖1給出了這個6假設:

 image

圖1

圖1中的6個假設構成一個變型空間(6個假設都與訓練樣例集一致),箭頭表示實例間的more_general_than關係。其中S就是極大特殊假設的集合,而G就是極大一般假設的集合,圖上很容易看出,如果給定G和S那麼很容易通過一般到特殊偏序結構來生成S和G之間的所有假設,因此只需要給定極大特殊假設的集合和極大一般假設的集合,就能夠完整地表示一個變型空間。

下面給出準確的定義:

一般邊界:關於假設空間H和訓練數據D的一般邊界(general boundary)G,是在H中與D相一致的極大一般成員的集合。

image

特殊邊界:關於假設空間H和訓練數據D的特殊邊界(specific boundary)S,是在H中與D相一致的極大特殊成員的集合。

image

變型空間表示定理:令X爲一任意的實例集合,H爲X上定義的布爾假設的結合。令c:X->{0,1}爲X上定義的任意目標概念,並令D爲任一訓練樣例的集合{<x,c(x)>}。對所有的X, H, c, D 以及良好定義的S和G:

image

 

候選消除算法

有了上面的一些預備知識,現在可以來說明候選消除算法。算法的思路如下:獲得變型空間VSH,D ,首先將G邊界和S邊界分別初始化爲H中最一般的假設和最特殊的假設。即:

G0 <- {<?, ?, ?, ?, ?, ?>}

S0 <- {<∅, ∅, ∅, ∅, ∅, ∅>}

然後處理每個訓練樣例,使得S被一般化,G被特殊化,從而逐步縮小變型空間,消去變型空間中與樣例不一致的假設。

僞代碼描述如下:


候選消除算法,輸入訓練樣例D,輸出由G和S表示的變型空間

G <- {<?, ?, ?, ?, ?, ?>}

S <- {<∅, ∅, ∅, ∅, ∅, ∅>}

foreach d in D
{
    if (d == positive)
    {
        foreach g in G
        {
            if (g與d不一致)
            {
                從G中移去g;
            }
        }
        foreach s in S
        {
            if(s與d不一致)
            {
                從S從移去s;
                foreach s的極小一般化式h
                {
                    if(h與d一致 && G的某個成員比h更一般)
                    {
                        將h加入到S中;
                    }
                }
                從S中移去所有這樣的假設:它比S中另一假設更一般;
            }
        }
    }
    else
    {
        foreach s in S
        {
            if(s與d不一致)
            {
                從S中移去s;
            }
        }
        foreach g in G
        {
            if(g與d不一致)
            {
                從G中移去g;
                foreach g的極小特殊化式h
                {
                    if(h與d一致 && S的某個成員比h更特殊)
                    {
                        將h加入到G中;
                    }
                }
                從G中移去所有這樣的假設:它比G中另一假設更特殊;
            }
        }
    }
}


 

簡單總結一下上面的算法。正例使得變型空間的S邊界逐漸一般化,而反例扮演的角色恰好使得G邊界逐漸特殊化。每輸入一個訓練樣例,S和G邊界將繼續單調移動並相互靠近,劃分出越來越小的變型空間。

對錶1執行候選消除算法,便可以得到圖1的結果。

 

使用不完全學習概念進行分類

假設只提供了表1中的4個訓練樣例,沒有更多的訓練樣例,現在要對未見過的實例進行分類。圖1表示的變型空間仍包含多個假設,即目標概念還未完全學習到,但是仍然有可能對新樣例進行一定可信度的分類。爲示範這一過程,給出表2列出待分類的新實例:

表2 待分類的新實例

 

Instance Sky AirTemp Humidity Wind Water Forecast EnjoySport
A Sunny Warm Normal Strong Cool Change ?
B Rainy Cold Normal Light Warm Same ?
C Sunny Warm Normal Light Warm Same ?
D Sunny Cold Normal Strong Warm Same ?
先看A,圖1所示的當前的變型空間中的每個假設都將A分類爲正例。由於變型空間的所有假設一致同意實例A爲正例,學習器將A劃分爲正例的可信度,與只有單個的目標概念一樣(當然前提是假設了目標概念一定在假設空間中,且訓練樣例沒有錯誤)。事實上,只要S中的每個成員將實例劃分爲正例,就可以斷言變型空間中的每個假設將其劃分正例,因爲由more_general_than定義,如果新的實例滿足S的所有成員,它一定也滿足這些更一般的假設。
 
同樣,B被變型空間中的每個假設劃分爲反例,可以放心地把B劃分爲反例,即使概念學習是不完全的。只要實例不滿足G中的所有成員,那麼該實例就可以被斷言爲反例。
 
碰到實例C就要注意了,變型空間中半數將C劃分爲正例,半數劃分爲反例。因此,學習器無法可信的分類地這一樣例,除非提供更多的訓練樣例。
 
實例D在變型空間中被兩個假設分爲正例,被其他劃分爲正例。這個例子的分類可信度比A和B要小,又比C要大。投票選取傾向於將其分類爲反例,所以可以輸出擁有最大票數的分類,還可附帶一個可信度比例以表明投票的傾向程度。(注意,如果假定H中所有假設有相等的先驗概率,那麼投票的方法能得到新實例的最可能的分類
 
現在,可以講講一個非常重要的概念,歸納偏置。

歸納偏置
 
如前所述,如果訓練樣例沒有錯誤,初始假設空間包含概念目標時,如果提供足夠多的訓練樣例,候選消除算法可以收斂到目標概念。前面提到,斷言假設的形式爲屬性的合取,事實上是爲了縮小需要搜索的假設空間的範圍。這樣做的一個後果是,有可能目標概念不在這樣一個初始的假設空間中。
 
如果想要保證假設空間中包含目標概念,一個明顯的方法是擴大假設空間,使每個可能的假設都被包含在內。再次以EnjoySport爲例子,其中將假設空間限制爲只包含屬性值的合取。由於這一限制,假設空間不能夠表示最簡單的析取形式的目標如“Sky = Sunny 或 Sky = Cloudy”。
 
所以問題在於,我們使學習器偏向於只考慮合取的假設。
 
 
無偏學習的無用性
 
 
好吧,居然這種偏向可能使得假設空間漏掉了目標概念,那我們就提供一個表達能力更強的空間,它能表達所有的可教授概念。換言之,它能夠表達實例集X的所有可能的子集。一般我們把集合X的所有子集的集合稱爲X的冪集(power set)。
 
假設AirTemp、Humidity、Wind、Water、Forcast都只有兩種可能取值,Sky有三種可能取值,那麼實例空間X包含了3×2×2×2×2×2=96種不同的實例。根據集合的知識,在這一實例集合X的冪集的大小是2^|X|,其中|X|是X的元素數目。因此在這一實例空間上可以定義2^96,或大約10^28個不同的目標概念,我們稱包含了2^|X|個假設的這樣一個假設空間是一個無偏的假設空間。先前我們將假設空間限制爲只包含屬性值的合取,那麼只能表示1+4×3×3×3×3×3=973個假設。哈,看來我們先前的空間實在是一個偏置很大的假設空間。
 
從感覺上講,無偏的假設空間雖然一定包含了目標概念,但是它包含的假設的數量太大,搜索這樣一個空間必然會很費時。然而,你馬上會發現,這裏還存在一個根本的問題:如果使用無偏的假設空間,概念學習算法將無法從訓練樣例從泛化,要想得到單個目標概念,必須提供X中所有的實例作爲訓練樣例。我們根本不能從這樣一個學習器中,得到對未知實例的分類
 
現在來看看爲什麼這麼說。假定我們給學習器提供了3個正例( x1, x2, x3)以及反例(x4, x5)。這時,變型空間的S邊界包含的假設正好是三個正例的析取:
 
S : { (x1 ∨ x2 ∨ x3) }
 
因爲這是能覆蓋3個正例的最特殊假設。相似地,G邊界將由那些剛好能排除掉的那些假設組成。
 
G : {否定符號(x4 ∨ x5) }
 
問題來了,在這一非常具有表達力的假設表示方法中,S邊界總是所有正例的析取式,G邊界總是所有反例的析取的否定式。這樣能夠由S和G無歧義分類的,只有已見到的訓練樣例本身。要想獲得單個目標概念,就必須提供提供X中所有的實例作爲訓練樣例。
 
好吧,爲了避免這個問題,我們只使用不完全學習得到的變型空間,像前面使用成員投票的方式對未見實例進行分類。遺憾的是,你馬上會發現投票對於那些未見過的實例不起作用,爲什麼?未見實例會被變形空間中剛好半數的假設劃分爲正例,而被另一半劃分爲反例,原因如下,若H是X的冪集,而x是某個未出現的實例,則對於變型空間中一覆蓋x的假設h。必然存在另一假設h’,它與h幾乎相等,只不過對x的分類不同。而且,如果h在變型空間中,那麼h’也在,因爲它對於已往訓練樣例的劃分與h完全一樣。
 
以上討論說明了歸納推理的一個基本屬性:學習器如果不對目標概念的形式做預先的假定,它從根本上無法對未見實例進行分類。這便是無偏學習的無用性。
 
我們原來的EnjoySport任務中,候選消除算法能夠從訓練樣例中泛化,惟一的原因就是它是有偏的,隱含假定了目標概念可以由屬性值的合取來表示。
 
由於歸納學習需要某種形式的預先假定,或稱爲歸納偏置(inductive bias),我們可以用歸納偏置來描述不同學習方法的特徵。
 
歸納偏置還有一個更術語化的定義,這裏就不提了。簡單的講,歸納偏置就是一個附加的前提集合B,以後還會提到,這個前提集合B有兩種情況,第一種是對假設空間進行限定,就像候選消除算法那樣;第二種是假設空間是完整的假設空間,但是進行不徹底的搜索,很多貪心算法都是這樣的,如以後會提到的決策樹算法。前一種歸納偏置叫做限定偏置,後一種叫做優選偏置
 
在研究其他的歸納推理方法時,有必要牢記這種歸納偏置的存在及其強度。一種算法如果有偏性越強,那它的歸納能力越強,可以分類更多的未見實例。當然,分類的正確性也依賴於歸納偏置的正確性。
 

參考資料:

機器學習 By M.Mitchell

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章