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