八、神經(jīng)網(wǎng)絡(luò)

神經(jīng)網(wǎng)絡(luò)(Neural Network)

? ? 爆發(fā)要素:大數(shù)據(jù)、計(jì)算能力(GPU)、算法

單層感知器


? ? 輸入節(jié)點(diǎn):x1,x2,x3

? ? 輸出節(jié)點(diǎn):y

? ? 權(quán)向量:w1,w2,w3

? ? 偏置因子:b

? ? 激活函數(shù):sign(x)= 1,x\geq 0;-1,x < 0,上圖中為f(\sum_{i}w_ix_i+b)

感知器學(xué)習(xí)規(guī)則

????y=f(\sum_{i}w_ix_i),i=0,1,2,...,y是網(wǎng)絡(luò)輸出,fsign函數(shù)

????\Delta w_i = \eta (t-y)x_i\eta學(xué)習(xí)率,t表示正確的標(biāo)簽,ty取值為\pm 1


????\Delta w_i = \pm 2\eta x_i, ?? (權(quán)值改變的情況)

????w_i = w_i+\Delta w_i


eg:

? ? 設(shè)t=1,\eta = 1,x_1=1,w_1 = -5,b=0

? ? step1:

????y = sign(1*(-5)) = -1

????\Delta w = 1*(1-(-1))*1=2

????w_1 = w_1+\Delta w=-3

? ? step2

????y = sign(1*(-3)) = -1

????\Delta w = 1*(1-(-1))*1=2

????w_1 = w_1+\Delta w=-1

? ? step3

????y = sign(1*(-1)) = -1

????\Delta w = 1*(1-(-1))*1=2

????w_1 = w_1+\Delta w=1

????y = sign(1*1)=1=t


學(xué)習(xí)率\eta取值一般取0-1之間,太大容易造成權(quán)值調(diào)整不穩(wěn)定,太小則權(quán)值調(diào)整太慢,迭代次數(shù)太多。

模型收斂條件:誤差小于某個(gè)預(yù)先設(shè)定的較小的值

? ? ? ? ? ? ? ? ? ? ? ?? 兩次迭代之間的權(quán)值變化已經(jīng)很小

? ? ? ? ? ? ? ? ? ? ? ?? 設(shè)定最大迭代次數(shù),當(dāng)?shù)^最大次數(shù)就停止(常用)



:假設(shè)平面坐標(biāo)系上有4個(gè)點(diǎn),(3,3),(4,3)這兩個(gè)點(diǎn)的標(biāo)簽為1,(1,1),(0,2)這兩個(gè)點(diǎn)的標(biāo)簽為-1,構(gòu)建神經(jīng)網(wǎng)絡(luò)來分類。

思路:已知要分類的數(shù)據(jù)是2維數(shù)據(jù),所以只需要2個(gè)輸入節(jié)點(diǎn),可把偏置值也設(shè)為一個(gè)節(jié)點(diǎn),即3個(gè)輸入節(jié)點(diǎn)。即,輸入數(shù)據(jù)數(shù)據(jù)有4個(gè)(1,3,3),(1,4,3),(1,1,1),(1,0,2)數(shù)據(jù)對(duì)應(yīng)標(biāo)簽為(1,1,-1,-1),初始化權(quán)值w0,w1,w2,取-1-1的隨機(jī)數(shù),學(xué)習(xí)率(learning rate)設(shè)置為0.11,激活函數(shù)為sign函數(shù)

代碼見——九、神經(jīng)網(wǎng)絡(luò)代碼



線性神經(jīng)網(wǎng)絡(luò)

? ? 感知器的激活函數(shù)只能輸出兩種可能的值,而線性神經(jīng)網(wǎng)絡(luò)的輸出可以取任意值,其激活函數(shù)是線性函數(shù)。線性神經(jīng)網(wǎng)絡(luò)采用Widrow-Hoff學(xué)習(xí)規(guī)則,即LMS(Least Mean Square)算法來調(diào)整網(wǎng)絡(luò)的權(quán)值和偏置。

????線性神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)上與感知器非常相似,僅是激活函數(shù)不同,在訓(xùn)練模型時(shí)把原來的sign函數(shù)改成了purelin函數(shù):y=x。

激活函數(shù)(Activation Function)

????如果不用激活函數(shù),每一層輸出都是上層輸入的線性函數(shù),無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合,如果使用的話,激活函數(shù)給神經(jīng)元引入了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù),這樣神經(jīng)網(wǎng)絡(luò)就可以應(yīng)用到眾多的非線性模型中

常見激活函數(shù)見:附、常見激活函數(shù) - 簡書

Delta學(xué)習(xí)規(guī)則

????\delta學(xué)習(xí)規(guī)則,也可以稱為連續(xù)感知器學(xué)習(xí)規(guī)則,是一種利用梯度下降法的一般性的學(xué)習(xí)規(guī)則。

代價(jià)函數(shù)E = \frac{1}{2}(t-y)^2 = \frac{1}{2}[t-f(W^TX)]^2

? ? 其中y是預(yù)測值,誤差E是權(quán)向量W的函數(shù),想使得E最小,W應(yīng)與誤差的負(fù)梯度成正比,即

????\Delta W = -\eta E’ = \eta X^T(t-y)f’(W^TX) = \eta X^T\delta

????\Delta W_i = -\eta E’ = \eta X_i(t-y)f’(W^TX) = \eta X_i\delta \delta = (t-y)f’(W^TX)


解決異或問題

? ? madaline可以用一種間接的方式解決線性不可分的問題,方法是用多個(gè)線性函數(shù)對(duì)區(qū)域進(jìn)行劃分,然后對(duì)各個(gè)神經(jīng)元的輸出做邏輯運(yùn)算。


Madaline結(jié)構(gòu)圖


Madaline實(shí)現(xiàn)異或


? ? 線性神經(jīng)網(wǎng)絡(luò)解決異或不可分問題的另一個(gè)方法是,對(duì)神經(jīng)元添加非線性輸入,從而引入非線性成分,這樣做會(huì)使等效的輸入維度變大,如圖:


線性網(wǎng)絡(luò)解決非線性問題

x_0,x_1,x_1^2,x_1x_2,x_2,x_2^2


BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)

? ? BP算法:

????????E = \frac{1}{2}(t-y)^2

????????\frac{\partial E}{\partial W^l} = -(X^l)^T \delta ^l

????????\Delta W^l = -\eta \frac{\partial E}{\partial W^l} = \eta(X^l)^T\delta^l ?? (Delta學(xué)習(xí)規(guī)則)

????????\delta^L = (t-y)f’(X^LW^L)

????????\delta^l = \delta^{l+1}(W^{l+1})^Tf’(X^lW^l) ? ? ?? (\delta^l l層學(xué)習(xí)信號(hào),\delta^L輸出層學(xué)習(xí)信號(hào),w^ll \rightarrow l+1層權(quán)值,X^ll層輸入信號(hào))

? ? 激活函數(shù)常使用ReLu,因?yàn)?img class="math-inline" alt="\delta^L = (t-y)f’(X^LW^L)" src="https://math.jianshu.com/math?formula=%5Cdelta%5EL%20%3D%20(t-y)f%E2%80%99(X%5ELW%5EL)" mathimg="1">

? ? 調(diào)整權(quán)值的原則是使誤差不斷的減小,因此應(yīng)使權(quán)值的調(diào)整量與誤差的梯度下降成正比

注:激活函數(shù)的取值盡量不要選取趨近飽和的值,否則幾乎學(xué)不到東西

? ? ?? 隱藏層太高會(huì)導(dǎo)致梯度消失的問題

? ? ?? 導(dǎo)數(shù)不能大于1,否則會(huì)導(dǎo)致梯度爆炸問題

? ? ?? W的初始化采用正則初始化方式更好?W--U[-\frac{\sqrt{6} }{\sqrt{n_j+n_{j+1}}},\frac{\sqrt{6} }{\sqrt{n_j+n_{j+1}}}]

? ? ?? 使用sigmoid或tanH激活與標(biāo)準(zhǔn)初始化方式,效果較差,收斂慢。會(huì)收斂到一個(gè)局部最小值中

? ? ?? 使用softsign激活與正則初始化,比較健壯

? ? ?? tanH使用正則初始化,效果也不錯(cuò),最好使用預(yù)訓(xùn)練,pre-training

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

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

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