1. 程式人生 > >機器學習遊記(一)

機器學習遊記(一)

apple 機器學習 人類 規律 orm 訓練 border -h 方程式

機器學習是目前信息技術中最激動人心的方向之一,其應用已經深入到生活的各個層面且與普通人的日常生活密切相關.

一.定義

正如我們人類根據過去的經驗來判斷明天的天氣,購買適合自己的東西,做出有效的預判,那能不能讓計算機幫助人類來實現這個呢?

機器學習正式這樣一門學科,它致力於研究如何通過計算的手段,利用經驗來改善系統自身的性能。在計算機系統中,“經驗”通常以“數據”形式存在,因此,機器學習所涉及的主要內容是關於在計算機上從數據中產生”模型“(model)的算法,即”學習算法“(learning algorithm)。有了學習算法,我們把經驗數據提供給它,它就能基於這些數據產生模型;在面對新的情況時,模型會給我們提供相應的判斷,如果說計算機科學是研究關於”算法“的學問,那麽機器學習是研究關於”學習算法“的學問。

機器學習教父Mitchell給出了一個形式化的定義,假設:

  • P:計算機程序在某任務類T上的性能。
  • T:計算機程序希望實現的任務類。
  • E:表示經驗,即歷史的數據集。

若該計算機程序通過利用經驗E在任務T上獲得了性能P的改善,則稱該程序對E進行了學習。

二.基本術語

要進行機器學習,先要有數據。當下正值炎炎夏日,祛暑良品西瓜給我們帶來絲絲清涼。假定我們收集了一批關於西瓜的數據,例如(色澤=青綠;根蒂=蜷縮;敲聲=濁響),(色澤=烏黑;根蒂=稍蜷;敲聲=沈悶),(色澤=淺白;根蒂=硬挺;敲聲=清脆),.......,每對括號內是一條記錄,“=”意思是“取值為”。

這組記錄的集合稱為一個"數據集" (data set) ,其中每條記錄是關於一個事件或對象(這裏是一個西瓜)的描述,稱為一個"示例" (instance) 或"樣本" (sample)。 反映事件或對象在某方面的表現或性質的事項,例如"色澤"、"根蒂"、 "敲聲",稱為"屬性" (attribute) 或"特征" (feature);屬性上的取值,例如"青綠"、 "烏黑",稱為"屬性值" (attribute value)。屬性張成的空間稱為"屬性空間" (attribute space) 、"樣本空間" (sample space) 或"輸入空間"。例如我們把"色澤" 、"根蒂"、 "敲聲"作為三個坐標軸,則它們張成一個用於描述西瓜的三維空間,每個西瓜都可在這個空間中找到自己的坐標位置。由於空間中的每個點對應一個坐標向量,因此我們也把一個示例稱為一個"特征向量" (feature vector)。

從數據中學得模型的過程稱為"學習" (learning) 或"訓練" (training),這個過程通過執行某個學習算法來完成.訓練過程中使用的數據稱為"訓練數據" (training data) ,其中每個樣本稱為一個“訓練樣本" (training sample),訓練樣本組成的集合稱為"訓練集" (training set). 學得模型對應了關於數據的某種潛在的規律,因此亦稱"假設" (hypothesis);這種潛在規律自身,則稱為"真相"或"真實" (ground-truth) ,學習過程就是為了找出或逼近真相。

如果希望學得一個能幫助我們判斷沒剖開的是不是"好瓜"的模型,僅有前面的示例數據顯然是不夠的。要建立這樣的關於"預測" (prediction)模型,我們需獲得訓練樣本的"結果"信息,例如" ((色澤:青綠;根蒂二蜷縮;敲聲=濁響),好瓜)" .這裏關於示例結果的信息,例如"好瓜",稱為"標記" (label); 擁有了標記信息的示例,則稱為"樣例" (example). 若我們欲預測的是離散值,例如"好瓜" "壞瓜",此類學習任務稱為"分類" (classification); 若欲預測的是連續值?例如西瓜成熟度 0.95 0.37此類學習任務稱為"回歸" (regression). 對只涉及兩個類別的"二分類" (binary cl sification) 任務,通常稱其中一個類為 "?類" (positive cl甜的?另一個類為"反類" (negative class); 涉及多個類別時,則稱為"多分類" (multi-class classificatio叫任務。學得模型後,使用其進行預測的過程稱為"測試" (testing) ,被預測的樣本稱為“測試樣本" (testing sample). 例如在學得 f後,對測試例x,可得到其預測標記y= f(x)。還可以對西瓜做"聚類" (clustering) ,即將訓練集中的西瓜分成若幹組,每組稱為 個"簇" (cluster); 這些自動形成的簇可能對應一些潛在的概念劃分,例如"淺色瓜" "深色瓜”,甚至“本地瓜”、“外地瓜”。這樣的學習過程有助於我們了解數據內在的規律?能為更深入地分析數據建立基礎.需說明的是,在聚類學習中,"淺色瓜" "本地瓜"這樣的概念我們事先是不知道的,而且學習過程中使用的訓練樣本通常不擁有標記信息。根據訓練數據是否擁有標記信息,學習任務可大致劃分為兩大類"監督學習" (supervised learning) 和"無監督學習" (unsupervised learning) ,分類和回歸是前者的代表,而聚類則是後者的代表。

需註意的是,機器學習的目標是使學得的模型能很好地適用於"新樣本",而不是僅僅在訓練樣本上工作得很好;即便對聚類這樣的無監督學習任務,我們也希望學得的簇劃分能適用於沒在訓練集中出現的樣本.學得模型適用於新樣本的能力,稱為"泛化" (generalization) 能力.具有強泛化能力的模型能很好地適用於整個樣本空間.於是,盡管訓練集通常只是樣本需間的一個很小的采樣,我們仍希望它能很好地反映出樣本空間的特性,否則就很難期望在訓練集上學得的模型能在整個樣本空間上都工作得很好.通常假設樣本空間中全體樣本服從 個未知"分布" (distribution)D, 我們獲得的每個樣本都是獨立地從這個分布上采樣獲得的,即"獨立同分布" (independent and identically distributed ,簡稱 i.i.d.). 一般而言,訓練樣本越多,我們得到的關於D的信息越多,這樣就越有可能通過學習獲得具有強泛化能力的模型。

三.假設空間

歸納(induction) 與橫繹(deduction)是科學推理的兩大基本手段。前者是從特殊到一般的"泛化" (generalization) 過程,即從具體的事實歸結出一般性規律;後者則是從一般到特殊的"特化" (specializatio叫過程,即從基礎原理推演出具體狀況。例如,在數學公理系鏡中,基於一組公理和推理規則推導出與之相洽的定理,這是演繹;而"從樣例中學習"顯然是一個歸納的過程?因此亦稱"歸納學習" (inductive learning) 。歸納學習有狹義與廣義之分?廣義的歸納學習大體相當於從樣例中學習,而狹義的歸納學習則要求從訓練數據中學得概念(concept) ,因此亦稱為"概念學習"或"概念形成"概念學習技術目前研究、應用都比較少,因為要學得泛化性能好且語義明確的概念實在太困難了,現實常用的技術大多是產生"黑箱"模型.然而,對概念學習有所了解,有助於理解機器學習的一些基礎思想。

概念學習中最基本的是布爾概念學習,即對"是"、 "不是"這樣的可表示為0/1 布爾值的目標概念的學習。舉一個簡單的例子,假定我們獲得了這樣一個訓練數據集(表1):

技術分享圖片

這裏要學習的目標是"好瓜"暫且假設"好瓜"可由"色澤" "根蒂""敲聲"這三個因素完全確定。換言之,只要某個瓜的這三蘭個屬性取值明確了?我們就能判斷出它是不是好瓜.於是?我們學得的將是"好瓜是某種色澤、某種根蒂、某種敲聲的瓜"這樣的概念‘用布爾表達式寫出來則是"好瓜忡(色=?η) 八(根蒂=7η) ^ (敲聲=?)",這裏”?“表示尚未確定的取值,而我們的任務就是通過對表1的訓練集進行學習,把”?“確定下來。

可能馬上發現,表1 第一行: " (色澤=青綠)八(根蒂:蜷縮)八(敲聲=濁響)"不就是好瓜嗎?是的,但這是一個己見過的瓜,別忘了我們學習的目的是"泛化"?即通過對訓練集中瓜的學習以獲得對沒見過的瓜進行判斷的能力.如果僅僅把訓練集中的瓜"記住",今後再見到一模一樣的瓜當然可判斷,但是,對沒見過的瓜,例如"(色澤=淺白) ^ (根蒂=蜷縮) ^ (敲聲=濁晌)"怎麽辦呢?

我們可以把學習過程看作一個在所有假設(hypothesis) 組成的空間中進行搜索的過程,搜索目標是找到與訓練集"匹配"但t) 的假設,即能夠將訓練集中的瓜判斷正確的假設.假設的表示一旦確定,假設空間及其規模大小就確定了.這裏我們的假設空間由形如"(色澤=?)八(根蒂=?) ^ (敲聲=?)"的可能取值所形成的假設組成.例如色澤有"青綠" "烏黑" "淺白"這三種可能取值;還需考慮到,也許"色澤"無論取什麽值都合適,我們用通配符"*"來表示,例如"好瓜件(色澤= *) ^ (根蒂口蜷縮)八(敲聲=濁響)" ,即"好瓜是根蒂蜷縮、敲聲濁響的瓜,什麽色澤都行"此外,還需考慮極端情況:有可能"好瓜"這個概念根本就不成立,世界上沒有"好瓜"這種東西;我們用 表示這個假設.這樣,若"色澤" "根蒂" "敲聲"分別有 種可能取值,則我們面臨的假設空間規模大小為 x 3 x 3 + 1 = 37. 圖1. 直觀地顯示出了這個西瓜問題假設空間。

技術分享圖片

可以有許多策略對這個假設空間進行搜索,例如自頂向下、從一般到特殊,或是自底向上、從特殊到一般,搜索過程中可以不斷刪除與正例不一致的假設、和(或)與反例→致的假設.最終將會獲得與訓練集一致(即對所有訓練樣本能夠進行正確判斷)的假設,這就是我們學得的結果。需註意的是,現實問題中我們常面臨很大的假設空間?但學習過程是基於有限樣本訓練集進行的,因此,可能有多個假設與訓練集一致,即存在著一個與訓練集一致的"假設集合",我們稱之為"版本空間" (version space). 例如,在西瓜問題中,與表1. 訓練集所對應的版本空間如圖1. 所示.

技術分享圖片

三.假設空間

通過學習得到的模型對應了假設空間中的一個假設.於是,圖1. 的西瓜版本空間給我們帶來一個麻煩:現在有三個與訓練集一致的假設,但與它們對應的模型在面臨新樣本的時候,卻會產生不同的輸出.例如,對(色澤口青綠;根蒂=蜷縮;敲聲=沈悶)這個新收來的瓜,如果我們采用的是"好瓜村(色澤= *)八(根蒂=蜷縮)八(敲聲=*)",那麽將會把新瓜判斷為好瓜,而如果采用了另外兩個假設,則判斷的結果將不是好瓜.那麽,應該采用哪一個模型(或假設)昵?

若僅有表1. 中的訓練樣本,則無法斷定上述三三三個假設中明哪一個"更好然而,對於一個具體的學習算法而言?它必須要產生一個模型.這時,學習算法本身的"偏好"就會起到關鍵的作用.例如,若我們的算法喜歡"盡可能特殊"的模型,則它會選擇"好瓜件(色澤= *)八(根蒂=蜷縮)八(敲聲=濁晌)" ; 但若我們的算法喜歡"盡可能一般"的模型,並且由於某種原因它更"相信"根蒂,則它會選擇"好瓜件(色澤= *) ^ (根蒂=蜷縮)八(敲聲= *)" .機器學習算法在學習過程中對某種類型假設的偏好,稱為"歸納偏好" (inductive bias) , 或簡稱為"偏好"。

任何一個有效的機器學習算法必有其歸納偏好,否則它將被假設空間中看似在訓練集上"等效"的假設所迷惑,而無法產生確定的學習結果.可以想象,如果沒有偏好,我們的西瓜學習算法產生的模型每次在進行預測時隨機抽選訓練集上的等效假設,那麽對這個新瓜"(色澤=青綠;根蒂口蜷縮;敲聲=沈悶)" ,學得模型時而告訴我們它是好的、時而告訴我們它是不好的,這樣的學習結果顯然沒有意義.

歸納偏好的作用在圖1. 這個回歸學習圖示中可能更直觀.這裏的每個訓練樣本是因中的一個點 (x y) 要學得一個與訓練集一致的模型,相當於找到一條穿過所有訓練樣本點的曲線.顯然,對有限個樣本點組成的訓練集,存在著很多條曲線與其一致.我們的學習算法必須有某種偏好,才能產出它認為"正確"的模型.例如,若認為相似的樣本應有相似的輸出(例如,在各種屬性上都很相像的西瓜,成熟程度應該比較接近),則對應的學習算法可能偏好圖1.比較"平滑"的曲線 而不是比較"崎嶇"的曲線

技術分享圖片

歸納偏好可看作學習算法自身在一個可能很龐大的假設空間中對假設進行選擇的啟發式或"價值觀"那麽,有沒有一般性的原則來引導算法確立"正確的"偏好呢? "奧卡姆剃刀" (Occam‘s razor) 是一種常用的、自然科學研究中最基本的原則,即"若有多個假設與觀察一致,則選最簡單的那個"如果采用這個原則,並且假設我們認為"更平滑"意味著"更簡單" (例如曲線更易於描述,其方程式是 = _X2 + 6x + ,而曲線 則要復雜得多) ,則在圖1. 中我們會自然地偏好"平滑"的曲線 A.

然而,奧卡姆剃刀並非唯一可行的原則.退一步說,即使假定我們是奧卡姆剃刀的鐵桿擁走,也需註意到,奧卡姆剃刀本身存在不同的詮釋,使用奧卡姆剃刀原則並不平凡.例如對我們已經很熟悉的西瓜問題來說,"假設 1: 好瓜件(色澤= *) ^ (根蒂=蜷縮)八(敲聲=濁響)"和假設 2: "好瓜件(色澤= *) ^ (根蒂=蜷縮)八(敲聲= *)"這兩個假設,哪一個更"簡單"呢?這個問題並不簡單,需借助其他機制才能解決.

事實上,歸納偏好對應了學習算法本身所做出的關於"什麽樣的模型更好"的假設.在具體的現實問題中,這個假設是否成立,即算法的歸納偏好是否與問題本身匹配,大多數時候直接決定了算法能否取得好的性能.

讓我們再回頭看看圖1.3. 假設學習算法 Zα 基於某種歸納偏好產生了對應於曲線 的模型,學習算法 ~b 基於另一種歸納偏好產生了對應於曲線 的模型.基於前面討論的平滑曲線的某種"描述簡單性"?我們滿懷信心地期待算法烏比島更好.確實,圖1.4(a) 顯示出?與 相比, 與訓練集外的樣本更一致;換言之, 的泛化能力比 強.

技術分享圖片

但是,且慢!雖然我們希望並相信烏比馬更好,但會不會出現圖1.4(b)情況:與 相比, 與訓練集外的樣本更一致?

很遺憾,這種情況完全可能出現.換言之,對於一個學習算法鳥,若它在某些問題上比學習算法島好,則必然存在另一些問題,在那裏島比 2α 好.有趣的是,這個結論對任何算法均成立,哪怕是把本書後面將要介紹的一些聰明算法作為烏而將"隨機胡猜"這樣的笨拙算法作為烏.驚訝嗎?讓我們看看下面這個簡短的討論:

為簡單起見,假設樣本空間 和假設空間組都是離散的.令 P(hIX,‘ca)代表算法烏基於訓練數據 產生假設 的概率,再令 代表我們希望學習的真實目標函數 ‘c 的"訓練集外誤差",即鳥在訓練、集之外的所有樣本上的誤差為

技術分享圖片

考慮二分類問題,且真實目標函數可以是任何函數 {O l} ,函數空間{O l}IXI. 對所有可能的 按均勻分布對誤差求和,有

技術分享圖片

式(1. 2) 顯示出,總誤差竟然與學習算法無關!對於任意兩個學習算法烏和鳥,我們都有

技術分享圖片

也就是說,無論學習算法烏多聰明、學習算法鳥多笨拙,它們的期望性能竟然相同!這就是"沒有免費的午餐"定理

既然所有學習算法的期望性能都跟隨機胡猜差不多,那還有什麽好學的?

我們需註意到, NFL 定理有一個重要前提:所有"問題"出現的機會相同、或所有問題同等重要.但實際情形並不是這樣.很多時候,我們只關註自己正在試圖解決的問題(例如某個具體應用任務),希望為它找到一個解決方案,至於這個解決方案在別的問題、甚至在相似的問題上是否為好方案,我們並不關心.例如,為了快速從 地到達 地,如果我們正在考慮的 地是南京鼓·樓、 地是南京新街口,那麽"騎自行車"是很好的解決方案;這個方案對地是南京鼓樓、 地是北京新街口的情形顯然很糟糕,但我們對此並不關心.

事實上,上面 NFL 定理的簡短論述過程中假設了 的均勻分布,而實際情形並非如此.例如,回到我們熟悉的西瓜問題,考慮{假設 1: 好瓜件(色澤= *) 八(根蒂=蜷縮)八(敲聲=濁響)}和{假設 2: 好瓜村(色澤= *) ^ (根蒂=硬挺)^ (敲聲:清脆)}.從 NFL 定理可知,這兩個假設同樣好.我們立即會想到符合條件的例子,對好瓜(色澤=青綠;娘蒂=蜷縮;敲聲=濁響)是假設 更好,而對好瓜(色澤=烏黑;根蒂=硬挺;敲聲=清脆)則是假設 更好.看上去的確是這樣.然而需註意到, " (根蒂=蜷縮;敲聲=濁晌)"的好瓜很常見,而"(根蒂:硬挺;敲聲 清脆)"的好瓜罕見,甚至不存在。

所以, NFL 走理最重要的寓意?是讓我們清楚地認識到,脫離具體問題,空泛地談論"什麽學習算法更好"毫無意義,因為若考慮所有潛在的問題,貝。所有學習算法都一樣好.要談論算法的相對優劣,必須要針對具體的學習問題;在某些問題上表現好的學習算法,在另一些問題上卻可能不盡如人意,學習算法自身的歸納偏好與問題是否相配,往往會起到決定性的作用。

機器學習遊記(一)