今天开始学模式识别与机器学习(PRML),章节5.1,Neural Networks神经网络-前向网络。
今天開始學模式識別與機器學習Pattern Recognition and Machine Learning (PRML),章節5.1,Neural Networks神經網絡-前向網絡。
話說上一次寫這個筆記是13年的事情了···那時候忙著實習,找工作,畢業什么的就沒寫下去了,現在工作了有半年時間也算穩定了,我會繼續把這個筆記寫完。其實很多章節都看了,不過還沒寫出來,先從第5章開始吧,第2-4章比較基礎,以后再補!基本是筆記+翻譯,主要是自己寫一下以后好翻閱。
PRML第5章介紹了神經網絡neural network,是最近非常火的deep learning的基礎,值得好好看一看。
?
第5章 Neural Networks
在第3章和第4章,我們已經學過線性的回歸和分類模型,這些模型由固定的基函數(basis functions)的線性組合組成。這樣的模型具有有用的解析和計算特性,但是因為維度災難(the curse of dimensionality)(即高維數據)的問題限制了它們的實際的適用性。為了把這些模型應用在大數據的問題中,我們必須根據數據來調整這些基函數。
在第七章中會討論SVM,是一個非常著名和有效的分類方法。SVM有其獨特的方法理論,并且其一個重要的優點是:雖然涉及非線性優化,但是SVM本身的目標函數依然是convex的。在本章中不具體展開,第七章中有詳述。
另外一個辦法是雖然提前固定基函數的數量,但是允許它們在在訓練的過程中調整其參數,也就是說基函數是可以調整的。在模式識別領域,該方法最為典型的算法是本章節將會討論 的前向神經網絡(feed-forward neural network,后面簡稱NN),或者稱為多層感知器(multilayer perceptron)。(注:這里多層模型是連續的,如sigmoid函數,而perceptron方法原本是不連續的;perceptron方法在PRML書中沒有介紹,后面根據其他的資料單獨寫一篇)。很多情況下,NN訓練的模型相比具有相同泛化能力的SVM模型更緊湊(注:我理解是參數更少),因此跟容易評估,但是代價是NN的基函數不再是訓練參數的convex函數。在實際中,在訓練中花費大量計算資源以得到緊湊的模型,來快速處理新數據的情況是可以接受的。
接下來我們會看到,為了得到神經網絡的參數,我們本質上是做了一個最大似然估計,其中涉及非線性優化問題。這需要對log似然函數針對參數求導數,我們后面會講一下誤差反向傳播算法(error backpropagation,BP),以及BP算法的一些擴展方法。
?
5.1 Feed-forward Network Functions
在第3章和第4章中通論的線性模型,是基于固定的基函數的線性組合,形式為:
?
其中,f()在分類問題中是一個非線性的激勵函數,而在回歸模型中是單位矩陣identity。我們的目標是把上面的模型中的基函數變得依賴于參數,并且在訓練的時候這些參數以及上面的wj都是可調整的。基函數的形式自然有很多種,神經網絡的基函數采用和(5.1)相同形式,因此每個基函數本事就是一個關于input線性組合的非線性函數,線性組合中的參數是可以調整的參數。這就是基本的神經網絡的思想,由一系列函數轉換組成:首先我們構造針對輸入變量的M個線性函數
?
其中j=1,…,M,上標(1)表示參數是神經網絡第一層的參數(input不算層)。我們稱參數為權重weights,而參數是截距biases。稱為激勵(activation),會通過一個可導的非線性激勵函數h()轉換成:
這些M個函數值就是(5.1)中的基函數的輸出,在神經網絡模型中,稱之為隱含層單元(hidden units)。非線性激勵函數h()通常的選擇是sigmoid函數或者是tanh函數。根據(5.1),這些值會再一次線性組合成output單元的激勵值,
其中k=1,…,K,K是output單元數量。這個轉換是神經網絡的第二層,是bias參數。最終,這些output單元的激勵值會再由合適的激勵函數轉換成合適的最終輸出。和上面的提到的類似,如果是要做回歸問題,激勵函數我們選擇identity,即;如果是做多個2分類問題,我們采用logistic sigmoid function:
如果是多個類別的分類問題,我們采用softmax函數,見PRML書公式(4.62)。
于是,我們把所有階段都組合起來,可以得到總體的神經網絡函數(采用sigmoid output單元,兩層網絡,如下面圖5.1):
因此,神經網絡模型就是一個非線性函數,從輸入的變量集合到輸出的變量集合,并且由可調整的參數向量w來控制。網絡的結構可以見圖5.1,整個網絡是向前傳播的。
?
?
?
我們可以專門增加x0=1和z0=1兩個變量輸入,這樣可以把bias(偏移、截距)項合并到累加里面,簡化了表達,因此可以得到:
以及:
下面的推導會用(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也一樣可以應付,但是是怎么產生這些越層連接的呢?這一點書中沒有展開,不知道這樣的模型在深度網絡結構中有沒有應用呢?有同學看到一定要留言告知哈~)
另外一個很重要的性質,NN模型可以是稀疏的,事實上大腦也是這樣的,不是所有的神經元都是活躍的,只有非常少的一小部分會活躍,不同層的神經元之間也不可能是全連接的。后面再5.5.6節中,我們將看到卷積神經網絡采用的稀疏網絡結構的例子。
我們自然可以設計出更復雜的網絡結構,不過一般來說我們都限定網絡結構為前向網絡,也就是說不存在封閉的有向環,可以見圖5.2表示的那樣,每一個隱層單元或者是輸出單元可以通過下面計算得到:
于是,當有輸入時,網絡中的所有單元都會逐步被影響進而激活(也有可能不激活)。神經網絡模型有很強的近似擬合功能,因此也被稱為universal approximators.
事實上兩層的NN模型就可以擬合任意function,只要隱層單元足夠多以及參數訓練的足夠好。下面的圖5.3說明了NN模型的擬合能力。解釋請看圖左邊的描述。
?
?
5.1.1 權值空間的對稱性
這是前向網絡一個有趣的性質,比如我們來看圖5.1這樣的典型兩層網絡,考察一個隱層單元,如果我們把它的輸入參數的符號全部取反,以tanh函數為例,我們會得到相反的激勵函數值,即tanh(?a) = ?tanh(a)。然后把這個單元所有的輸出連接權重也都取反,我們又可以得到相同的output輸出,也就是說,實際上有兩組不同的權值取值可以得到相同的output輸出。如果有M個隱層單元,實際上有2M種等價的參數取值方案。
另外,如果我們把隱層的兩個單元的輸入輸出權重互相間調換一下,那么整個網絡最終output是一樣的,也就是說任何一種權重的取值組合是所有M!中的一種。可見上面這樣的神經網絡居然有M!2M的權值對稱性可能。這樣的性質在很多激勵函數都是有的,但是一般來說我們很少關心這一點。
總結
以上是生活随笔為你收集整理的今天开始学模式识别与机器学习(PRML),章节5.1,Neural Networks神经网络-前向网络。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天开始学Pattern Recogni
- 下一篇: 今天开始学Pattern Recogni