今天開始學習模式識別與機器學習Pattern Recognition and Machine Learning (PRML),章節5.1,Neural Networks神經網絡-前向網絡。

話說上一次寫這個筆記是13年的事情了···那時候忙着實習,找工做,畢業什麼的就沒寫下去了,如今工做了有半年時間也算穩定了,我會繼續把這個筆記寫完。其實不少章節都看了,不過還沒寫出來,先從第5章開始吧,第2-4章比較基礎,之後再補!算法

 

第5章 Neural Networks

在第3章和第4章,咱們已經學過線性的迴歸和分類模型,這些模型由固定的基函數(basis functions)的線性組合組成。這樣的模型具備有用的解析和計算特性,可是由於維度災難(the curse of dimensionality)(即高維數據)的問題限制了它們的實際的適用性。爲了把這些模型應用在大數據的問題中,咱們必須根據數據來調整這些基函數。網絡

在第七章中會討論SVM,是一個很是著名和有效的分類方法。SVM有其獨特的方法理論,而且其一個重要的優勢是:雖然涉及非線性優化,可是SVM自己的目標函數依然是convex的。在本章中不具體展開,第七章中有詳述。app

另一個辦法是雖然提早固定基函數的數量,可是容許它們在在訓練的過程當中調整其參數,也就是說基函數是能夠調整的。在模式識別領域,該方法最爲典型的算法是本章節將會討論 的前向神經網絡(feed-forward neural network,後面簡稱NN),或者稱爲多層感知器(multilayer perceptron)。(注:這裏多層模型是連續的,如sigmoid函數,而perceptron方法本來是不連續的;perceptron方法在PRML書中沒有介紹,後面根據其餘的資料單獨寫一篇)。不少狀況下,NN訓練的模型相比具備相同泛化能力的SVM模型更緊湊(注:我理解是參數更少),所以跟容易評估,可是代價是NN的基函數再也不是訓練參數的convex函數。在實際中,在訓練中花費大量計算資源以獲得緊湊的模型,來快速處理新數據的狀況是能夠接受的。ide

接下來咱們會看到,爲了獲得神經網絡的參數,咱們本質上是作了一個最大似然估計,其中涉及非線性優化問題。這須要對log似然函數針對參數求導數,咱們後面會講一下偏差反向傳播算法(error backpropagation,BP),以及BP算法的一些擴展方法。函數

 

5.1 Feed-forward Network Functions

在第3章和第4章中通論的線性模型,是基於固定的基函數image的線性組合,形式爲:大數據

image

 

其中,f()在分類問題中是一個非線性的激勵函數,而在迴歸模型中是單位矩陣identity。咱們的目標是把上面的模型中的基函數image變得依賴於參數,而且在訓練的時候這些參數以及上面的wj都是可調整的。基函數的形式天然有不少種,神經網絡的基函數採用和(5.1)相同形式,所以每一個基函數本事就是一個關於input線性組合的非線性函數,線性組合中的參數是能夠調整的參數。這就是基本的神經網絡的思想,由一系列函數轉換組成:首先咱們構造針對輸入變量image的M個線性函數優化

 

image

其中j=1,…,M,上標(1)表示參數是神經網絡第一層的參數(input不算層)。咱們稱參數image爲權重weights,而參數image是截距biases。image稱爲激勵(activation),會經過一個可導的非線性激勵函數h()轉換成:設計

image

這些M個函數值就是(5.1)中的基函數的輸出,在神經網絡模型中,稱之爲隱含層單元(hidden units)。非線性激勵函數h()一般的選擇是sigmoid函數或者是tanh函數。根據(5.1),這些值會再一次線性組合成output單元的激勵值,3d

image

其中k=1,…,K,K是output單元數量。這個轉換是神經網絡的第二層,image是bias參數。最終,這些output單元的激勵值會再由合適的激勵函數轉換成合適的最終輸出image。和上面的提到的相似,若是是要作迴歸問題,激勵函數咱們選擇identity,即image;若是是作多個2分類問題,咱們採用logistic sigmoid function:blog

image

若是是多個類別的分類問題,咱們採用softmax函數,見PRML書公式(4.62)。

因而,咱們把全部階段都組合起來,能夠獲得整體的神經網絡函數(採用sigmoid output單元,兩層網絡,以下面圖5.1):

image

所以,神經網絡模型就是一個非線性函數,從輸入的變量集合image到輸出的變量集合image,而且由可調整的參數向量w來控制。網絡的結構能夠見圖5.1,整個網絡是向前傳播的。

 

 

image

 

咱們能夠專門增長x0=1和z0=1兩個變量輸入,這樣能夠把bias(偏移、截距)項合併到累加里面,簡化了表達,所以能夠獲得:

image

以及:

image

下面的推導會用(5.9)的形式。若是看過第四章關於感知機(perception)的介紹,就會發現上面的形式就至關於用了兩層的感知機模型,也是由於這樣,神經網絡模型也被稱爲多層感知機(the multilayer perceptron, or MLP)模型。區別是感知機模型採用輸出0/1的步長函數(step-function),而NN採用連續的如sigmoid這樣的非線性函數在中間的隱藏層單元,說明NN對於參數是可導的,這一點在NN模型的訓練中很重要。

 

若是隱層單元的激勵函數都是採用線性的,那麼無論連續幾層,最終模型仍是一個線性模型。並且若是隱層單元比輸入單元或者輸出單元少的話,那麼就會有信息損失,相似於在隱層作了一次數據降維。目前來看,不多有人關注多層線性單元的神經網絡模型。上面圖5.1是一個最爲典型的NN模型結構,它能夠很容易的獲得拓展——繼續把輸出層做爲隱層,並增長新的層次,採用和以前同樣的函數傳遞方法。業界在稱呼NN模型的層次上有一些統一,有些人把圖5.1叫作3層網絡,而在本書中更推薦這個模型爲2層,由於參數可調的層只有2層。

 

另一種對模型的泛化方法是像圖5.2這樣,input的節點能夠直接鏈接到output,並不必定須要一層一層傳遞。(注:這樣的NN結構更廣義,優化的時候BP也同樣能夠應付,可是是怎麼產生這些越層鏈接的呢?這一點書中沒有展開,不知道這樣的模型在深度網絡結構中有沒有應用呢?有同窗看到必定要留言告知哈~)

image

另一個很重要的性質,NN模型能夠是稀疏的,事實上大腦也是這樣的,不是全部的神經元都是活躍的,只有很是少的一小部分會活躍,不一樣層的神經元之間也不多是全鏈接的。後面再5.5.6節中,咱們將看到卷積神經網絡採用的稀疏網絡結構的例子。

咱們天然能夠設計出更復雜的網絡結構,不過通常來講咱們都限定網絡結構爲前向網絡,也就是說不存在封閉的有向環,能夠見圖5.2表示的那樣,每個隱層單元或者是輸出單元能夠經過下面計算獲得:

image

因而,當有輸入時,網絡中的全部單元都會逐步被影響進而激活(也有可能不激活)。神經網絡模型有很強的近似擬合功能,所以也被稱爲universal approximators.

事實上兩層的NN模型就能夠擬合任意function,只要隱層單元足夠多以及參數訓練的足夠好。下面的圖5.3說明了NN模型的擬合能力。解釋請看圖左邊的描述。

 

image

 

5.1.1 權值空間的對稱性

這是前向網絡一個有趣的性質,好比咱們來看圖5.1這樣的典型兩層網絡,考察一個隱層單元,若是咱們把它的輸入參數的符號所有取反,以tanh函數爲例,咱們會獲得相反的激勵函數值,即tanh(−a) = −tanh(a)。而後把這個單元全部的輸出鏈接權重也都取反,咱們又能夠獲得相同的output輸出,也就是說,實際上有兩組不一樣的權值取值能夠獲得相同的output輸出。若是有M個隱層單元,實際上有2M種等價的參數取值方案。

另外,若是咱們把隱層的兩個單元的輸入輸出權重互相間調換一下,那麼整個網絡最終output是同樣的,也就是說任何一種權重的取值組合是全部M!中的一種。可見上面這樣的神經網絡竟然有M!2M的權值對稱性可能。這樣的性質在不少激勵函數都是有的,可是通常來講咱們不多關心這一點。

相關文章
相關標籤/搜索