AI聖經-深度學習-讀書筆記(六)-深度前饋網路
深度前饋網路(DFN)
0 簡介
(1)DFN:深度前饋網路,或前饋神經網路(FFN),或多層感知機(MLP)
(2)目標
近似某個函式 。例如,定義一個對映,並且學習的值,使它能夠得到最佳的函式近似。
(3)神經網路
直觀理解:為了實現統計泛化(測試)而設計出的函式近似機。從到的確定性對映並且沒有反饋連線,與大腦沒有必然聯絡。
基於線性模型理解神經網路:簡單快捷如邏輯迴歸和線性迴歸,但是無法理解輸入變數間的相互作用。只能描繪一部分相對簡單的神經網路
基於非線性模型理解神經網路:定義一個對映為非線性變換(理解為隱藏層的啟用函式),選擇
(4)其他
前饋網路例項:卷積神經網路
前饋網路擴充套件成包含反饋連線時稱為迴圈神經網路:自然語言處理
一個疑問:前饋網路中是包含反向傳播的,與是否有反饋連線沒有關係。
1 例項:異或問題(XOR)
(1)問題描述:
異或邏輯是兩個二進位制和之間的運算,當這些二進位制值中恰好有一個為1時,異或邏輯返回1;其餘情況返回0。
(2)線性模型實現:
①視為迴歸問題:
②損失函式,均方誤差MSE:
③結果,線性模型在任一點均輸出0.5
線性模型中各變數的引數固定,不能通過一個變數改變另外一個變數,所以線性模型無法解決異或問題
(3)非線性模型實現:
結構:兩個輸入,一個隱藏層,一個輸出:
其中RELU函式是被推薦用於大多數前饋神經網路的預設的啟用函式
2 基於梯度的學習
(1)為什麼要進行基於梯度的學習:
實際情況下,訓練樣本和引數都是十分龐大的,猜解不可能得到應用,基於梯度的優化演算法可以找到一些引數使得產生的誤差非常小。
(2)概要:
凸優化從任何一種初始引數出發都會收斂,對於前饋神經網路,將所有的權重值初始化為小的隨機數是很重要的。偏置可以初始化為零或者小的正值。訓練方法大部分總是基於使用梯度來使得代價函式下降的各種方法。**我們當然也可以用梯度下降來訓練諸如線性迴歸和支援向量機之類的模型,並且事實上當訓練集相當大的時候這是很常用的。
(3)代價函式
在大多數情況下,引數模型定義了一個條件分佈並且使用最大似然原理(已知結果,關注細節),這意味著我們使用訓練資料和模型之間的交叉熵作為代價函式。
用於訓練神經網路的完整的代價函式,通常在我們這裡描述的基本的代價函式的基礎上結合一個正則項,防止過擬合。
①使用最大似然學習條件分佈:
簡介:學習完整的概率分佈
優勢:減輕了為每個模型設計代價函式的負擔,明確一個模型則自動地確定了一個代價函式。
要求:貫穿神經網路設計反覆出現的一個主題是代價函式的梯度必須足夠的大和具有足夠的預測性,來為學習演算法提供一個好的指引。很多輸出單元都會包含一個指數函式,這在它的變數取絕對值非常大的負值時會造成飽和。負對數似然代價函式中的對數函式消除了某些輸出單元中的指數效果。
特性:用於實現最大似然的交叉熵代價函式有一個不同尋常的特性,那就是當它被應用於實踐中經常遇到的模型時,它通常沒有最小值。
②學習條件統計量:
不想學習一個完整的概率分佈,只想學習在給定的時的某個條件統計量。
把代價函式看做是一個泛函,而不僅僅是一個函式。泛函是函式到實數的對映。因此,我們可以把學習看做是選擇一個函式,而不是選擇一組引數。
(4)輸出單元
輸出層的作用是隨後對這些特徵進行一些額外的變換來完成整個網路必須完成的任務。
①用於高斯輸出分佈的線性單元
一種簡單的輸出單元是基於仿射變換的輸出單元,仿射變換是線性變換和平移的組合,不具有非線性,這些單元往往被直接稱為線性單元。
對於所有操作,協方差矩陣都必須限定為正定矩陣。因為線性單元不會飽和,所以他們易於採用基於梯度的優化演算法,甚至可以使用其他多種優化演算法。
②用於Bernoulli輸出分佈的sigmoid單元
二分類問題可以歸結為這種形式。Berboulli僅僅需要單個引數來定義。
③用於Multinoulli輸出分佈的softmax單元
任何時候,當我們想要表示一個具有n個可能取值的離散型隨機變數的分佈時,都可以使用softmax函式。它可以看做sigmoid函式的擴充套件,其中sigmoid函式用來表示二值型變數的分佈。
softmax函式常用作分類器的輸出,來表示n個不同類的概率分佈。
softmax是一種在參與其中的單元之間形成競爭的方式:softmax的輸出總和總是為1,所以一個單元的值增加必然對應著其他單元值得減少,在計算情況下,當和其他的在幅度上差異很大時,就變成了贏者通吃的模式,其中一個輸出近似1,其他的接近0。
3 隱藏單元
隱藏單元的設計過程:
先直覺地認為某種隱藏單元可能表現良好,然後用它組成神經網路進行訓練,最後用驗證集來評估他的效能。
除非另有說明,大多數的隱藏單元都可以描述為接受輸入向量,接受仿射變換,然後使用一個逐元素的非線性函式。大多數隱藏單元的區別僅僅在於啟用函式的形式。
①整流線性單元及其擴充套件
整流線性單元使用啟用函式。
整流線性單元易於優化,因為他們和線性單元類似。
整流線性單元通常作用於仿射變換之上:。當初始化仿射變換的引數時,可以將的所有元素設定成一個小的正值,例如0.1。這使得整流線性單元很可能初始時就對大多數輸入呈現啟用狀態,並且允許倒數通過。
整流線性單元的一個缺陷是它們不能通過基於梯度的方法學習使它們啟用為0的樣本。
②logistic sigmoid與雙曲正切函式
③其他隱藏單元
徑向基函式(RBF):大部分飽和到0,難以優化;
softplus函式:整流線性單元的平滑版本
硬雙曲正切函式
4 架構設計
架構一詞是指網路的整體結構,它應該具有多少單元,以及這些單元應該如何連線。即在這些鏈式架構中,主要的架構考慮是選擇網路的深度和每一層的寬度。
萬能近似性質
一個前饋神經網路如果具有線性輸出層和至少一層具有任何一種“擠壓”性質的啟用函式的隱藏層,只要給予網路足夠數量的隱藏單元,它可以以任意的進度來近似任何從一個有限維空間到另一個有限維空間的Borel可測函式。
具有單層的前饋網路足以表示任何函式,但是網路層可能大的不可實現,並且可能無法正確的學習和泛化。在很多情況下,使用更深的模型能夠減少表示期望函式所需的單元的數量,並且可以減少泛化誤差。
5 反向傳播和其他微分方法
在訓練過程中,前向傳播可以持續向前直到它產生一個標量代價函式。反向傳播演算法簡稱backprop,允許來自代價函式的資訊通過網路向後流動,以便計算梯度。
反向傳播僅指用於計算梯度的方法,而另一種演算法,如隨機梯度下降,使用該梯度來進行學習。在學習演算法中,我們最常需要的梯度是代價函式關於引數的梯度。
反向傳播是一種計算鏈式法則的演算法。