本次學(xué)習打卡的是神經(jīng)網(wǎng)絡(luò)模型蔚舀。
1. 神經(jīng)元模型
神經(jīng)網(wǎng)絡(luò)中最基本的單元是神經(jīng)元模型(neuron)。在生物神經(jīng)網(wǎng)絡(luò)的原始機制中,每個神經(jīng)元通常都有多個樹突(dendrite)虑省,一個軸突(axon)和一個細胞體(cell body),樹突短而多分支指攒,軸突長而只有一個慷妙;在功能上,樹突用于傳入其它神經(jīng)元傳遞的神經(jīng)沖動允悦,而軸突用于將神經(jīng)沖動傳出到其它神經(jīng)元膝擂,當樹突或細胞體傳入的神經(jīng)沖動使得神經(jīng)元興奮時,該神經(jīng)元就會通過軸突向其它神經(jīng)元傳遞興奮隙弛。
一直延用至今的是“M-P神經(jīng)元模型”架馋。其中樹突對應(yīng)于輸入部分,每個神經(jīng)元收到n個其他神經(jīng)元傳遞過來的輸入信號全闷,這些信號通過帶權(quán)重的連接傳遞給細胞體叉寂,這些權(quán)重又稱為連接權(quán)(connection weight)。細胞體分為兩部分总珠,前一部分計算總輸入值(即輸入信號的加權(quán)和屏鳍,或者說累積電平),后一部分先計算總輸入值與該神經(jīng)元閾值的差值局服,然后通過激活函數(shù)(activation function)的處理钓瞭,產(chǎn)生輸出從軸突傳送給其它神經(jīng)元。
常見的激活函數(shù)如下:
2. 感知機
感知機由兩層神經(jīng)元組成淫奔,如下圖所示山涡。
感知機權(quán)重的學(xué)習規(guī)則如下:對于訓(xùn)練樣本(x,y),當該樣本進入感知機學(xué)習后鸭丛,會產(chǎn)生一個輸出值竞穷,若該輸出值與樣本的真實標記不一致,則感知機會對權(quán)重進行調(diào)整鳞溉,若激活函數(shù)為階躍函數(shù)瘾带,則調(diào)整的方法為(基于梯度下降法):
3. 誤差逆?zhèn)鞑ニ惴?/b>
神經(jīng)網(wǎng)絡(luò)的學(xué)習主要蘊含在權(quán)重和閾值中,多層網(wǎng)絡(luò)使用上面簡單感知機的權(quán)重調(diào)整規(guī)則顯然不夠用了穿挨,BP神經(jīng)網(wǎng)絡(luò)算法即誤差逆?zhèn)鞑ニ惴ǎ╡rror BackPropagation)正是為學(xué)習多層前饋神經(jīng)網(wǎng)絡(luò)而設(shè)計月弛,BP神經(jīng)網(wǎng)絡(luò)算法是迄今為止最成功的的神經(jīng)網(wǎng)絡(luò)學(xué)習算法。BP算法基于梯度下降策略科盛,學(xué)習率對應(yīng)的算法迭代過程中的更新步長
4. 全局最小和局部最小
模型學(xué)習的過程實質(zhì)上就是一個尋找最優(yōu)參數(shù)的過程帽衙,例如BP算法試圖通過最速下降來尋找使得累積經(jīng)驗誤差最小的權(quán)值與閾值,在談到最優(yōu)時贞绵,一般會提到局部極欣髀堋(local minimum)和全局最小(global minimum)榨崩。
1) 局部極小解:參數(shù)空間中的某個點谴垫,其鄰域點的誤差函數(shù)值均不小于該點的誤差函數(shù)值。
2)全局最小解:參數(shù)空間中的某個點母蛛,所有其他點的誤差函數(shù)值均不小于該點的誤差函數(shù)值翩剪。
要成為局部極小點,只要滿足該點在參數(shù)空間中的梯度為零彩郊。局部極小可以有多個前弯,而全局最小只有一個。全局最小一定是局部極小秫逝,但局部最小卻不一定是全局最小恕出。顯然在很多機器學(xué)習算法中,都試圖找到目標函數(shù)的全局最小违帆。梯度下降法的主要思想就是沿著負梯度方向去搜索最優(yōu)解浙巫,負梯度方向是函數(shù)值下降最快的方向,若迭代到某處的梯度為0刷后,則表示達到一個局部最小的畴,參數(shù)更新停止。
5. 深度學(xué)習
理論上尝胆,參數(shù)越多丧裁,模型復(fù)雜度就越高,容量(capability)就越大班巩,從而能完成更復(fù)雜的學(xué)習任務(wù)渣慕。深度學(xué)習(deep learning)正是一種極其復(fù)雜而強大的模型。
怎么增大模型復(fù)雜度呢抱慌?兩個辦法逊桦,一是增加隱層的數(shù)目,二是增加隱層神經(jīng)元的數(shù)目抑进。前者更有效一些强经,因為它不僅增加了功能神經(jīng)元的數(shù)量,還增加了激活函數(shù)嵌套的層數(shù)寺渗。但是對于多隱層神經(jīng)網(wǎng)絡(luò)匿情,經(jīng)典算法如標準BP算法往往會在誤差逆?zhèn)鞑r發(fā)散(diverge),無法收斂達到穩(wěn)定狀態(tài)信殊。
那要怎么有效地訓(xùn)練多隱層神經(jīng)網(wǎng)絡(luò)呢炬称?一般來說有以下兩種方法:
1)無監(jiān)督逐層訓(xùn)練(unsupervised layer-wise training):每次訓(xùn)練一層隱節(jié)點,把上一層隱節(jié)點的輸出當作輸入來訓(xùn)練涡拘,本層隱結(jié)點訓(xùn)練好后玲躯,輸出再作為下一層的輸入來訓(xùn)練,這稱為預(yù)訓(xùn)練(pre-training)鳄乏。全部預(yù)訓(xùn)練完成后跷车,再對整個網(wǎng)絡(luò)進行微調(diào)(fine-tuning)訓(xùn)練。一個典型例子就是深度信念網(wǎng)絡(luò)(deep belief network橱野,簡稱DBN)朽缴。這種做法其實可以視為把大量的參數(shù)進行分組,先找出每組較好的設(shè)置水援,再基于這些局部最優(yōu)的結(jié)果來訓(xùn)練全局最優(yōu)密强。
2)權(quán)共享(weight sharing):令同一層神經(jīng)元使用完全相同的連接權(quán),典型的例子是卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network裹唆,簡稱CNN)誓斥。這樣做可以大大減少需要訓(xùn)練的參數(shù)數(shù)目。
深度學(xué)習可以理解為一種特征學(xué)習(feature learning)或者表示學(xué)習(representation learning)许帐,無論是DBN還是CNN劳坑,都是通過多個隱層來把與輸出目標聯(lián)系不大的初始輸入轉(zhuǎn)化為與輸出目標更加密切的表示,使原來只通過單層映射難以完成的任務(wù)變?yōu)榭赡艹善琛<赐ㄟ^多層處理距芬,逐漸將初始的“低層”特征表示轉(zhuǎn)化為“高層”特征表示,從而使得最后可以用簡單的模型來完成復(fù)雜的學(xué)習任務(wù)循帐。