積跬步以致千里,積怠惰以致深淵
注:本篇文章在整理時主要參考了 周志華 的《機器學習》。

主要內(nèi)容
對機器學習進行簡單介紹,并引出機器學習基本概念。
什么是機器學習(MachineLearning)
“朝霞不出門,晚霞行千里”
人從以往積累的經(jīng)驗學習總結(jié)得出,早上有紅色云霞的話就預示今天有雨,晚上太陽下山的時候有紅色云霞的話預示明天晴天。同樣,我們賦予計算機(在此我們理解Machine為計算機)擁有通過對經(jīng)驗的利用,能夠做出有效決策的能力,稱之為機器學習。
如何賦予計算機“學習”能力
定義:針對經(jīng)驗E (experience) 和一系列的任務T (tasks) 和一定表現(xiàn)的衡量P,如果隨之經(jīng)驗E的積累,針對定義好的任務T可以提高表現(xiàn)P,就說計算機具有學習能力。
在計算機系統(tǒng)中,“經(jīng)驗”通常以“數(shù)據(jù)”的形式存在。通過設(shè)計“學習算法”使得計算機能夠從數(shù)據(jù)中產(chǎn)生數(shù)據(jù)之間潛在的規(guī)律和聯(lián)系(例:朝霞與今天下雨,晚霞與明天晴天),我們將這種規(guī)律和聯(lián)系統(tǒng)稱為“模型”。首先我們把經(jīng)驗數(shù)據(jù)提供給計算機,計算機就能基于這些數(shù)據(jù)和學習算法產(chǎn)生模型然后做出有效決策;在面對新的情況時(例如朝霞),模型會給我們提供相應的判斷(例如今天會下雨)。
機器學習算法
我們先了解一下科學推理的兩大基本手段:歸納(induction)與演繹(deduction)。前者是從特殊到一般的“泛化”(generalization)過程,即從具體事實歸結(jié)出一般性規(guī)律;后者是從一般到特殊的“特化”(specialization)過程,即從基礎(chǔ)性原理推演出具體狀況。
假定我們收集了一批關(guān)于西瓜的數(shù)據(jù),例如(色澤=青綠,根蒂=蜷縮,敲聲=濁響),(色澤=烏黑,根蒂=稍蜷,敲聲=沉悶),(色澤=淺白,根蒂=硬挺,敲聲=清脆)...,每對括號內(nèi)是一條記錄,“=”意思是“取值為”。
機器學習的過程其實就是上邊的歸納過程,我們以挑西瓜為例

機器學習的過程就是從具體數(shù)據(jù)集中“泛化”的過程,即通過對訓練集中瓜的學習以獲得對沒見過的瓜進行判斷的能力。我們可以把學習過程看作一個在所有假設(shè)(hypothesis)組成的空間中進行搜索的過程,搜索目標是找到與訓練集“匹配”(fit)的假設(shè),即能夠?qū)⒂柧毤械墓吓袛嗾_的假設(shè)。
例如在表1.1的訓練集上,我們可以找到匹配訓練樣本的假設(shè)列表,展示如下:
(色澤=*,根蒂=蜷縮,敲聲=*) ? ? -> 好瓜 ? (1)
(色澤=*,根蒂=*,敲聲=濁響)? ? ?-> 壞瓜 ? (2)
(色澤=*,根蒂=蜷縮,敲聲=濁響) -> 壞瓜 ? (3)
算法選擇依據(jù)
從上文中我們可以得知在同一個訓練集上進行匹配,有可能會匹配出多個假設(shè),那么機器學習的具體過程中算法的選擇依據(jù)是什么呢?
在現(xiàn)實問題中我們常面臨很大的假設(shè)空間,可學習過程是基于有限樣本訓練集進行的,因此,可能有多個假設(shè)與訓練集一致,即存在著一個與訓練集一致的“假設(shè)集合”,我們稱之為“版本空間”,上邊的假設(shè)(1)(2)(3)即在西瓜數(shù)據(jù)集上“泛化”出的假設(shè)空間。
那么當我們遇到一個新收來的瓜(色澤=青綠,根蒂=蜷縮,敲聲=沉悶),那么我們該選用哪個假設(shè)來進行判斷呢?如果使用假設(shè)(1)時,這是一個好瓜,可如果使用假設(shè)(2)(3)時,這就是一個壞瓜了。
這時候的選擇偏好被稱為“歸納偏好”,而任何一個有效的機器學習算法必有其歸納偏好,否則它必然被假設(shè)空間中等效的假設(shè)所迷惑,而無法產(chǎn)生確定的學習結(jié)果。
一種常用的、自然科學研究中最基本的“正確的”偏好原則是“奧卡姆剃刀”(Occam's razor)原則
奧卡姆剃刀原則:若有多個假設(shè)與觀察一致,則選最簡單的那個
事實上,歸納偏好對應了學習算法本身所做出的關(guān)于“什么樣的模型更好”的假設(shè)。在具體的現(xiàn)實問題中,算法的歸納偏好是否與問題本身匹配,大多數(shù)時候直接決定了算法能否取得好的性能。
舉個例子,在下邊回歸學習的1.3圖示中,每個訓練樣本是圖中的一個點,要習得一個和訓練集一致的模型,相當于找到一條穿過所有訓練樣本點的曲線。顯然,這樣的曲線有很多條。如果使用奧卡姆剃刀偏好原則的話,更為平滑的曲線A會比曲線B要好。

可實際情況,A曲線卻并不一定比B曲線好,因為用來訓練的樣本只是全量數(shù)據(jù)的一部分,真正的數(shù)據(jù)到底是更貼近曲線A還是曲線B是無法得知的。如圖1.4所示,真實的數(shù)據(jù)是兩種情況都有可能出現(xiàn)。換言之,對于一個學習算法a,若它在某些問題上比學習算法b好,則必然存在另一些問題,在那里b比a好。

可NFL定理有一個重要前提:所有“問題”出現(xiàn)的機會相同、或所有問題同等重要。但實際情況并不是這樣的,很多時候,我們只關(guān)注自己正在試圖解決的問題。比如,要找到快速從A地到B地的算法,如果我們考慮A地是南京鼓樓、B地是南京新街口,那么“騎自行車”是很好的解決方案;但是這個方案對A地是南京鼓樓、B地是北京新街口的情形顯然很糟糕,但我們對此并不關(guān)心。
所以,NFL定理最重要的寓意,是讓我們清楚意識到,脫離具體問題,空泛地談論“什么學習算法更好”毫無意義,因為若考慮所有潛在的問題,則所有的算法都一樣好。針對具體問題選擇具體的算法和歸納偏好才是正確的做法。
基礎(chǔ)概念
1)基本術(shù)語
數(shù)據(jù)集:對于這組數(shù)據(jù)的集合;(即,關(guān)于西瓜的數(shù)據(jù))
示例或樣本:每條記錄關(guān)于一個事件或?qū)ο蟮拿枋觯?例,(色澤=烏黑,根蒂=稍蜷,敲聲=沉悶))
屬性或特征:反應事件或?qū)ο笤谀撤矫娴谋憩F(xiàn)或性質(zhì)的事項;(即,“色澤”、“根蒂”,“敲聲”)
屬性空間:屬性張成的空間;(即,我們把“色澤”、“根蒂”,“敲聲”作為三個坐標軸,則它們張成一個用于描述西瓜的三維空間,也稱“樣本空間”或“輸入空間”)
特征向量:每個樣本在屬性空間中對應的坐標向量;

學習或訓練:從數(shù)據(jù)中學得模型的過程,通過執(zhí)行某個學習算法來完成;
訓練數(shù)據(jù):訓練過程中使用的數(shù)據(jù);
訓練樣本:訓練數(shù)據(jù)中每個樣本;
訓練集:訓練樣本組成的集合;
如果希望學得一個能幫助我們判斷沒剖開的是不是“好瓜”的模型,僅有前面的示例數(shù)據(jù)顯然是不夠的。要建立這樣的關(guān)于“預測”(prediction)的模型,我們需要獲得訓練樣本的“結(jié)果”信息,例如“((色澤=青綠,根蒂=蜷縮,敲聲=濁響),好瓜)”。
標記(label):關(guān)于示例結(jié)果的信息;(例如,好瓜)
樣例(example):擁有了標記信息的示例;
測試:用已學得的模型進行預測的過程;
測試樣本:被預測的樣本;
2)算法分類
分類(classification):目標標記為類別型數(shù)值(category);(例如“好瓜”“壞瓜”)
回歸(regression):目標標記為連續(xù)性數(shù)值(continuous numeric value);(例如西瓜成熟度0.95、0.37)
監(jiān)督學習(supervised learning):是利用已知類別的樣本(即有標記的樣本 labeled sample,已知其相應的類別),調(diào)整分類器的參數(shù),訓練得到一個最優(yōu)模型,使其達到所要求性能,再利用這個訓練后的模型,將所有的輸入映射為相應的輸出,對輸出進行簡單的判斷,從而實現(xiàn)分類的目的,這樣,即可以對未知數(shù)據(jù)進行分類。
通俗的來講,我們給計算機一堆選擇題(訓練樣本),并同時提供了它們的標準答案,計算機努力調(diào)整自己的模型參數(shù),希望自己推測的答案與標準答案越一致越好,使計算機學會怎么做這類題。然后再讓計算機去幫我們做沒有提供答案的選擇題(測試樣本)。
無監(jiān)督學習(unsupervised learning):實現(xiàn)沒有有標記的、已經(jīng)分類好的樣本,需要我們直接對輸入數(shù)據(jù)集進行建模,例如聚類,最直接的例子就是我們常說的『人以群分,物以類聚』。我們只需要把相似度高的東西放在一起,對于新來的樣本,計算相似度后,按照相似程度進行歸類就好。
通俗的來講,我們給計算機一堆選擇題(訓練樣本),但是不提供標準答案,計算機嘗試分析這些題目之間的關(guān)系,對題目進行分類,計算機也不知道這幾堆題的答案分別是什么,但計算機認為每一個類別內(nèi)的題的答案應該是相同的。
強化學習:所謂強化學習就是智能系統(tǒng)從環(huán)境到行為映射的學習,以使獎勵信號(強化信號)函數(shù)值最大,強化學習不同于連接主義學習中的監(jiān)督學習,主要表現(xiàn)在教師信號上,強化學習中由環(huán)境提供的強化信號是對產(chǎn)生動作的好壞作一種評價(通常為標量信號),而不是告訴強化學習系統(tǒng)RLS(reinforcement learning system)如何去產(chǎn)生正確的動作。
通俗的來講,我們給計算機一堆選擇題(訓練樣本),但是不提供標準答案,計算機嘗試去做這些題,我們作為老師批改計算機做的對不對,對的越多,獎勵越多,則計算機努力調(diào)整自己的模型參數(shù),希望自己推測的答案能夠得到更多的獎勵。不嚴謹?shù)闹v,可以理解為先無監(jiān)督后有監(jiān)督學習。
遷移學習:考慮到大部分數(shù)據(jù)或任務是存在相關(guān)性的,所以通過transfer learning我們可以將已經(jīng)學到的parameter 分享給新模型從而加快并優(yōu)化模型的學習不用像之前那樣learn from zero。把已學訓練好的模型參數(shù)遷移到新的模型來幫助新模型訓練數(shù)據(jù)集。
機器學習應用
語音識別、自動駕駛、語言翻譯、計算機視覺、推薦系統(tǒng)、無人機、識別垃圾郵件
總結(jié)
1、如果說計算機科學是研究關(guān)于“算法”的學問,那么類似的,可以說機器學習是研究關(guān)于“學習算法”的學問。
2、機器學習的本質(zhì)是構(gòu)建起輸入和輸出之間的關(guān)系模型,并利用這個關(guān)系模型來解決未知的情況。
3、機器學習的學習過程是對數(shù)據(jù)集的泛化過程。
4、并沒有絕對好的機器學習算法,脫離具體問題,空泛地談論“什么學習算法更好”毫無意義,因為若考慮所有潛在的問題,則所有的算法都一樣好。
5、針對具體問題選擇具體的算法和歸納偏好才是正確的做法。