学习笔记----周志华《机器学习》第五章(神经网络)(一)
? ? 周志華的《機器學習》算作一本入門的寶書。本文是對周志華的機器學習第五章神經(jīng)網(wǎng)絡(luò)的學習筆記。在第五章主要涉及的內(nèi)容:神經(jīng)網(wǎng)絡(luò)、常見激活函數(shù)、感知機、多層前饋神經(jīng)網(wǎng)絡(luò) 、反向傳播算法(BP算法)、全局最小和局部極小、其他神經(jīng)網(wǎng)絡(luò)(RBF、ART、SOM等網(wǎng)絡(luò))、遞歸神經(jīng)網(wǎng)絡(luò)(如Boltzmann機、Elman網(wǎng)絡(luò))。如果哪里有不對的地方,請不吝指點!
一、什么是神經(jīng)網(wǎng)絡(luò)?
? ? ?關(guān)于神經(jīng)網(wǎng)絡(luò)的定義有很多,本文對于神經(jīng)網(wǎng)絡(luò)的定義:神經(jīng)網(wǎng)絡(luò)是由具有適應(yīng)性的簡單單元(實際上是神經(jīng)元)組成的廣泛并且互聯(lián)的網(wǎng)絡(luò),它的組織能夠模擬生物神經(jīng)系統(tǒng)對真實世界物體所作出的交互反應(yīng)。
? ? 神經(jīng)網(wǎng)絡(luò)的基本模型為神經(jīng)元模型(unit或neuron)。我們基本上都可以想到的是,當神經(jīng)元刺激后,就會相它相鄰的神經(jīng)元發(fā)送“信號”,進而激活其他神經(jīng)元,當其他神經(jīng)元的點位超過一定值(閾值),它就會向其他神經(jīng)元繼續(xù)發(fā)送化學物質(zhì)了。這是其中一個激活過程。下面是常見的M-P神經(jīng)元模型:
? ? M-P神經(jīng)元模型的工作流程大致描述如下:神經(jīng)元接收到來自其他n個神經(jīng)元傳過來的輸入,在通過帶權(quán)重的連接,最后這個總輸入就會和該神經(jīng)元的閾值比較,看所得到的“刺激”能否讓該神經(jīng)元繼續(xù)傳遞下去。最后通過激活函數(shù)處理輸出。
常見的激活函數(shù)又包含階躍函數(shù)、sigmoid函數(shù)、softmax函數(shù)、ReLU函數(shù)等。
(1)階躍函數(shù)
? ? ? ? ?階躍函數(shù)的定義:值呈階梯式變化,階躍函數(shù)以0為界限,輸出從 0 切換為?1(或從 1切換?0)。
(2)sigmoid函數(shù)
? ? ? ? ?sigmoid函數(shù)是一種很高效的激活函數(shù)。它的函數(shù)圖形是一條平滑的曲線,輸出sigmoid(x)隨著輸入x發(fā)生連續(xù)性的變化。而階躍函數(shù)是發(fā)生突變式的變化。
(3)softmax函數(shù)
? ? ? ? ?softmax函數(shù)主要用于分類問題。主要公示為:。
? ? ? ? 該函數(shù)的分子是輸入信號的指數(shù)函數(shù),分母是所有輸入信號的指數(shù)函數(shù)的和。 在這篇blog中,用到了softmax作正則化的處理,讓最終的輸出為概率,也就是說可以生成百分數(shù)的結(jié)果,這樣做不僅可以找到最大概率的分類,而且可以知道各個分類計算的概率值。
(4)ReLU函數(shù)
? ? ? ? ?其實這個函數(shù)我了解的不是很多,在一篇關(guān)于兩層神經(jīng)網(wǎng)絡(luò)的知乎文章中有了解過一點。在神經(jīng)網(wǎng)絡(luò)發(fā)展的歷史上,sigmoid函數(shù)很早就開始被使用了,而最近則主要使用ReLU(Rectified Linear Unit)函數(shù)。這里簡單解釋一下。ReLU函數(shù),當輸入為負值時,輸出為0,當輸入為非負,輸出等于輸入。
? ? 看到這里我們可以更直觀、更簡單的描述神經(jīng)網(wǎng)絡(luò):神經(jīng)網(wǎng)絡(luò)是許多神經(jīng)元按照某一結(jié)構(gòu)層次組合起來的。? ??
二、感知機(perceptron)和多層前饋神經(jīng)網(wǎng)絡(luò)
? ? ?感知機是由兩層神經(jīng)元組成(兩個)。輸入層接收外界輸入信號給輸出層,輸出層是M-P神經(jīng)元。由此可以知道感知機只擁有一層功能神經(jīng)元,它只有輸出層可以進行激活函數(shù)的處理,這個處理能力對我們現(xiàn)實的問題的處理是遠遠不夠的。感知機能處理與、或、非問題。兩層感知機能處理異或問題。兩層感知機包含輸入層、輸出層、隱藏層。
? ? 多層前饋神經(jīng)網(wǎng)絡(luò):不存在跨層連接,但是同層間可以多條連接,每層神經(jīng)元與下一層神經(jīng)元實現(xiàn)全互連。注意:這里的前饋不代表信號不能往回傳!而是指網(wǎng)絡(luò)拓撲結(jié)構(gòu)上不存在環(huán)或回路。注意:只要包含隱層就是多層網(wǎng)絡(luò),隱層中包含功能神經(jīng)元!!
? ?所以神經(jīng)元到底學的什么??神經(jīng)網(wǎng)絡(luò)的學習過程,是根據(jù)訓練數(shù)據(jù)來調(diào)整神經(jīng)元之間的“連接權(quán)”以及每個功能神經(jīng)元的閾值。
三、反向傳播算法(BP算法)
? ? BP算法是一種迭代學習算法,它主要應(yīng)用于多層前饋神經(jīng)網(wǎng)絡(luò)和其他類型的神經(jīng)網(wǎng)絡(luò)。BP算法給予梯度下降側(cè)列,以目標的負梯度方向?qū)?shù)進行調(diào)整,BP算法的最終目標是最小化訓練集D上的累積誤差。它的算法過程如下。
? ?標準的BP算法每次針對一個訓練樣例更新連接權(quán)和閾值,更新參數(shù)很頻繁,這樣可能將這個更新的效果“抵消”。除了上述“標準”BP算法外,還有累計BP算法。累計BP算法:直接針對累積誤差最小化,它讀取整個訓練集D,讀完一遍后才對參數(shù)更新,更新的頻次要少得多。但是累計BP算法對于訓練集非常大時,當累計誤差下降到一定程度后,進一步下降會很緩慢很緩慢,這是一個會舍棄累計BP算法的原因。
? BP算法會出現(xiàn)一個缺點:過擬合。解決它的策略有兩種:(1)早停;(2)正則化。
四、全局最小和局部極小
? ? 有高等數(shù)學的基礎(chǔ),實際上我們可以很直觀的理解什么是全局最小?什么是局部極小?狹義來講全局最小一定是局部極小,反之不成立。我們在實際的算法操作中,是想要直接遇到全局最小,而不是局部最小。所以提出了很多可能的能跳出局部極小的方案。(雖然實際上,可能跳出的是全局最小)
?(1)從多個不同的初始點開始搜索,這樣可能會陷入不同的局部極小,然后選最接近全局最小的。
?(2)模擬退火技術(shù)。在每一步都以一定的概率接受比當前解更差的結(jié)果,從而有助于跳出。這樣在每次迭代過程中,我接受比當前更差的概率會減小,這樣可以保證算法穩(wěn)定。
?(3)隨機梯度下降法。加入了隨機因素,這樣即便陷入了局部極小,計算出來的梯度也不為0,這樣就還有機會繼續(xù)搜索。
? ??除此之外還有遺傳算法,也常用來訓練神經(jīng)網(wǎng)絡(luò)。
雖然在書上,第五章只有短短三十頁左右。一篇篇幅也是很難完整記錄下來的,今天就寫到這里吧。
總結(jié)
以上是生活随笔為你收集整理的学习笔记----周志华《机器学习》第五章(神经网络)(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 到底什么是P问题,NP问题,NPC问题,
- 下一篇: 学习笔记----周志华《机器学习》第五章