ML——神經(jīng)網(wǎng)絡(luò)
神經(jīng)元模型
神經(jīng)網(wǎng)絡(luò)是由具有適應(yīng)性的簡單單元組成的廣泛并行互連的網(wǎng)絡(luò)跷跪,最基本的成分是神經(jīng)元模型痒谴,下圖便是一個“M-P神經(jīng)元模型”魏蔗。
在這個模型中舰绘,神經(jīng)元接到來自n個其他神經(jīng)元傳遞過來的輸入信號虱而,通過帶權(quán)重的連接進行傳遞筏餐,神經(jīng)元接收到的總輸入值將與神經(jīng)元的閾值θ進行比較,然后通過激活函數(shù)f處理產(chǎn)生神經(jīng)元的輸出牡拇。
理想的激活函數(shù)為(a)階躍函數(shù)魁瞪,輸出值“0”代表神經(jīng)元抑制,“1”代表神經(jīng)元興奮惠呼,但考慮到階躍函數(shù)不連續(xù)导俘、不光滑的性質(zhì),因此常用sigmoid作為激活函數(shù)剔蹋。
把多個神經(jīng)元按一定的層次結(jié)構(gòu)連接起來就得到了神經(jīng)網(wǎng)絡(luò)趟畏。
感知機和多層網(wǎng)絡(luò)
如圖,感知機有兩層神經(jīng)元滩租,輸入層接收外界輸入信號后傳遞給輸出層赋秀,輸出層是上述介紹的M-P神經(jīng)元。
感知機只有輸出層神經(jīng)元進行激活函數(shù)處理律想,學(xué)習(xí)能力非常有限猎莲。對于線性可分的問題,感知機的學(xué)習(xí)過程一定能收斂技即,但對于非線性可分問題著洼,需考慮使用多層功能神經(jīng)元,即在輸入層和輸出層之間添加隱層,隱層和輸出層神經(jīng)元都是具有激活函數(shù)的功能神經(jīng)元身笤。
上圖所示的層級結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)叫“多層前饋神經(jīng)網(wǎng)絡(luò)”:每層神經(jīng)元與下一層神經(jīng)元全互連豹悬,神經(jīng)元之間不存在同層連接,也不存在跨層連接液荸。其中瞻佛,輸入層神經(jīng)元僅接受外界輸入,不進行函數(shù)處理娇钱,隱層和輸出層包含功能神經(jīng)元伤柄。
反向傳播算法BP
反向傳播(簡稱BP)算法是求解多層網(wǎng)絡(luò)算法中的杰出代表。一般所說的“BP網(wǎng)”是指用BP算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò)文搂。
BP算法推導(dǎo)
給定訓(xùn)練集下圖給出了具有d個輸入神經(jīng)元适刀、l個輸出神經(jīng)元、q個隱層神經(jīng)元的多層前饋神經(jīng)網(wǎng)煤蹭,隱層第h個神經(jīng)元閾值為
笔喉,輸出層第j個神經(jīng)元閾值為
,輸入層第i個神經(jīng)元與隱層第h個神經(jīng)元間的連接權(quán)為
硝皂,隱層第h個神經(jīng)元與輸出層第j個神經(jīng)元間的連接權(quán)為
然遏,隱層第h個神經(jīng)元輸出為
,且隱層和輸出層都使用sigmoid函數(shù)吧彪。
對訓(xùn)練例,設(shè)神經(jīng)網(wǎng)絡(luò)輸出為
丢早,即?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
則網(wǎng)絡(luò)在上的均方誤差為
BP算法在迭代的每一輪采用廣義感知機學(xué)習(xí)規(guī)則姨裸,基于梯度下降法,以目標的負梯度方向?qū)?shù)進行調(diào)整怨酝。
以隱層到輸出層的連接權(quán)為例:?
復(fù)合函數(shù)求導(dǎo)得:? ? ? ? ? ? ? ? ? ? ? ??
BP算法流程
BP算法先將輸入示例提供給輸入層神經(jīng)元傀缩,然后逐層將信號前傳,直到產(chǎn)生輸出層的結(jié)果农猬,然后計算輸出層誤差赡艰,再將誤差逆向傳播至隱層神經(jīng)元,最后根據(jù)隱層神經(jīng)元的誤差對連接權(quán)和閾值進行調(diào)整斤葱,如此循環(huán)迭代慷垮,直到達到某些條件為止。流程圖如下:
BP算法的目標是要最小化訓(xùn)練集D上的累積誤差揍堕。上述“標準BP算法”每次更新只針對單個樣例料身,需進行多次迭代已達到累積誤差極小點,由于其強大的表示能力衩茸,BP常會發(fā)生過擬合芹血,因此訓(xùn)練誤差持續(xù)降低,但測試誤差逐漸升高。常用“early stopping”或“regularization”方法解決幔烛。
early stopping:將數(shù)據(jù)集分為訓(xùn)練集和驗證集啃擦。訓(xùn)練集用于計算梯度、更新連接權(quán)和閾值饿悬;驗證集用于估計誤差令蛉。若訓(xùn)練集誤差降低但驗證集誤差升高則停止訓(xùn)練,同時返回具有最小驗證集誤差的連接權(quán)和閾值乡恕。
regularization:在誤差目標函數(shù)中增加一個用于描述網(wǎng)絡(luò)復(fù)雜度的部分言询,eg連接權(quán)與閾值的平方和,其中傲宜,常用交叉驗證法來估計运杭。
全局最小與局部最小
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程可看做一個參數(shù)尋優(yōu)過程,例如BP算法就是通過梯度下降尋找使累積誤差E最小的權(quán)值和閾值函卒。常說的最優(yōu)有“局部極小”和“全局最小”
局部極小解:參數(shù)空間中某個點辆憔,其領(lǐng)域點的誤差函數(shù)值均不小于該店的函數(shù)值;
全局最小解:參數(shù)空間中某個點报嵌,所有其他點的誤差函數(shù)值均不小于該店的函數(shù)值虱咧;
基于梯度的搜索是使用最為廣泛的參數(shù)尋優(yōu)方法,但當(dāng)誤差函數(shù)具有多個局部極小锚国,則不能保證此法找到的解是全局最小腕巡,因此常用以下一些啟發(fā)式算法:
1)以多組不同參數(shù)值初始化多個神經(jīng)網(wǎng)絡(luò),按標準方法訓(xùn)練后血筑,取其中誤差最小的解作為最終參數(shù)绘沉;
2)使用“模擬退火”:每一部都以一定的概率接受比當(dāng)前解更差的結(jié)果,但也可能會跳出全局最胁蜃堋车伞;
3)使用隨機梯度下降,在計算梯度時加入隨機因素喻喳,使得在局部最小時另玖,梯度仍可能不為0 ,能繼續(xù)搜索表伦。
其他常見網(wǎng)絡(luò)
徑向基(RBF)網(wǎng)絡(luò):單隱層前饋神經(jīng)網(wǎng)絡(luò)谦去,示意圖如下:
訓(xùn)練RBF網(wǎng)絡(luò):1)利用隨機采樣、聚類等方法確定神經(jīng)元中心ci蹦哼;2)利用BP算法確定參數(shù)w和β哪轿。
Elman網(wǎng)絡(luò):遞歸神經(jīng)網(wǎng)絡(luò),隱層神經(jīng)元的輸出被反饋回來與下一時刻t+1輸入層神經(jīng)元的信號一起翔怎,作為隱層神經(jīng)元在下一時刻的輸入窃诉,實現(xiàn)時間序列建模的目的杨耙。
Boltzmann機:基于能量的模型,能量最小化時達到理想狀態(tài)飘痛。標準的Boltzmann機是全連接的珊膜,但計算復(fù)雜度高。Restricted?Boltzmann機則進行了改進宣脉,層內(nèi)無連接车柠,層間有連接,一般用對比散度來進行訓(xùn)練塑猖。
深度學(xué)習(xí)
理論上竹祷,參數(shù)越多模型越復(fù)雜,容量越大羊苟,深度學(xué)習(xí)模型就是復(fù)雜且容量大的模型塑陵,它通常有八九層甚至更多隱層。為提高容量蜡励,一般會采用增加隱含層數(shù)目和增加隱含層神經(jīng)元數(shù)目的方法令花。
訓(xùn)練:
無監(jiān)督逐層訓(xùn)練:每次訓(xùn)練一層隱結(jié)點,把上一層隱結(jié)點的輸出作為輸入凉倚,本層隱結(jié)點的輸出作為下一層隱結(jié)點的輸入兼都,稱為“預(yù)訓(xùn)練”,預(yù)訓(xùn)練完成后進行“微調(diào)”稽寒。預(yù)訓(xùn)練+微調(diào)可看成將大量參數(shù)分組扮碧,找出每組局部較好設(shè)置,基于其聯(lián)合進行全局尋優(yōu)杏糙。
權(quán)共享:令同一層神經(jīng)元使用完全相同的連接權(quán)慎王。
周志華《機器學(xué)習(xí)》