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),當且僅當
如果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)。
記爲
馬上要提到的候選現出算法能夠表示與訓練樣例一致的所有假設。在假設空間中的這一子集被稱爲關於假設空間H和訓練樣例D的變型空間,因爲它包含了目標概念的所有合理的變型。
定義:關於假設空間H和訓練樣例集D的變型空間,標記爲VSH,D,是H中與訓練樣例D一致的所有假設構成的子集。
使用上面介紹到的一般到特殊序的結構,可以用更簡潔的形式表示變型空間。變型空間可以表示爲它的極大一般的和極大特殊的成員。
看下面一個假設(怎麼得到的先不管),
h = <Sunny, Warm, ?, Strong, ?, ?>
這個h和表1中的4個訓練樣例一致,實際上,這只是與訓練樣例一致的所有6個假設之一。下面的圖1給出了這個6假設:
圖1
圖1中的6個假設構成一個變型空間(6個假設都與訓練樣例集一致),箭頭表示實例間的more_general_than關係。其中S就是極大特殊假設的集合,而G就是極大一般假設的集合,圖上很容易看出,如果給定G和S那麼很容易通過一般到特殊偏序結構來生成S和G之間的所有假設,因此只需要給定極大特殊假設的集合和極大一般假設的集合,就能夠完整地表示一個變型空間。
下面給出準確的定義:
一般邊界:關於假設空間H和訓練數據D的一般邊界(general boundary)G,是在H中與D相一致的極大一般成員的集合。
特殊邊界:關於假設空間H和訓練數據D的特殊邊界(specific boundary)S,是在H中與D相一致的極大特殊成員的集合。
變型空間表示定理:令X爲一任意的實例集合,H爲X上定義的布爾假設的結合。令c:X->{0,1}爲X上定義的任意目標概念,並令D爲任一訓練樣例的集合{<x,c(x)>}。對所有的X, H, c, D 以及良好定義的S和G:
候選消除算法
有了上面的一些預備知識,現在可以來說明候選消除算法。算法的思路如下:獲得變型空間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 | ? |
參考資料:
機器學習 By M.Mitchell