前言
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)特定分支牛郑。我們要想充分理解深度學(xué)習(xí)辜伟,必須對(duì)機(jī)器學(xué)習(xí)的基本原理有深刻的理解侈玄。
大部分機(jī)器學(xué)習(xí)算法都有超參數(shù)(必須在學(xué)習(xí)算法外手動(dòng)設(shè)定)。機(jī)器學(xué)習(xí)本質(zhì)上屬于應(yīng)用統(tǒng)計(jì)學(xué)吟温,其更加強(qiáng)調(diào)使用計(jì)算機(jī)對(duì)復(fù)雜函數(shù)進(jìn)行統(tǒng)計(jì)估計(jì)序仙,而較少強(qiáng)調(diào)圍繞這些函數(shù)證明置信區(qū)間;因此我們會(huì)探討兩種統(tǒng)計(jì)學(xué)的主要方法: 頻率派估計(jì)和貝葉斯推斷鲁豪。同時(shí)潘悼,大部分機(jī)器學(xué)習(xí)算法又可以分成監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)兩類律秃;本文會(huì)介紹這兩類算法定義,并給出每個(gè)類別中一些算法示例治唤。
本章內(nèi)容還會(huì)介紹如何組合不同的算法部分棒动,例如優(yōu)化算法、代價(jià)函數(shù)肝劲、模型和數(shù)據(jù) 集,來建立一個(gè)機(jī)器學(xué)習(xí)算法郭宝。最后辞槐,在 5.11 節(jié)中,我們描述了一些限制傳統(tǒng)機(jī)器學(xué)習(xí)泛化能力的因素粘室。正是這些挑戰(zhàn)推動(dòng)了克服這些障礙的深度學(xué)習(xí)算法的發(fā)展榄檬。
大部分深度學(xué)習(xí)算法都是基于被稱為隨機(jī)梯度下降的算法求解的。
5.1 學(xué)習(xí)算法
機(jī)器學(xué)習(xí)算法是一種能夠從數(shù)據(jù)中學(xué)習(xí)的算法衔统。這里所謂的“學(xué)習(xí)“是指:“如果計(jì)算機(jī)程序在任務(wù) 中的性能(以
衡量)隨著經(jīng)驗(yàn)
而提高鹿榜,則可以說計(jì)算機(jī)程序從經(jīng)驗(yàn)
中學(xué)習(xí)某類任務(wù)
和性能度量
〗蹙簦”-來自
Mitchell
(1997
)
經(jīng)驗(yàn)
舱殿,任務(wù)
和性能度量
的定義范圍非常寬廣,本文不做詳細(xì)解釋险掀。
5.1.1 任務(wù)
從 “任務(wù)” 的相對(duì)正式的定義上說沪袭,學(xué)習(xí)過程本身不能算是任務(wù)。學(xué)習(xí)是我們所謂的獲取完成任務(wù)的能力樟氢。機(jī)器學(xué)習(xí)可以解決很多類型的任務(wù)冈绊,一些非常常見的機(jī)器學(xué)習(xí)任務(wù)列舉如下:
-
分類:在這類任務(wù)中,計(jì)算機(jī)程序需要指定某些輸入屬于
類中的哪一類埠啃,例如圖像分類中的二分類問題死宣,多分類、單標(biāo)簽問題碴开、多分類多標(biāo)簽問題毅该。
-
回歸:在這類任務(wù)中,計(jì)算機(jī)程序需要對(duì)給定輸入預(yù)測數(shù)值潦牛。為了解決這個(gè)任務(wù)鹃骂,學(xué)習(xí)算法需要輸出函數(shù)
。除了返回結(jié)果的形式不一樣外罢绽,這類 問題和分類問題是很像的畏线。
- 機(jī)器翻譯
- 結(jié)構(gòu)化輸出
- 異常檢測
- 合成和采樣
- 去噪
- 密度估計(jì)或概率質(zhì)量函數(shù)估計(jì)
- 輸入缺失分類
- 轉(zhuǎn)錄
- 缺失值填補(bǔ)
5.1.2 性能度量
為了評(píng)估機(jī)器學(xué)習(xí)算法的能力,我們必須設(shè)計(jì)其性能的定量度量良价。通常寝殴,性能度量 特定于系統(tǒng)正在執(zhí)行的任務(wù)
蒿叠。
可以理解為不同的任務(wù)有不同的性能度量。
對(duì)于諸如分類蚣常、缺失輸入分類和轉(zhuǎn)錄任務(wù)市咽,我們通常度量模型的準(zhǔn)確率(accu- racy
)。準(zhǔn)確率是指該模型輸出正確結(jié)果的樣本比率抵蚊。我們也可以通過錯(cuò)誤率(error rate
)得到相同的信息施绎。錯(cuò)誤率是指該模型輸出錯(cuò)誤結(jié)果的樣本比率。
我們使用測試集(test set
)數(shù)據(jù)來評(píng)估系統(tǒng)性能贞绳,將其與訓(xùn)練機(jī)器學(xué)習(xí)系統(tǒng)的訓(xùn)練集數(shù)據(jù)分開谷醉。
值得注意的是,性能度量的選擇或許看上去簡單且客觀冈闭,但是選擇一個(gè)與系統(tǒng)理想表現(xiàn)能對(duì)應(yīng)上的性能度量通常是很難的俱尼。
5.1.3 經(jīng)驗(yàn)
根據(jù)學(xué)習(xí)過程中的不同經(jīng)驗(yàn),機(jī)器學(xué)習(xí)算法可以大致分類為無監(jiān)督(unsuper- vised
)算法和監(jiān)督(supervised
)算法萎攒。
無監(jiān)督學(xué)習(xí)算法(unsupervised learning algorithm
)訓(xùn)練含有很多特征的數(shù)據(jù)集遇八,然后學(xué)習(xí)出這個(gè)數(shù)據(jù)集上有用的結(jié)構(gòu)性質(zhì)。在深度學(xué)習(xí)中耍休,我們通常要學(xué)習(xí)生成數(shù)據(jù)集的整個(gè)概率分布刃永,顯式地,比如密度估計(jì)羊精,或是隱式地揽碘,比如合成或去噪。 還有一些其他類型的無監(jiān)督學(xué)習(xí)任務(wù)园匹,例如聚類雳刺,將數(shù)據(jù)集分成相似樣本的集合。
監(jiān)督學(xué)習(xí)算法(supervised learning algorithm
)也訓(xùn)練含有很多特征的數(shù)據(jù)集裸违,但與無監(jiān)督學(xué)習(xí)算法不同的是數(shù)據(jù)集中的樣本都有一個(gè)標(biāo)簽(label
)或目標(biāo)(target
)掖桦。例如,Iris
數(shù)據(jù)集注明了每個(gè)鳶尾花卉樣本屬于什么品種供汛。監(jiān)督學(xué)習(xí)算法通過研究 Iris
數(shù)據(jù)集枪汪,學(xué)習(xí)如何根據(jù)測量結(jié)果將樣本劃分為三個(gè)不同品種。
半監(jiān)督學(xué)習(xí)算法中怔昨,一部分樣本有監(jiān)督目標(biāo)雀久,另外一部分樣本則沒有。在多實(shí)例學(xué)習(xí)中趁舀,樣本的整個(gè)集合被標(biāo)記為含有或者不含有該類的樣本赖捌,但是集合中單獨(dú)的樣本是沒有標(biāo)記的。
大致說來矮烹,無監(jiān)督學(xué)習(xí)涉及到觀察隨機(jī)向量 的好幾個(gè)樣本越庇,試圖顯式或隱式地學(xué)習(xí)出概率分布
罩锐,或者是該分布一些有意思的性質(zhì); 而監(jiān)督學(xué)習(xí)包含觀察隨機(jī)向量
及其相關(guān)聯(lián)的值或向量
,然后從
預(yù)測
卤唉,通常是估計(jì)
涩惑。術(shù)語監(jiān)督學(xué)習(xí)(
supervised learning
)源自這樣一個(gè)視角,教員或者老師提供目標(biāo) 給機(jī)器學(xué)習(xí)系統(tǒng)桑驱,指導(dǎo)其應(yīng)該做什么竭恬。在無監(jiān)督學(xué)習(xí)中,沒有教員或者老師熬的,算法必須學(xué)會(huì)在沒有指導(dǎo)的情況下理解數(shù)據(jù)痊硕。
無監(jiān)督學(xué)習(xí)和監(jiān)督學(xué)習(xí)并不是嚴(yán)格定義的術(shù)語。它們之間界線通常是模糊的悦析。很多機(jī)器學(xué)習(xí)技術(shù)可以用于這兩個(gè)任務(wù)寿桨。
盡管無監(jiān)督學(xué)習(xí)和監(jiān)督學(xué)習(xí)并非完全沒有交集的正式概念此衅,它們確實(shí)有助于粗略分類我們研究機(jī)器學(xué)習(xí)算法時(shí)遇到的問題强戴。傳統(tǒng)地,人們將回歸挡鞍、分類或者結(jié)構(gòu)化輸出問題稱為監(jiān)督學(xué)習(xí)骑歹。支持其他任務(wù)的密度估計(jì)通常被稱為無監(jiān)督學(xué)習(xí)。
表示數(shù)據(jù)集的常用方法是設(shè)計(jì)矩陣(design matrix
)墨微。
5.1.4 示例: 線性回歸
我們將機(jī)器學(xué)習(xí)算法定義為道媚,通過經(jīng)驗(yàn)以提高計(jì)算機(jī)程序在某些任務(wù)上性能的算法。這個(gè)定義有點(diǎn)抽象翘县。為了使這個(gè)定義更具體點(diǎn)最域,我們展示一個(gè)簡單的機(jī)器學(xué)習(xí)示例: 線性回歸(linear regression
)。
顧名思義锈麸,線性回歸解決回歸問題镀脂。 換句話說,目標(biāo)是構(gòu)建一個(gè)系統(tǒng)忘伞,該系統(tǒng)可以將向量 作為輸入薄翅,并預(yù)測標(biāo)量
作為輸出。在線性回歸的情況下氓奈,輸出是輸入的線性函數(shù)翘魄。令
表示模型預(yù)測值。我們定義輸出為
其中 是參數(shù)(
parameter
)向量舀奶。
參數(shù)是控制系統(tǒng)行為的值暑竟。在這種情況下, 是系數(shù)育勺,會(huì)和特征
相乘之 后全部相加起來光羞。我們可以將
看作是一組決定每個(gè)特征如何影響預(yù)測的權(quán)重 (weight)绩鸣。
通過上述描述,我們可以定義任務(wù) : 通過輸出
從
預(yù)測
纱兑。
我們使用測試集(test set
)來評(píng)估模型性能如何呀闻,將輸入的設(shè)計(jì)矩 陣記作 (test),回歸目標(biāo)向量記作
(test)潜慎。
回歸任務(wù)常用的一種模型性能度量方法是計(jì)算模型在測試集上的 均方誤差(mean squared error
)捡多。如果 (
test
) 表示模型在測試集上的預(yù)測值,那么均方誤差表示為:
直觀上铐炫,當(dāng) =
時(shí)垒手,我們會(huì)發(fā)現(xiàn)誤差降為 0。
圖 5.1 展示了線性回歸算法的使用示例倒信。
5.2 容量科贬、過擬合和欠擬合
機(jī)器學(xué)習(xí)的挑戰(zhàn)主要在于算法如何在測試集(先前未觀測的新輸入數(shù)據(jù))上表現(xiàn)良好,而不只是在訓(xùn)練集上表現(xiàn)良好鳖悠。在測試集(以前未觀察到的輸入)上表現(xiàn)良好的能力稱為泛化(generalization
)榜掌。
我們通常通過在與訓(xùn)練集分開收集的測試集上測量其性能來估計(jì)機(jī)器學(xué)習(xí)模型的泛化誤差。
機(jī)器學(xué)習(xí)算法的兩個(gè)主要挑戰(zhàn)是: 欠擬合(underfitting
)和過擬合(overfitting
)乘综。
- 欠擬合是指模型不能在訓(xùn)練集上獲得足夠低的誤差憎账。
- 而過擬合是指訓(xùn)練誤差和和測試誤差之間的差距太大。
我們可以通過調(diào)整模型的容量(capacity
)卡辰,來控制模型是否偏向于過擬合或者欠擬合胞皱。通俗地講,模型的容量是指其擬合各種函數(shù)的能力九妈。容量低的模型可能很難擬合訓(xùn)練集反砌,容量高的模型可能會(huì)過擬合,因?yàn)橛涀×瞬贿m用于測試集的訓(xùn)練集性質(zhì)萌朱。
一種控制訓(xùn)練算法容量的方法是選擇假設(shè)空間(hypothesis space
)宴树,即允許學(xué)習(xí)算法選擇作為解決方案的一組函數(shù)。例如嚷兔,線性回歸算法將其輸入的所有線性函數(shù)的集合作為其假設(shè)空間森渐。我們可以推廣線性回歸以在其假設(shè)空間中包含多項(xiàng)式,而不僅僅是線性函數(shù)冒晰。這樣做就增加模型的容量同衣。
當(dāng)機(jī)器學(xué)習(xí)算法的容量適合于所執(zhí)行任務(wù)的復(fù)雜度和所提供訓(xùn)練數(shù)據(jù)的數(shù)量時(shí),算法效果通常會(huì)最佳壶运。容量不足的模型不能解決復(fù)雜任務(wù)耐齐。容量高的模型能夠解決復(fù)雜的任務(wù),但是當(dāng)其容量高于任務(wù)所需時(shí),有可能會(huì)過擬合埠况。
圖 5.2 展示了上述原理的使用情況耸携。我們比較了線性,二次和 9
次預(yù)測器擬合真 實(shí)二次函數(shù)的效果辕翰。
統(tǒng)計(jì)學(xué)習(xí)理論提供了量化模型容量的不同方法夺衍。在這些中,最有名的是 Vapnik- Chervonenkis 維度(Vapnik-Chervonenkis dimension, VC)喜命。VC
維度量二元分類 器的容量沟沙。VC
維定義為該分類器能夠分類的訓(xùn)練樣本的最大數(shù)目。假設(shè)存在 個(gè) 不同
點(diǎn)的訓(xùn)練集壁榕,分類器可以任意地標(biāo)記該
個(gè)不同的
點(diǎn)矛紫,
VC
維被定義為 的最大可能值。
因?yàn)榭梢粤炕P偷娜萘颗评铮允沟媒y(tǒng)計(jì)學(xué)習(xí)理論可以進(jìn)行量化預(yù)測颊咬。統(tǒng)計(jì)學(xué)習(xí)理論中最重要的結(jié)論闡述了訓(xùn)練誤差和泛化誤差之間差異的上界隨著模型容量增長而增長,但隨著訓(xùn)練樣本增多而下降 (Vapnik and Chervonenkis, 1971
; Vapnik, 1982
; Blumer et al., 1989
; Vapnik, 1995
)牡辽。這些邊界為機(jī)器學(xué)習(xí)算法可以有效解決問題提供了理論 驗(yàn)證喳篇,但是它們很少應(yīng)用于實(shí)際中的深度學(xué)習(xí)算法。一部分原因是邊界太松催享,另一部分原因是很難確定深度學(xué)習(xí)算法的容量杭隙。由于有效容量受限于優(yōu)化算法的能力哟绊,所以確定深度學(xué)習(xí)模型容量的問題特別困難因妙。而且我們對(duì)深度學(xué)習(xí)中涉及的非常普遍的非凸優(yōu)化問題的理論了解很少。
雖然更簡單的函數(shù)更可能泛化(訓(xùn)練誤差和測試誤差的差距小)票髓,但我們?nèi)匀槐仨氝x擇一個(gè)足夠復(fù)雜的假設(shè)來實(shí)現(xiàn)低訓(xùn)練誤差攀涵。通常,隨著模型容量的增加洽沟,訓(xùn)練誤差會(huì)減小以故,直到它逐漸接近最小可能的誤差值(假設(shè)誤差度量具有最小值)。通常裆操,泛化誤差是一個(gè)關(guān)于模型容量的 U 形曲線函數(shù)怒详。如下圖 5.3
所示。
5.2.1 沒有免費(fèi)午餐定理
機(jī)器學(xué)習(xí)的沒有免費(fèi)午餐定理(Wolpert踪区,1996
)指出昆烁,對(duì)所有可能的數(shù)據(jù)生成分布進(jìn)行平均,每個(gè)分類算法在對(duì)以前未觀察到的點(diǎn)進(jìn)行分類時(shí)具有相同的錯(cuò)誤率缎岗。換句話說静尼,在某種意義上,沒有任何機(jī)器學(xué)習(xí)算法普遍優(yōu)于其他任何算法。
上述這個(gè)結(jié)論聽著真的讓人傷感鼠渺,但慶幸的是鸭巴,這些結(jié)論僅在我們考慮所有可能的數(shù)據(jù)生成分布時(shí)才成立。如果我們對(duì)實(shí)際應(yīng)用中遇到的概率分布類型做出假設(shè)拦盹,那么我們可以設(shè)計(jì)出在這些分布上表現(xiàn)良好的學(xué)習(xí)算法鹃祖。
這意味著機(jī)器學(xué)習(xí)研究的目標(biāo)不是找一個(gè)通用學(xué)習(xí)算法或是絕對(duì)最好的學(xué)習(xí)算法。反之普舆,我們的目標(biāo)是理解什么樣的分布與人工智能獲取經(jīng)驗(yàn)的 “真實(shí)世界” 相關(guān)惯豆,什么樣的學(xué)習(xí)算法在我們關(guān)注的數(shù)據(jù)生成分布上效果最好。
總結(jié):沒有免費(fèi)午餐定理清楚地闡述了沒有最優(yōu)的學(xué)習(xí)算法奔害,即暗示我們必須在特定任務(wù)上設(shè)計(jì)性能良好的機(jī)器學(xué)習(xí)算法楷兽。
5.2.2 正則化
算法的效果不僅很大程度上受影響于假設(shè)空間的函數(shù)數(shù)量,也取決于這些函數(shù)的具體形式华临。
在假設(shè)空間中芯杀,相比于某一個(gè)學(xué)習(xí)算法,我們可能更偏好另一個(gè)學(xué)習(xí)算法雅潭。這 意味著兩個(gè)函數(shù)都是符合條件的揭厚,但是我們更偏好其中一個(gè)。只有非偏好函數(shù)比偏好函數(shù)在訓(xùn)練數(shù)據(jù)集上效果明顯好很多時(shí)扶供,我們才會(huì)考慮非偏好函數(shù)筛圆。
我們可以加入權(quán)重衰減(weight decay
)來修改線性回歸的訓(xùn)練標(biāo)準(zhǔn)。新的代價(jià)函數(shù) 定義如下:
是超參數(shù)椿浓,需提前設(shè)置太援,其控制我們對(duì)較小權(quán)重的偏好強(qiáng)度。當(dāng)
扳碍,我們沒有任何偏好提岔。
越大,則權(quán)重越小笋敞。最小化
會(huì)導(dǎo)致權(quán)重的選擇在擬合訓(xùn)練數(shù)據(jù)和較小權(quán)重之間進(jìn)行權(quán)衡碱蒙。
簡單來說,就是給代價(jià)函數(shù)添加正則化項(xiàng)(regularizer)
的懲罰夯巷,即正則化一個(gè)學(xué)習(xí)函數(shù)為 的模型赛惩。上述權(quán)重衰減的例子中,正則化項(xiàng)是
趁餐。 在后續(xù)的第七章喷兼,我們將學(xué)習(xí)其他的正則化項(xiàng)。
我們將正則化定義為“對(duì)學(xué)習(xí)算法的修改-旨在減少泛化誤差而不是訓(xùn)練誤差”澎怒。正則化是機(jī)器學(xué)習(xí)領(lǐng)域的中心問題之一褒搔,只有優(yōu)化能夠與其重要性相媲阶牍。
和沒有最優(yōu)的學(xué)習(xí)算法一樣,特別地星瘾,也沒有最優(yōu)的正則化形式走孽。反之,我們必須挑選一個(gè)非常適合于我們所要解決的任務(wù)的正則形式琳状。
5.3 超參數(shù)和驗(yàn)證集
超參數(shù)的值不是通過學(xué)習(xí)算法本身學(xué)習(xí)出來的磕瓷,而是需要算法定義者手動(dòng)指定的。
5.3.1 驗(yàn)證集的作用
通常念逞,80%
的訓(xùn)練數(shù)據(jù)用于訓(xùn)練困食,20%
用于驗(yàn)證。驗(yàn)證集是用于估計(jì)訓(xùn)練中或訓(xùn)練后的泛化誤差翎承,從而更新超參數(shù)硕盹。
5.3.2 交叉驗(yàn)證
一個(gè)小規(guī)模的測試集意味著平均測試誤差估計(jì)的統(tǒng)計(jì)不確定性,使得很難判斷算法 A 是否比算法 B 在給定的任務(wù)上做得更好叨咖。解決辦法是基于在原始數(shù)據(jù)上隨機(jī)采樣或分離出的不同數(shù)據(jù)集上重復(fù)訓(xùn)練和測試瘩例,最常見的就是 -折交叉驗(yàn)證,即將數(shù)據(jù)集分成
個(gè) 不重合的子集甸各。測試誤差可以估計(jì)為
次計(jì)算后的平均測試誤差垛贤。在第
次測試時(shí), 數(shù)據(jù)的第
個(gè)子集用于測試集趣倾,其他的數(shù)據(jù)用于訓(xùn)練集聘惦。算法過程如下所示。
k 折交叉驗(yàn)證雖然一定程度上可以解決小數(shù)據(jù)集上測試誤差的不確定性問題儒恋,但代價(jià)則是增加了計(jì)算量善绎。
5.4 估計(jì)、偏差和方差
統(tǒng)計(jì)領(lǐng)域?yàn)槲覀兲峁┝撕芏喙ぞ邅韺?shí)現(xiàn)機(jī)器學(xué)習(xí)目標(biāo)碧浊,不僅可以解決訓(xùn)練集上 的任務(wù)涂邀,還可以泛化瘟仿∠淙瘢基本的概念,例如參數(shù)估計(jì)劳较、偏差和方差驹止,對(duì)于正式地刻畫泛化、欠擬合和過擬合都非常有幫助观蜗。
5.4.1 點(diǎn)估計(jì)
略
5.4.2 偏差
5.4.4 權(quán)衡偏差和方差以最小化均方誤差
偏差和方差度量著估計(jì)量的兩個(gè)不同誤差來源臊恋。偏差度量著偏離真實(shí)函數(shù)或參數(shù)的誤差期望。而方差度量著數(shù)據(jù)上任意特定采樣可能導(dǎo)致的估計(jì)期望的偏差墓捻。
偏差和方差的關(guān)系和機(jī)器學(xué)習(xí)容量抖仅、欠擬合和過擬合的概念緊密相聯(lián)。用 MSE 度量泛化誤差(偏差和方差對(duì)于泛化誤差都是有意義的)時(shí),增加容量會(huì)增加方差撤卢,降低偏差环凿。如圖 5.6 所示,我們?cè)俅卧陉P(guān)于容量的函數(shù)中放吩,看到泛化誤差的 U 形曲線智听。
參考資料
-《深度學(xué)習(xí)》