之前通過看台大的公開課視頻《機器學習基石》來學習,但是發現看的看的有些懵,感覺自己還是看書自學比較好,不過視頻也算我的“引路人”,讓我對機器學習有了一個大概的認識,對我現在“啃書”有着很大的幫助。

今天早上七點起床,七點半到圖書館開始學習,那麼從今天開始就要開始苦讀《Python大戰機器學習》以及周志華老師的《機器學習》了,希望能在讀研之前的三個月時間有所斬獲吧。

這本書封皮就是使用的西瓜,學習使用的栗子也是西瓜,看來周志華老師很喜歡吃西瓜……

我們在挑選好的西瓜時,根據生活經驗大致有這麼幾個指標:瓜皮的色澤、根蒂的形狀、敲打的聲音。那麼現在就選擇這三個特性來對機器學習進行形象的學習。

我們可以把機器學習分成收集、分析、預測三個階段。這些階段所面對的對象都是數據,也就是說機器學習是圍繞數據展開的。

1.元素、稱謂

首先把我們的數據分放在一起,稱之為:

D = {x1,x2,x3}—— 數據集。

其中每一個x都是一個一個西瓜的信息,稱為樣本(sample)例如:

x1(色澤=烏黑,根蒂=捲曲,敲聲=渾濁)

每一個都是三維向量,我們稱d=3,3是樣本維數。

假設三維坐標系,X軸是顏色,相當於一個色譜,不同顏色對應不同數值;Y軸是根蒂、Z軸是敲聲。這樣,每一個西瓜在坐標系中都有自己的位置。

這三個維度張開形成一個三維空間,我們稱之為:

X:樣本空間、輸入空間。

而每一個數據都會對應一個結果,好瓜或者壞瓜,我們稱之為:

label 標記。

我們把label的集合稱為:

Y:標記空間、輸出空間。

(xi,yi)表示第i個樣例,既有數據又有結果,我們稱之為樣例(example)。

2.目的

我們的目的是研究一個學習算法(學得模型)以用來匹配當前訓練所使用的的數據且可以預測以後的瓜是好是壞,換句話說,我們是在茫茫多的算法當中尋找一個接近“真理”的算法,可以準確的預測。

我們把每一個算法稱為h:假設(hypothesis)。

這個茫茫多的算法放在一起,稱之為:假設空間(hypothesis space)。

把接近真理的判斷瓜是好是壞的方法稱為:

g:ground-truth。

這樣一來,我們的目的就是在hypothesis space中尋找一個無限接近真理g的h。我們把h→g的逼真程度,或者學得模型對除了訓練數據集以外的新樣本的適應能力,稱為泛化(generalization)能力。

泛化能力指學得模型對新樣本的適應能力,能力越強則越能準確地預測瓜是好是壞,則h越接近g,那麼h越是可以代表更廣泛的樣本、樣例,也就是說我們從特殊的樣本獲得了一個一般的規律,我們將這個過程稱為歸納。

歸納(induction)、演繹(deduction):

歸納是獲得學得模型,演繹就是預測。

歸納學習有廣義學習:相當於從樣例中學習;狹義學習:要求從訓練數據集中得出一個概念(concept)。

給概念舉個例子:色澤鮮亮、根蒂捲曲、敲聲渾濁的瓜是好瓜。

我們要獲得一個泛化性能好、語義明確的概念是很難的,而且現實當中我們也基本使用的是“黑箱模型”(不在乎內部是如何運作的,只關心輸入與輸出),也就是說我們只要知道一個瓜是什麼特性的,結論是好是壞就可以了,沒必要知道是如何定義什麼是好瓜這個概念的。

3.得出學得模型的過程

學習的過程就是從從hypothesis space中選出匹配訓練集的假設,但是選出的假設有可能不止一個,如果有多個假設匹配訓練數據集,我們就將這多個假設放到一起,稱為:版本空間(version space)或hypothesis set。

版本空間中的假設可能對同一個樣本x有不同的判定y,但對於一個學習算法而言,必須要產生一個學得模型,此時算法本身的“偏好”就顯得尤為重要。對於某種類型假設的偏好,稱為:歸納偏好。這個歸納偏好對於每一個算法來講都是必須的。可以將歸納偏好看作是在假設空間中選擇假設的啟髮式、“價值觀”。

“奧卡姆剃刀”原則:如有多個假設與觀察一致,則選擇最簡單的那個假設。

例如在三維空間中訓練數據集的點可以被一條直線全部經過,也可以被一條七拐八拐的曲線全部經過,那麼我們就選擇簡單的直線。

但這個假設是否簡單也有着不同的詮釋,如何判定,需要藉助其它機制,例如在上面的例子中,用方程的幾何圖形直線、曲線來判定是否簡單。

但是,如果一個算法A在某一問題上比算法B好,則必然存在另一個問題B更好,這就是NFL定理(No Free Lunch Theorem):無關A、B有多好多壞,其期望性能是相同的。但前提是所有問題出現的機會相等,或者所有問題同等重要。

一看這個定理,所有的算法的期望性能都一樣,那麼一個經過幾年研究的算法跟胡思亂想的一個“點子”的效果一樣,那我們還研究什麼啊!?

但是我們要明確一點的是:現實生活中,問題各種各樣,情況各不相同,所有問題出現機會相等,所有問題同等重要這種情況是不存在的。所以NFL定理的寓意在於:不可脫離現實具體問題,空談算法好壞是無意義的。

學習算法自身的歸納偏好與問題是否匹配,具有決定性作用。

4.一些概念

如若我們研究的是離散值,就稱為:分類

研究連續值:回歸

不給標記進行自分類:聚類

二分類任務:結果標記只有兩種情況,例如好、壞,Y = {-1,+1}  負類(negative)、正類(positive)

多分類任務:| Y | > 2

回歸任務: Y = R,R為實數集

監督學習(supervised learning):分類、回歸。在餵給機器數據時候,明確告訴機器,這個數據的類別,或者label。

半監督學習(semi-supervised ):是告訴一部分數據的類別樣本,大部分的數據要考機器自己分類。

無監督學習(unsupervised learning):聚類。完全不告訴機器類別,完全靠機器自己。

聚類:不知label,不知類別,可以更好的了解數據內在、潛在的規律,在自分類后,每一類稱為簇(cluster)

增強學習(reinforcement learning):機器一部分一部分漸進學習。比如,訓練狗狗坐下,我們說“坐下”,但狗狗剛開始聽不懂,有可能開始pees,這種情況下,我們無法直接告訴它坐下是什麼樣的動作(難道我們要親自示範么),所以我們可以採用側面告知,一部分一部分的交給它。這個過程是怎樣實現的呢?我們可以利用獎懲。當他做錯動作的時候,我們給他懲罰,比如打他一下(殘忍。。),這樣在進行了很多錯的動作后終究會做出對的動作坐下,當它做對的時候給她獎勵。這個過程就是,一步一步的認知動作是錯的,從而接近對的動作。