Datawhale七月組隊學(xué)習(xí)——”吃瓜教程“Task04

本次學(xué)習(xí)打卡的是神經(jīng)網(wǎng)絡(luò)模型。

1. 神經(jīng)元模型

神經(jīng)網(wǎng)絡(luò)中最基本的單元是神經(jīng)元模型(neuron)。在生物神經(jīng)網(wǎng)絡(luò)的原始機(jī)制中,每個神經(jīng)元通常都有多個樹突(dendrite),一個軸突(axon)和一個細(xì)胞體(cell body),樹突短而多分支,軸突長而只有一個;在功能上,樹突用于傳入其它神經(jīng)元傳遞的神經(jīng)沖動,而軸突用于將神經(jīng)沖動傳出到其它神經(jīng)元,當(dāng)樹突或細(xì)胞體傳入的神經(jīng)沖動使得神經(jīng)元興奮時,該神經(jīng)元就會通過軸突向其它神經(jīng)元傳遞興奮。

一直延用至今的是“M-P神經(jīng)元模型”。其中樹突對應(yīng)于輸入部分,每個神經(jīng)元收到n個其他神經(jīng)元傳遞過來的輸入信號,這些信號通過帶權(quán)重的連接傳遞給細(xì)胞體,這些權(quán)重又稱為連接權(quán)(connection weight)。細(xì)胞體分為兩部分,前一部分計算總輸入值(即輸入信號的加權(quán)和,或者說累積電平),后一部分先計算總輸入值與該神經(jīng)元閾值的差值,然后通過激活函數(shù)(activation function)的處理,產(chǎn)生輸出從軸突傳送給其它神經(jīng)元。

常見的激活函數(shù)如下:

2. 感知機(jī)

感知機(jī)由兩層神經(jīng)元組成,如下圖所示。

感知機(jī)權(quán)重的學(xué)習(xí)規(guī)則如下:對于訓(xùn)練樣本(x,y),當(dāng)該樣本進(jìn)入感知機(jī)學(xué)習(xí)后,會產(chǎn)生一個輸出值,若該輸出值與樣本的真實標(biāo)記不一致,則感知機(jī)會對權(quán)重進(jìn)行調(diào)整,若激活函數(shù)為階躍函數(shù),則調(diào)整的方法為(基于梯度下降法):

3. 誤差逆?zhèn)鞑ニ惴?/b>

神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)主要蘊(yùn)含在權(quán)重和閾值中,多層網(wǎng)絡(luò)使用上面簡單感知機(jī)的權(quán)重調(diào)整規(guī)則顯然不夠用了,BP神經(jīng)網(wǎng)絡(luò)算法即誤差逆?zhèn)鞑ニ惴ǎ╡rror BackPropagation)正是為學(xué)習(xí)多層前饋神經(jīng)網(wǎng)絡(luò)而設(shè)計,BP神經(jīng)網(wǎng)絡(luò)算法是迄今為止最成功的的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。BP算法基于梯度下降策略,學(xué)習(xí)率對應(yīng)的算法迭代過程中的更新步長


4. 全局最小和局部最小

模型學(xué)習(xí)的過程實質(zhì)上就是一個尋找最優(yōu)參數(shù)的過程,例如BP算法試圖通過最速下降來尋找使得累積經(jīng)驗誤差最小的權(quán)值與閾值,在談到最優(yōu)時,一般會提到局部極?。╨ocal minimum)和全局最?。╣lobal minimum)。

1) 局部極小解:參數(shù)空間中的某個點,其鄰域點的誤差函數(shù)值均不小于該點的誤差函數(shù)值。

2)全局最小解:參數(shù)空間中的某個點,所有其他點的誤差函數(shù)值均不小于該點的誤差函數(shù)值。


要成為局部極小點,只要滿足該點在參數(shù)空間中的梯度為零。局部極小可以有多個,而全局最小只有一個。全局最小一定是局部極小,但局部最小卻不一定是全局最小。顯然在很多機(jī)器學(xué)習(xí)算法中,都試圖找到目標(biāo)函數(shù)的全局最小。梯度下降法的主要思想就是沿著負(fù)梯度方向去搜索最優(yōu)解,負(fù)梯度方向是函數(shù)值下降最快的方向,若迭代到某處的梯度為0,則表示達(dá)到一個局部最小,參數(shù)更新停止。

5. 深度學(xué)習(xí)

理論上,參數(shù)越多,模型復(fù)雜度就越高,容量(capability)就越大,從而能完成更復(fù)雜的學(xué)習(xí)任務(wù)。深度學(xué)習(xí)(deep learning)正是一種極其復(fù)雜而強(qiáng)大的模型。

怎么增大模型復(fù)雜度呢?兩個辦法,一是增加隱層的數(shù)目,二是增加隱層神經(jīng)元的數(shù)目。前者更有效一些,因為它不僅增加了功能神經(jīng)元的數(shù)量,還增加了激活函數(shù)嵌套的層數(shù)。但是對于多隱層神經(jīng)網(wǎng)絡(luò),經(jīng)典算法如標(biāo)準(zhǔn)BP算法往往會在誤差逆?zhèn)鞑r發(fā)散(diverge),無法收斂達(dá)到穩(wěn)定狀態(tài)。

那要怎么有效地訓(xùn)練多隱層神經(jīng)網(wǎng)絡(luò)呢?一般來說有以下兩種方法:

1)無監(jiān)督逐層訓(xùn)練(unsupervised layer-wise training):每次訓(xùn)練一層隱節(jié)點,把上一層隱節(jié)點的輸出當(dāng)作輸入來訓(xùn)練,本層隱結(jié)點訓(xùn)練好后,輸出再作為下一層的輸入來訓(xùn)練,這稱為預(yù)訓(xùn)練(pre-training)。全部預(yù)訓(xùn)練完成后,再對整個網(wǎng)絡(luò)進(jìn)行微調(diào)(fine-tuning)訓(xùn)練。一個典型例子就是深度信念網(wǎng)絡(luò)(deep belief network,簡稱DBN)。這種做法其實可以視為把大量的參數(shù)進(jìn)行分組,先找出每組較好的設(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é)習(xí)可以理解為一種特征學(xué)習(xí)(feature learning)或者表示學(xué)習(xí)(representation learning),無論是DBN還是CNN,都是通過多個隱層來把與輸出目標(biāo)聯(lián)系不大的初始輸入轉(zhuǎn)化為與輸出目標(biāo)更加密切的表示,使原來只通過單層映射難以完成的任務(wù)變?yōu)榭赡?。即通過多層處理,逐漸將初始的“低層”特征表示轉(zhuǎn)化為“高層”特征表示,從而使得最后可以用簡單的模型來完成復(fù)雜的學(xué)習(xí)任務(wù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容