1. 程式人生 > >深度學習筆記(五)第五章 深度學習基礎

深度學習筆記(五)第五章 深度學習基礎

深度學習是一種特殊的機器學習。要了解深度學習需要對機器學習有紮實的理解。本章是對整本書需要使用的最重要的通用原理的簡單課程。
什麼是學習演算法?比如:線性迴歸。大多數學習演算法需要預先設定好超級引數(hyperparameters)。我們要討論怎麼去設定它。
機器學習本質上是應用統計學,強調使用計算機來統計函式估計和置信區間。因此我們提出兩種統計學上重要的方法:頻率估計和貝葉斯推理。大部分機器學習演算法可以分為監督學習和非監督學習。大部分的機器學習演算法依賴於隨機梯度下降演算法來優化。

5.1學習演算法

任務 T
1.分類器
2. 分類器(有資料缺失)
3. 迴歸
4. 影象、語音識別
5. 機器翻譯
6. 結構化輸出(比如識別影象中的句子)
7. 異常檢測
8. 合成和取樣
9. 預測缺失資料
10. 去噪
11. 概率密度估計或者概率質量估計
表現衡量 P
準確性
錯誤率
期望 E
機器學習可以廣義的分成監督學習和非監督學習。
非監督學習從資料集的特質中學習到有用的屬性。非監督學習從水機陣列x,來獲得概率分佈P(x),或者更進一步的P(y|x)。
監督學習的每個資料例項都有label或者叫taraget。監督學習演算法用它對資料例項進行分類。
增強學習
例子:線性迴歸
線性迴歸的數學表示是從輸入陣列x∈

預測輸出標量y∈R。我們假定是機器學習模型對y的預測。定義如下:
其中是一個引數陣列。
我們可以把w看做權重集合,它的每個權重值如何來影響對應的特性來決定預測的結果。
我們用下面的公式來定義任務T:
由x來預測y,定義為
我們定義度量機器學習演算法的方法叫P,我們先找出一個集合m,它不參與演算法的訓練,並且找出對應的y值。我們把這樣的集合稱為測試集。把集合m表示為 度量機器學習演算法效果P可以在測試集上用均方誤差(MSE)。
公式5.4
其中 是對測試集合的預測。
是真實結果。
馬上可以看出來MSE就是兩個預測間的歐幾里得範數。
那麼要提高P,就是要減小MSE(訓練集合)。在數學上就是找到梯度為0的點。如下圖
圖示5.1

為了擬合10個點,找到了線性函式y=wx,通過改變引數w(右圖)來找使得MSE最小的w。
正規方程
偏離量b(bias)

容量 過擬合 欠擬合

機器學習的核心挑戰是我們需要在新的資料上執行,而不是我們模型訓練的資料。這個過程叫泛化(generalization)。
對訓練集做的誤差評估叫訓練誤差。到目前為止我們討論的問題是優化問題,區別於優化問題和機器學習是泛化誤差,也叫測試誤差。
我們通常通過單獨從訓練集以外的資料中拿到的測試資料,來衡量它額測試誤差,以達到評估機器學習的泛化誤差的目的。
統計學習理論提到了如何選擇訓練集和測試集。
訓練集和測試集都是通過資料生成過程(data generating process)得到的。然後我們假定這個過程得到的訓練集和測試集是相互獨立且具有相同的概率分佈。我們把這個概率分佈叫資料生成分佈(data generating distribution)記為Pdata。
我們衡量一種機器學習演算法的優劣需要考慮兩點:
1. 使得訓練誤差小
2. 使得訓練誤差和測試誤差小
這兩個點分別對應了機器學習中的兩大挑戰:過擬合和欠擬合。
欠擬合是機器學習演算法無法有效學習到特徵,使得訓練誤差足夠小。
過擬合是訓練誤差和測試誤差之間的差距太大,泛化能力弱。
我們可以通過調整容量(capacity)來控制機器學習模型是過擬合還是欠擬合。
一種控制容量的方法是選擇假設空間(hypothesis space),假設空間是機器學習可選的函式集合。例如線性迴歸演算法的假設空間是一系列的線性函式。我們可以讓線性迴歸演算法的假設空間中包含多項式,來增加模型的容量。
一階多項式:
公式5.15


二階多項式:
公式5.16
9階多項式:
公式5.17
機器學習演算法在容量和真實任務T複雜度適當的時候表現最好。如果容量不夠則會欠擬合,無法解決複雜問題。反之則會過擬合。
圖示5.2
上圖表示線性函式,二階函式,9階函式對一個實際為二階函式的擬合。
事實上還有其他方法可以改變演算法容量,也就是說容量不是隻由選擇的模型來決定的。模型選擇假設空間中的可選函式,並調整引數減少訓練誤差。被稱為代表容量。在多數情況下,在假設空間中選出合適的函式是優化的難點。實際情況是,機器學習演算法不可能去選最好的函式,而僅僅選擇可以明顯減少訓練誤差的函式。因為有這些限制,優化演算法不盡完美,有效容量不如代表容量好。
一個現代的改進機器學習模型泛化效果想法可以追溯到哲學家托勒密。被人們廣泛成為:奧卡姆剃刀。“如無必要,勿增實體”
統計學習理論提供了多種評估容量的手段。最廣為人知的是VC維(Vapnik-Chervonenkis dimension)。但是這些手段在深度學習中都很少使用,原因是我們對於一般非凸函式的優化理論上所知甚少。
我們必須牢記雖然簡單的函式容易泛化(測試誤差和訓練誤差差距較小),我們還是要選擇足夠大的假設空間來獲得更低的訓練誤差。下圖描述了容量和訓練誤差、測試誤差之間的關係。
圖示5.3
當容量很小的時候,訓練誤差和測試誤差都很高,這裡是欠擬合的區域。當容量增加的時候,訓練誤差和測試誤差都下降,但是他們之間的差距在增加。當超過紅色線(最佳容量)後,訓練誤差和測試誤差繼續增大,我們進入了過擬合區域。
非引數機器學習
非引數模型只是理論存在,不現實。但是我們可以設計現實的非引數模型–讓它的複雜度和訓練函式相同。比如演算法:最近鄰迴歸(nearest neighbor regression)。和線性迴歸比起來,線性迴歸有固定大小的權重矩陣,最近鄰迴歸沒有這樣的權重矩陣,它只是把訓練集的X和y儲存起來。當需要計算一個Xi對應的值的時候,它只是去儲存集合中找到離Xi最近的點,對這個點做線性迴歸。用公式表達就是這樣:最近鄰迴歸
這個演算法也可以用距離矩陣來泛化而不用歐幾里得範數。
我們也可以通過把一個引數化的學習演算法包含在另一演算法(隨需要增加引數)內來達到建立非引數化學習演算法的目的。當然這個方法也有問題(……)被稱為貝葉斯誤差(Bayes error)。因為在監督學習中x到y的函式可能有天然的隨機性,或者y和除了x之外的其他變數有函式關係。
對於非引數學習越多的訓練資料可以使得演算法接近最佳誤差。而對於引數學習演算法,會比最佳容量要差,它的誤差會接近貝葉斯誤差的上界。另外,請注意演算法有可能獲得最佳容量但同時訓練誤差和泛化誤差的差距卻很大。在這種情況下只要增加訓練集大小就可以減少這個差距。
如下圖所示:
圖示5.4

沒有免費午餐理論

理論上是不可能通過有限的訓練集去泛化到全集。在有限集合上不論是做歸納或者推理邏輯上都是不成立的。
機器學習通過提供概率上的規則,而不是全部確定規則集來避免邏輯歸納理論提到的這個問題。也就是說機器學習許諾會找到使得集合中大多數相關資料可能正確的規則。
即使這樣表述,仍然不夠清楚。另一種說法是,沒有任何機器學習演算法在任何的問題上都比另一個演算法優秀。幸運的是,我們不需要考慮在任何問題上應用某個最優的機器學習演算法,我們假定只需要在具體概率分佈問題上設計針對性的機器學習演算法。

規則化(regularization)

到目前為止我們只是增加或者減少假設空間中的可選函式來增加或者減少代表容量。我們還舉例說明了通過增加或者減少多項式的階數來解決迴歸問題。但這些方法還遠遠不夠。
不僅僅要看假設空間中可選的函式數量,還需要考慮這些函式的特徵。比如:線性迴歸函式去學習sin(x)就絕不可能有好的成果。

我們還可以偏向性選擇機器學習演算法。比如我們可以給線性函式加權值衰減(weight decay)
公式5.18
λ是為了偏向更小的權重事先選定的引數。當λ為零表示沒有偏向。大的λ讓權重更小。最小化J(w)使得擬合和讓權重更小達到最佳平衡。這使得解決方案會有更小的斜率。如圖:
圖示5.5
權值衰減傾向使用更加簡單的擬合函式。

超級引數和驗證集

大部分的機器學習演算法都有一些引數可用用來控制演算法的行為,我們稱之為超級引數(hyperparameters)。這些引數不是機器學習演算法自己產生的。
一般用80%的訓練資料來訓練演算法,20%的資料用來作為驗證集。驗證集是用來“訓練”超級引數的。
交叉驗證
估計、偏離、方差
點估計
偏離
泊松分佈的偏離為0.
平均值的高斯分佈的偏離為0.
高斯分佈的方差的的估計:
樣本方差(經過推導,樣本方差是高斯分佈方差的偏離估計)
非偏離高斯分佈的樣本方差的估計
這裡有兩種估計,一種是偏離估計,一種是非偏離估計。通常偏離估計會更有用。
方差Var(Θ)和標準誤差
方差的平方根被稱為標準誤差,SE(Θ)
平衡偏離和方差以減少均方誤差(MSE)
公式5.54
隨著容量增加,偏離會減小,而方差會增加。如下圖:
F5.6
這個圖中顯示的關係類似容量、欠擬合、過擬合之間的關係。因此在機器學習中經常用MSE來度量泛化誤差。
一致性
最大似然估計
條件對數似然與均方誤差
最大似然的性質
貝葉斯統計
貝葉斯線性迴歸
最大後驗估計(MAP)
監督學習
概率監督學習
支援向量機
其他簡單監督學習演算法
非監督學習
PCA(主要成分分析)
K-means聚類
隨機梯度下降
建立一個機器學習演算法
傳統機器學習演算法在高維空間面臨挑戰(計算成本),因此需要深度學習來跨越這些障礙。
維度災難:隨著維度的上升,學習難度會指數增加。如下圖
圖示5.9
當只有一維的時候,訓練演算法填充10個區間就可以了。當變成2維的時候需要訓練演算法填充10X10=100個區間了。維度變高後需要訓練的區間呈指數增加。

區域性穩定和平滑規則化
平滑先驗
區域性穩定先驗
KNN演算法
理論上要預測棋盤中每個格子的顏色,必須要在這個棋盤中的格子中有一個訓練樣例。(高維函式需要大量的訓練資料)那麼有沒有辦法簡單有效的表述一個複雜的函式呢?答案是:yes
深度學習的核心思想是我們假設資料是由隱含在多個層級中的多個特徵組成的。這些假設可以讓我們在訓練集數量以及目標可以區分的區域上獲得增益。

流行學習