0
本文作者: 汪思穎 | 2017-09-30 17:37 |
雷鋒網(wǎng) AI科技評論按,本文作者Frankenstein,首發(fā)于知乎專欄閑敲棋子落燈花,雷鋒網(wǎng) AI科技評論獲其授權(quán)轉(zhuǎn)載。
關(guān)鍵詞:有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、強化學(xué)習(xí)、回歸、分類、誤差函數(shù)、泛化、正則化、超參數(shù)、驗證集。
序言
從去年5月入坑以來,線上線下都上過機器學(xué)習(xí)的課(線上是看了Coursera的課入門,線下上了DS-GA 1003 Machine Learning and Computational Statistics),但從沒有完整讀過一本書。
暑假和小伙伴們約好一起讀Pattern Recognition and Machine Learning(模式識別與機器學(xué)習(xí),下簡稱PRML)。初步打算每周讀一章,大家輪流主講。開了專欄以后一直沒寫過東西,第一部分內(nèi)容就準備貢獻給PRML了。
可能有用的鏈接:
Christopher Bishop at Microsoft Research (https://www.microsoft.com/en-us/research/people/cmbishop/)在這里可以找到部分章節(jié)的PPT、書的勘誤、部分答案。
PRML/PRMLT (https://github.com/PRML/PRMLT)陳默(他也上知乎,沒關(guān)注的可以關(guān)注一發(fā))用MATLAB給出了書里的所有模型實現(xiàn)。
scikit-learn/scikit-learn (https://github.com/scikit-learn/scikit-learn)視情況我可能會給出少量代碼,但大部分內(nèi)容還是會更加側(cè)重模型的理論和動機,結(jié)合適當(dāng)?shù)臄?shù)學(xué)推導(dǎo)。如果想要了解一些代碼的實現(xiàn)的話,scikit-learn應(yīng)該還是現(xiàn)在最常用的實現(xiàn),可以考慮學(xué)習(xí)一下它的模型源代碼。
書的完整答案理論上是只對教師開放的,但由于大家都可以想見的原因搜一下就可以搜到了。
華盛頓大學(xué)的Pedro Domingos教授認為機器學(xué)習(xí)有以下幾個門派:
基于邏輯、哲學(xué),出發(fā)點為填補現(xiàn)存知識中空白的符號學(xué)派
基于神經(jīng)科學(xué),出發(fā)點為模擬大腦的聯(lián)結(jié)學(xué)派
基于進化生物學(xué),出發(fā)點為模擬進化的進化學(xué)派
基于統(tǒng)計,出發(fā)點為系統(tǒng)的降低不確定性的貝葉斯學(xué)派
基于心理學(xué),出發(fā)點為發(fā)現(xiàn)新舊事物之間相似度的類推學(xué)派
在這之外還有基于動物學(xué)習(xí)、最優(yōu)控制、動態(tài)規(guī)劃的強化學(xué)習(xí)以及更加接近傳統(tǒng)頻率學(xué)派的期望最大化。Domingos的slides(https://learning.acm.org/webinar_pdfs/PedroDomingos_FTFML_WebinarSlides.pdf)里有更多這方面的內(nèi)容。他的《終極算法--機器學(xué)習(xí)和人工智能如何重塑世界》一書詳細科普了五個學(xué)派,挺有意思的,感興趣的可以去看一下(提醒:翻譯的不怎么樣)。
PRML就是貝葉斯學(xué)派的一本經(jīng)典教科書,從貝葉斯學(xué)派的視角系統(tǒng)梳理了機器學(xué)習(xí)的知識,給人一種萬物皆可貝葉斯化的感覺。
在這一系列筆記里,我希望梳理每一章節(jié)里比較重要的內(nèi)容,并結(jié)合一些我到目前為止對機器學(xué)習(xí)的理解做一些適當(dāng)?shù)耐卣购吞骄?。這些內(nèi)容基本假設(shè)讀者上過一節(jié)機器學(xué)習(xí)入門課,可能不是self-contained的,可能不適合完全不了解的人閱讀,但希望對有一些初步了解的讀者能有幫助,也歡迎大家不吝指正。
如無另外點明,每一講內(nèi)容都有參考PRML,每一講其余的參考內(nèi)容會列在文章末尾。
第一章節(jié)(1. Introduction)內(nèi)容始于多項式曲線擬合的例子,終于信息論。
從機器學(xué)習(xí)里主流的三類問題——有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、強化學(xué)習(xí)的定義開始,Bishop用一個有監(jiān)督學(xué)習(xí)里的回歸問題引出了對誤差函數(shù)、泛化、模型復(fù)雜度、正則化、過擬合、驗證集等核心概念。PRML這本書號稱是self-contained的,只假設(shè)讀者具備多元微積分、線性代數(shù)水準的數(shù)學(xué)能力,因此不嚴格地介紹了概率論里的基本知識以保證讀者具備讀完余下內(nèi)容的基礎(chǔ)知識。當(dāng)然還是存在一些小的問題,比如隨機變量到底是什么?誤差條又是什么?當(dāng)然瑕不掩瑜,在大部分情況下,本書很好展現(xiàn)了方法和問題的動機。
正文
1. Introduction
機器學(xué)習(xí)問題可以做如下分類:
有監(jiān)督學(xué)習(xí)(supervised learning): Applications in which the training data comprises examples of the input vectors along with their corresponding target vectors.
分類(classification): to assign each input vector to one of finite number of discrete categories.
例子:識別手寫數(shù)字并將其標(biāo)記為0~9這10個數(shù)字中的一個。
回歸(regression): the desired output consists of one or more continuous variables.
例子:基于反應(yīng)物、溫度、壓力預(yù)測化學(xué)制造過程的產(chǎn)出。
無監(jiān)督學(xué)習(xí)(unsupervised learning): Pattern recognition problems in which the training data consists of a set of input vectors without any corresponding target values.
聚類(clustering): to discover groups of similar examples within the data
密度估計(density estimation): to determine the distribution of data within the input space
降維(dimensionality reduction): to project the data from a high-dimensional space down to two or three dimensions
數(shù)據(jù)點/樣本生成(data point/sample generation): to obtain new samples from the probability distribution that is close to the underlying probability distribution of the data points/samples
強化學(xué)習(xí)(reinforcement learning): Problems about finding suitable actions to take in a given situation in order to maximize a reward, where optimal outputs are unknown.
例子:Play the game of backgammon to a high standard with a neural network using appropriate reinforcement learning techniques (Tesauro, 1994). (這可能是深度強化學(xué)習(xí)最早成功的案例之一了。)
上面的案例也可作為credit assignment的一個例子。具體地說,在一局游戲結(jié)束后,勝利或失敗被以某種形式歸因于游戲中采取的所有行動。個人認為這里credit assignment是指在一個episodic task結(jié)束后,如何恰當(dāng)?shù)慕o特定行動,或者在某個特定狀態(tài)采取特定行動賦予合適的reward。
這里也有提到explore v.s. exploit和trial and error的思想。但總的來說因為本書基本沒怎么觸及強化學(xué)習(xí),講的不是特別好。如果要比較好了解強化學(xué)習(xí)的話還是應(yīng)該看Sutton & Barto (http://incompleteideas.net/sutton/book/bookdraft2016sep.pdf)那本書。
本章主要介紹了一些最重要的概念和一些簡單的例子。在這之中包括將貫穿全書的三個工具:概率論、決策論以及信息論。
1.1 Example: Polynomial Curve Fitting
Example/Motivation: (a simple regression problem)
Given a real-valued target variable t, we wish to use this observation to predict the value of a real-valued target variable t. In particular, given N observations of x written as together with corresponding observations of t written as
, can we fit the data so that we can make predictions of the value
of the target variable for some new value
of the input variable?
這是一個典型的二維回歸問題。上過Andrew Ng Coursera 公開課的朋友們應(yīng)該還記得一上來遇到的那個給定住宅面積預(yù)測住宅價格的問題。Bishop這里給的訓(xùn)練數(shù)據(jù)則是 在
個均勻分布點上的取值加以基于同一高斯分布產(chǎn)生的隨機噪聲。如下圖是
時的情況。
首先我們考慮用一個階多項式擬合數(shù)據(jù),
,
(1.1)
是一個關(guān)于
的線性方程。
定義:關(guān)于未知參數(shù)的線性方程被稱為線性模型(linear models)。
我們基于訓(xùn)練數(shù)據(jù)決定的取值,一個潛在的假設(shè)是我們需要預(yù)測的
和訓(xùn)練數(shù)據(jù)來自同一分布或兩者分布非常接近,否則就沒有意義了。
a. 誤差函數(shù)
怎樣的 取值是好的呢?我們需要一把尺子來度量,這就是誤差函數(shù)(error function)。通過累加每一個訓(xùn)練數(shù)據(jù)的預(yù)測目標(biāo)變量
相對真實目標(biāo)變量
的偏移程度,誤差函數(shù)負責(zé)衡量訓(xùn)練好的模型,即
和訓(xùn)練數(shù)據(jù)分布之間的相似程度,其取值一般為非負。誤差函數(shù)的值越大,對于訓(xùn)練數(shù)據(jù)而言模型越糟。
例子:(平方誤差函數(shù))
很自然地,在回歸問題中,當(dāng)模型完美擬合訓(xùn)練數(shù)據(jù)時,誤差一般會降到0。但值得注意的是在分類問題中,即便分類完美無缺誤差也可能不為0。
以下圖為例,我們有一個二元分類問題。在二維平面上有一個紅色類和一個藍色類。假設(shè)我們想用一條直線(在第二講里我們會提到,它們被稱為決策邊界)來把它們分開。圖中同樣①和②都完美進行了分類,但我們會更希望模型訓(xùn)練得到的是①而不是②因為①離兩個類最短距離之和要大于②。直覺來說當(dāng)我們有更多數(shù)據(jù)樣本而不只是眼前6個的時候①成功的可能性更高。這個問題的正式名稱是泛化,我們在后面會提到。因此我們可能設(shè)計一個誤差函數(shù)使得②的誤差高于①。因此同樣①、②在數(shù)據(jù)上都能沒有錯誤地進行分類,②的誤差可能仍然不為0。
訓(xùn)練模型的過程中,我們希望調(diào)整 來減少誤差函數(shù)的值,可以說是面向減少誤差建模,故用
來表示誤差的值。
對于某些誤差函數(shù)(涉及函數(shù)的convexity,凸性),如平方誤差,我們可以通過對表達式關(guān)于未知參數(shù)(如之于
)進行求導(dǎo),令求導(dǎo)后的表達式等于0來得到最優(yōu)參數(shù)
,這樣得到的參數(shù)有閉型(有限次常見運算組合給出的表達式)。
b. 由泛化而來的模型選擇問題
現(xiàn)在我們知道了對于一個給定的正整數(shù)M,如何擬合訓(xùn)練數(shù)據(jù)。一個接踵而來的問題是我們要如何決定M的取值。
考慮的四種情況,對于每一種情況,我們都基于平方誤差找到擬合訓(xùn)練數(shù)據(jù)最好的多項式,如下圖。紅線為多項式圖形,綠線為
的圖形。
由上圖可知,越大,多項式擬合數(shù)據(jù)的能力越強。當(dāng)
時,多項式甚至完美擬合了所有數(shù)據(jù)。然而我們從形狀上可以發(fā)現(xiàn)此時多項式的形狀與
相去甚遠??梢灶A(yù)見當(dāng)我們在
上取新的數(shù)據(jù)點的話,多項式很難較好擬合這些新的數(shù)據(jù)點。相較之下,
時我們得到的多項式形狀則相當(dāng)接近
的形狀。像
時我們得到的模型這樣能很好擬合訓(xùn)練數(shù)據(jù)卻對于從同一概率分布得到的新數(shù)據(jù)擬合能力極差的情況,被稱為過擬合。像
時這樣模型連訓(xùn)練數(shù)據(jù)都無法很好擬合的情況被稱為欠擬合。
回到問題的出發(fā)點,我們希望訓(xùn)練出的模型能盡可能學(xué)習(xí)到數(shù)據(jù)的原始分布(或者不妨稱之為數(shù)據(jù)的生成器),使得模型能精準預(yù)測來自該分布的新數(shù)據(jù)。模型不光需要在訓(xùn)練數(shù)據(jù)上有好的表現(xiàn),在新的數(shù)據(jù)上也應(yīng)如此。正確預(yù)測新數(shù)據(jù)標(biāo)簽(即里的
)的能力被稱為泛化。
由此,我們可以提出一種衡量模型泛化能力的量化方法。除了訓(xùn)練數(shù)據(jù)外,我們另外取一組測試數(shù)據(jù)。在知道數(shù)據(jù)真實分布的情況下(如例子中的),我們直接從數(shù)據(jù)分布里采集新的數(shù)據(jù)點。否則我們可以預(yù)先把手頭的數(shù)據(jù)集劃分成訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。在訓(xùn)練模型(擬合訓(xùn)練數(shù)據(jù))的過程中,擬合僅僅基于訓(xùn)練數(shù)據(jù)。在訓(xùn)練完后,我們用測試數(shù)據(jù)檢測模型的泛化能力,計算誤差函數(shù)的數(shù)值。
當(dāng)我們用這一方法應(yīng)用到多項式模型上時,我們會發(fā)現(xiàn)時模型在測試數(shù)據(jù)上的表現(xiàn)相比
時所有模型的表現(xiàn)都要糟糕的多。回到式1.1,當(dāng)
時,考慮標(biāo)量的話,我們有十個未知參數(shù)
。當(dāng)我們有十個線性獨立的數(shù)據(jù)點時,我們可以精確得到每個未知參數(shù)的唯一解,因而得到的多項式模型完全依賴于訓(xùn)練數(shù)據(jù)點。事實上我們應(yīng)該可以通過插值法得到近乎完全一樣(考慮到可能存在數(shù)值誤差)的多項式。我們注意到
時多項式對訓(xùn)練數(shù)據(jù)的擬合其實已經(jīng)相當(dāng)不錯了。一個由此而生的想法是在數(shù)據(jù)擬合改進有限的情況下,我們應(yīng)該盡可能選擇簡單的模型,在多項式模型里就是選擇盡可能小的
。上述原則也可以被概括為“如無必要,勿增實體”,即是著名的奧卡姆剃刀原理。當(dāng)然不同人對于這個問題可能存在不同看法(https://www.quora.com/Does-Occams-Razor-apply-in-machine-learning)。有人就認為我們在考慮泛化能力的前提下還是要盡可能選擇復(fù)雜的模型從而盡可能避免關(guān)于數(shù)據(jù)分布信息的丟失。
對于某一特定模型,避免過擬合還有一種方法是使用盡可能多的訓(xùn)練數(shù)據(jù)。同樣在的情況下,當(dāng)我們?nèi)?5個數(shù)據(jù)點乃至100個數(shù)據(jù)點時,隨著訓(xùn)練數(shù)據(jù)集越來越大,我們曲線擬合的結(jié)果也越來越好。
在這100個數(shù)據(jù)點上,時得到的模型很可能不如
來得好。通常數(shù)據(jù)集越大,我們所能擬合的模型的復(fù)雜程度或表示能力越高,因此得到的模型可能更接近于數(shù)據(jù)的真實分布。一種粗略的機制是訓(xùn)練數(shù)據(jù)的樣本數(shù)量應(yīng)當(dāng)不小于未知參數(shù)數(shù)量的某一固定倍數(shù)(如5倍或10倍)。值得一提的是未知參數(shù)的數(shù)量并不能完全衡量模型的復(fù)雜度,在第三章我們會接觸到更多這方面的內(nèi)容。
c. 正則化(regularization)
動機:復(fù)雜的模型擁有更強的表示能力,有沒有可能在無法隨意增加數(shù)據(jù)集的情況下,避免或改善過擬合的問題呢?
回到之前的回歸問題,當(dāng)時,如果我們具體寫出擬合得到多項式的系數(shù)值的話會發(fā)現(xiàn)系數(shù)的絕對值非常大。系數(shù)越大,模型上下起伏越厲害。而系數(shù)越小,模型的形狀越平滑。我們希望能在擬合訓(xùn)練數(shù)據(jù)程度和模型波動程度之間達成一個平衡,并寄希望于這種平衡能在一定程度上反映出模型對于真實數(shù)據(jù)分布的學(xué)習(xí)程度。我們引入一種叫正則化的方法。
具體地,我們給原本的誤差函數(shù)加上一個正則項,令(或者在更一般的情況下我們考慮
,預(yù)測函數(shù)的復(fù)雜度),
決定了正則項的權(quán)重,
可以看做是一個衡量模型復(fù)雜度的函數(shù)。最常見的
就是
范數(shù)(
-norm),
。上述正則化采取的是Tikhonov形式(form),另外一種正則化的形式是Ivanov形式:
使得
。
一般由交叉驗證(cross validation)決定。
我們定義Tikhonov形式和Ivanov形式等價,如果:
, Ivanov解,
使得
,對于某些
也是一個Tikhonov解:
,
。
反過來,,
使得與
對應(yīng)的Tikhonov解為一個與
對應(yīng)的Ivanov解。
換言之,兩者的解空間相同。
兩種形式是否滿足上述等價的定義要根據(jù)具體的誤差函數(shù)和模型復(fù)雜函數(shù)來決定。
范數(shù)可能是最常見的正則項了:
,
(1.4)。值得注意的是通常我們不選擇把
納入正則項,因為這會導(dǎo)致結(jié)果取決于對目標(biāo)變量/標(biāo)簽的原點的選擇。
加入正則項這樣的技巧在統(tǒng)計里被稱為收縮(shrinkage),因為他們降低了系數(shù)的數(shù)值。在神經(jīng)網(wǎng)絡(luò)里,這種途徑被稱為權(quán)重下降(weight decay)。
在式1.4中,我們選擇了一個二階正則式。當(dāng)為平方誤差函數(shù)時,目標(biāo)函數(shù)為式1.4的回歸問題被稱為ridge regression。如果我們選擇了一個一階正則項,即
時,
代表的回歸問題被稱為lasso(least absolute shrinkage and selection operator) regression,在3.1.4我們會更深入地學(xué)習(xí)這個問題。
d.訓(xùn)練集,驗證集,測試集
我們往往通過超參數(shù)(hyperparameter),一類由我們預(yù)先選擇而不是模型從數(shù)據(jù)習(xí)得的參數(shù),來決定模型的復(fù)雜度(如之前提到的以及
)。我們不應(yīng)該基于測試集(測試數(shù)據(jù)的集合)來決定模型復(fù)雜度,否則模型可能會直接對測試集過擬合,這無異于作弊。同樣由于過擬合的考慮,我們也不能基于訓(xùn)練集(訓(xùn)練數(shù)據(jù)的集合)來選擇超參數(shù)。我們?nèi)∫粋€新的數(shù)據(jù)集,驗證集,來選擇模型超參數(shù)。當(dāng)我們知道數(shù)據(jù)的真實分布時,我們可以直接從分布采集驗證集,否則我們可以把手上的數(shù)據(jù)集分成訓(xùn)練集、驗證集或者訓(xùn)練集、驗證集、測試集。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。