深度學習-第五章機器學習基礎

前言

深度學習是機器學習的一個特定分支。我們要想充分理解深度學習,必須對機器學習的基本原理有深刻的理解

大部分機器學習算法都有超參數(shù)(必須在學習算法外手動設定)。機器學習本質(zhì)上屬于應用統(tǒng)計學,其更加強調(diào)使用計算機對復雜函數(shù)進行統(tǒng)計估計,而較少強調(diào)圍繞這些函數(shù)證明置信區(qū)間;因此我們會探討兩種統(tǒng)計學的主要方法: 頻率派估計和貝葉斯推斷。同時,大部分機器學習算法又可以分成監(jiān)督學習無監(jiān)督學習兩類;本文會介紹這兩類算法定義,并給出每個類別中一些算法示例。

本章內(nèi)容還會介紹如何組合不同的算法部分,例如優(yōu)化算法、代價函數(shù)、模型和數(shù)據(jù) 集,來建立一個機器學習算法。最后,在 5.11 節(jié)中,我們描述了一些限制傳統(tǒng)機器學習泛化能力的因素。正是這些挑戰(zhàn)推動了克服這些障礙的深度學習算法的發(fā)展。

大部分深度學習算法都是基于被稱為隨機梯度下降的算法求解的。

5.1 學習算法

機器學習算法是一種能夠從數(shù)據(jù)中學習的算法。這里所謂的“學習“是指:“如果計算機程序在任務 T 中的性能(以 P 衡量)隨著經(jīng)驗 E 而提高,則可以說計算機程序從經(jīng)驗 E 中學習某類任務 T 和性能度量 P。”-來自 Mitchell (1997)

經(jīng)驗 E,任務 T 和性能度量 P 的定義范圍非常寬廣,本文不做詳細解釋。

5.1.1 任務 T

從 “任務” 的相對正式的定義上說,學習過程本身不能算是任務。學習是我們所謂的獲取完成任務的能力。機器學習可以解決很多類型的任務,一些非常常見的機器學習任務列舉如下:

  1. 分類:在這類任務中,計算機程序需要指定某些輸入屬于 k 類中的哪一類,例如圖像分類中的二分類問題,多分類、單標簽問題、多分類多標簽問題。
  2. 回歸:在這類任務中,計算機程序需要對給定輸入預測數(shù)值。為了解決這個任務,學習算法需要輸出函數(shù) f : \mathbb{R}^n \to \mathbb{R}。除了返回結果的形式不一樣外,這類 問題和分類問題是很像的。
  3. 機器翻譯
  4. 結構化輸出
  5. 異常檢測
  6. 合成和采樣
  7. 去噪
  8. 密度估計或概率質(zhì)量函數(shù)估計
  9. 輸入缺失分類
  10. 轉錄
  11. 缺失值填補

5.1.2 性能度量 P

為了評估機器學習算法的能力,我們必須設計其性能的定量度量。通常,性能度量 P 特定于系統(tǒng)正在執(zhí)行的任務 T。

可以理解為不同的任務有不同的性能度量。

對于諸如分類、缺失輸入分類和轉錄任務,我們通常度量模型的準確率(accu- racy)。準確率是指該模型輸出正確結果的樣本比率。我們也可以通過錯誤率(error rate)得到相同的信息。錯誤率是指該模型輸出錯誤結果的樣本比率。

我們使用測試集(test set)數(shù)據(jù)來評估系統(tǒng)性能,將其與訓練機器學習系統(tǒng)的訓練集數(shù)據(jù)分開。

值得注意的是,性能度量的選擇或許看上去簡單且客觀,但是選擇一個與系統(tǒng)理想表現(xiàn)能對應上的性能度量通常是很難的。

5.1.3 經(jīng)驗 E

根據(jù)學習過程中的不同經(jīng)驗,機器學習算法可以大致分類為無監(jiān)督(unsuper- vised)算法和監(jiān)督(supervised)算法。

無監(jiān)督學習算法(unsupervised learning algorithm)訓練含有很多特征的數(shù)據(jù)集,然后學習出這個數(shù)據(jù)集上有用的結構性質(zhì)。在深度學習中,我們通常要學習生成數(shù)據(jù)集的整個概率分布,顯式地,比如密度估計,或是隱式地,比如合成或去噪。 還有一些其他類型的無監(jiān)督學習任務,例如聚類,將數(shù)據(jù)集分成相似樣本的集合。

監(jiān)督學習算法(supervised learning algorithm)也訓練含有很多特征的數(shù)據(jù)集,但與無監(jiān)督學習算法不同的是數(shù)據(jù)集中的樣本都有一個標簽(label)或目標(target)。例如,Iris 數(shù)據(jù)集注明了每個鳶尾花卉樣本屬于什么品種。監(jiān)督學習算法通過研究 Iris 數(shù)據(jù)集,學習如何根據(jù)測量結果將樣本劃分為三個不同品種。

半監(jiān)督學習算法中,一部分樣本有監(jiān)督目標,另外一部分樣本則沒有。在多實例學習中,樣本的整個集合被標記為含有或者不含有該類的樣本,但是集合中單獨的樣本是沒有標記的。

大致說來,無監(jiān)督學習涉及到觀察隨機向量 x 的好幾個樣本,試圖顯式或隱式地學習出概率分布 p(x),或者是該分布一些有意思的性質(zhì); 而監(jiān)督學習包含觀察隨機向量 x 及其相關聯(lián)的值或向量 y,然后從 x 預測 y,通常是估計 p(y | x)。術語監(jiān)督學習(supervised learning)源自這樣一個視角,教員或者老師提供目標 y 給機器學習系統(tǒng),指導其應該做什么。在無監(jiān)督學習中,沒有教員或者老師,算法必須學會在沒有指導的情況下理解數(shù)據(jù)。

無監(jiān)督學習和監(jiān)督學習并不是嚴格定義的術語。它們之間界線通常是模糊的。很多機器學習技術可以用于這兩個任務。

盡管無監(jiān)督學習和監(jiān)督學習并非完全沒有交集的正式概念,它們確實有助于粗略分類我們研究機器學習算法時遇到的問題。傳統(tǒng)地,人們將回歸、分類或者結構化輸出問題稱為監(jiān)督學習。支持其他任務的密度估計通常被稱為無監(jiān)督學習。

表示數(shù)據(jù)集的常用方法是設計矩陣(design matrix)。

5.1.4 示例: 線性回歸

我們將機器學習算法定義為,通過經(jīng)驗以提高計算機程序在某些任務上性能的算法。這個定義有點抽象。為了使這個定義更具體點,我們展示一個簡單的機器學習示例: 線性回歸(linear regression)。

顧名思義,線性回歸解決回歸問題。 換句話說,目標是構建一個系統(tǒng),該系統(tǒng)可以將向量 x \in \mathbb{R} 作為輸入,并預測標量 y \in \mathbb{R} 作為輸出。在線性回歸的情況下,輸出是輸入的線性函數(shù)。令 \hat{y} 表示模型預測值。我們定義輸出為

\hat{y} = w^{?}x \tag{5.3}

其中 w \in \mathbb{R}^{n}參數(shù)(parameter)向量。

參數(shù)是控制系統(tǒng)行為的值。在這種情況下,w_i 是系數(shù),會和特征 x_i 相乘之 后全部相加起來。我們可以將 w 看作是一組決定每個特征如何影響預測的權重 (weight)。

通過上述描述,我們可以定義任務 T : 通過輸出 \hat{y} = w^{?}xx 預測 y

我們使用測試集test set)來評估模型性能如何,將輸入的設計矩 陣記作 \textit{X}(test),回歸目標向量記作 y(test)。

回歸任務常用的一種模型性能度量方法是計算模型在測試集上的 均方誤差(mean squared error)。如果 \hat{y}(test) 表示模型在測試集上的預測值,那么均方誤差表示為:

MSE_{test} = \frac{1}{m} \sum_{i}(\hat{y}^{(test)}-y^{(test)})_{i}^{2} \tag{5.4}

直觀上,當 \hat{y}^{(test)} = y^{(test)} 時,我們會發(fā)現(xiàn)誤差降為 0。

圖 5.1 展示了線性回歸算法的使用示例。

圖5.1-一個線性回歸的例子

5.2 容量、過擬合和欠擬合

機器學習的挑戰(zhàn)主要在于算法如何在測試集(先前未觀測的新輸入數(shù)據(jù))上表現(xiàn)良好,而不只是在訓練集上表現(xiàn)良好。在測試集(以前未觀察到的輸入)上表現(xiàn)良好的能力稱為泛化generalization)。

我們通常通過在與訓練集分開收集的測試集上測量其性能來估計機器學習模型的泛化誤差。

機器學習算法的兩個主要挑戰(zhàn)是: 欠擬合underfitting)和過擬合overfitting)。

  • 欠擬合是指模型不能在訓練集上獲得足夠低的誤差。
  • 而過擬合是指訓練誤差和和測試誤差之間的差距太大。

我們可以通過調(diào)整模型的容量capacity),來控制模型是否偏向于過擬合或者欠擬合。通俗地講,模型的容量是指其擬合各種函數(shù)的能力。容量低的模型可能很難擬合訓練集,容量高的模型可能會過擬合,因為記住了不適用于測試集的訓練集性質(zhì)。

一種控制訓練算法容量的方法是選擇假設空間(hypothesis space),即允許學習算法選擇作為解決方案的一組函數(shù)。例如,線性回歸算法將其輸入的所有線性函數(shù)的集合作為其假設空間。我們可以推廣線性回歸以在其假設空間中包含多項式,而不僅僅是線性函數(shù)。這樣做就增加模型的容量。

當機器學習算法的容量適合于所執(zhí)行任務的復雜度和所提供訓練數(shù)據(jù)的數(shù)量時,算法效果通常會最佳。容量不足的模型不能解決復雜任務。容量高的模型能夠解決復雜的任務,但是當其容量高于任務所需時,有可能會過擬合。

圖 5.2 展示了上述原理的使用情況。我們比較了線性,二次和 9 次預測器擬合真 實二次函數(shù)的效果。

圖5-2三個模型擬合二次函數(shù)

統(tǒng)計學習理論提供了量化模型容量的不同方法。在這些中,最有名的是 Vapnik- Chervonenkis 維度(Vapnik-Chervonenkis dimension, VC)。VC 維度量二元分類 器的容量。VC 維定義為該分類器能夠分類的訓練樣本的最大數(shù)目。假設存在 m 個 不同 x 點的訓練集,分類器可以任意地標記該 m 個不同的 x 點,VC 維被定義為 m 的最大可能值。

因為可以量化模型的容量,所以使得統(tǒng)計學習理論可以進行量化預測。統(tǒng)計學習理論中最重要的結論闡述了訓練誤差和泛化誤差之間差異的上界隨著模型容量增長而增長,但隨著訓練樣本增多而下降 (Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumer et al., 1989; Vapnik, 1995)。這些邊界為機器學習算法可以有效解決問題提供了理論 驗證,但是它們很少應用于實際中的深度學習算法。一部分原因是邊界太松,另一部分原因是很難確定深度學習算法的容量。由于有效容量受限于優(yōu)化算法的能力,所以確定深度學習模型容量的問題特別困難。而且我們對深度學習中涉及的非常普遍的非凸優(yōu)化問題的理論了解很少。

雖然更簡單的函數(shù)更可能泛化(訓練誤差和測試誤差的差距小),但我們?nèi)匀槐仨氝x擇一個足夠復雜的假設來實現(xiàn)低訓練誤差。通常,隨著模型容量的增加,訓練誤差會減小,直到它逐漸接近最小可能的誤差值(假設誤差度量具有最小值)。通常,泛化誤差是一個關于模型容量的 U 形曲線函數(shù)。如下圖 5.3 所示。

容量和誤差之間的典型關系

5.2.1 沒有免費午餐定理

機器學習的沒有免費午餐定理Wolpert,1996)指出,對所有可能的數(shù)據(jù)生成分布進行平均,每個分類算法在對以前未觀察到的點進行分類時具有相同的錯誤率。換句話說,在某種意義上,沒有任何機器學習算法普遍優(yōu)于其他任何算法

上述這個結論聽著真的讓人傷感,但慶幸的是,這些結論僅在我們考慮所有可能的數(shù)據(jù)生成分布時才成立。如果我們對實際應用中遇到的概率分布類型做出假設,那么我們可以設計出在這些分布上表現(xiàn)良好的學習算法。

這意味著機器學習研究的目標不是找一個通用學習算法或是絕對最好的學習算法。反之,我們的目標是理解什么樣的分布與人工智能獲取經(jīng)驗的 “真實世界” 相關,什么樣的學習算法在我們關注的數(shù)據(jù)生成分布上效果最好

總結:沒有免費午餐定理清楚地闡述了沒有最優(yōu)的學習算法,即暗示我們必須在特定任務上設計性能良好的機器學習算法。

5.2.2 正則化

算法的效果不僅很大程度上受影響于假設空間的函數(shù)數(shù)量,也取決于這些函數(shù)的具體形式。

在假設空間中,相比于某一個學習算法,我們可能更偏好另一個學習算法。這 意味著兩個函數(shù)都是符合條件的,但是我們更偏好其中一個。只有非偏好函數(shù)比偏好函數(shù)在訓練數(shù)據(jù)集上效果明顯好很多時,我們才會考慮非偏好函數(shù)。

我們可以加入權重衰減(weight decay)來修改線性回歸的訓練標準。新的代價函數(shù) J(w) 定義如下:

J(w) = MSE_{train} + \lambda w^{?}w \tag{5.18}

\lambda 是超參數(shù),需提前設置,其控制我們對較小權重的偏好強度。當 \lambda = 0,我們沒有任何偏好。\lambda 越大,則權重越小。最小化 J(w) 會導致權重的選擇在擬合訓練數(shù)據(jù)和較小權重之間進行權衡

簡單來說,就是給代價函數(shù)添加正則化項(regularizer)的懲罰,即正則化一個學習函數(shù)為 f(x;\theta) 的模型。上述權重衰減的例子中,正則化項是 \Omega(w) = \lambda w^{?}w。 在后續(xù)的第七章,我們將學習其他的正則化項。

我們將正則化定義為“對學習算法的修改-旨在減少泛化誤差而不是訓練誤差”。正則化是機器學習領域的中心問題之一,只有優(yōu)化能夠與其重要性相媲。

和沒有最優(yōu)的學習算法一樣,特別地,也沒有最優(yōu)的正則化形式。反之,我們必須挑選一個非常適合于我們所要解決的任務的正則形式。

5.3 超參數(shù)和驗證集

超參數(shù)的值不是通過學習算法本身學習出來的,而是需要算法定義者手動指定的

5.3.1 驗證集的作用

通常,80% 的訓練數(shù)據(jù)用于訓練,20% 用于驗證。驗證集是用于估計訓練中或訓練后的泛化誤差,從而更新超參數(shù)。

5.3.2 交叉驗證

一個小規(guī)模的測試集意味著平均測試誤差估計的統(tǒng)計不確定性,使得很難判斷算法 A 是否比算法 B 在給定的任務上做得更好。解決辦法是基于在原始數(shù)據(jù)上隨機采樣或分離出的不同數(shù)據(jù)集上重復訓練和測試,最常見的就是 k-折交叉驗證,即將數(shù)據(jù)集分成 k 個 不重合的子集。測試誤差可以估計為 k 次計算后的平均測試誤差。在第 i 次測試時, 數(shù)據(jù)的第 i 個子集用于測試集,其他的數(shù)據(jù)用于訓練集。算法過程如下所示。

k 折交叉驗證雖然一定程度上可以解決小數(shù)據(jù)集上測試誤差的不確定性問題,但代價則是增加了計算量。

k-折交叉驗證算法

5.4 估計、偏差和方差

統(tǒng)計領域為我們提供了很多工具來實現(xiàn)機器學習目標,不僅可以解決訓練集上 的任務,還可以泛化?;镜母拍?,例如參數(shù)估計、偏差和方差,對于正式地刻畫泛化、欠擬合和過擬合都非常有幫助。

5.4.1 點估計

5.4.2 偏差

5.4.4 權衡偏差和方差以最小化均方誤差

偏差和方差度量著估計量的兩個不同誤差來源。偏差度量著偏離真實函數(shù)或參數(shù)的誤差期望。而方差度量著數(shù)據(jù)上任意特定采樣可能導致的估計期望的偏差。

偏差和方差的關系和機器學習容量、欠擬合和過擬合的概念緊密相聯(lián)。用 MSE 度量泛化誤差(偏差和方差對于泛化誤差都是有意義的)時,增加容量會增加方差,降低偏差。如圖 5.6 所示,我們再次在關于容量的函數(shù)中,看到泛化誤差的 U 形曲線。

偏差方差泛化誤差和模型容量的關系

參考資料

-《深度學習》

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容