神經網絡算法


 

機器學習算法完整版見fenghaootong-github

神經網絡原理

  • 感知機學習算法
  • 神經網絡
    • 從感知機到神經網絡
    • 多層前饋神經網絡
    • bp算法

感知機學習算法

  • 感知機(perceptron)是二分類的線性分類模型,屬於監督學習算法。輸入為實例的特征向量,輸出為實例的類別(取+1和-1)。感知機對應於輸入空間中將實例划分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面導入了基於誤分類的損失函數,利用梯度下降法 對損失函數進行最優化(最優化)。
  • 是神經網絡和支持向量機的基礎。

感知機定義

假設輸入空間(特征向量)為XRnX⊆Rn,輸出空間為Y=1,+1Y=−1,+1。輸入xXx∈X表示實例的特征向量,對應於輸入空間的點;輸出yYy∈Y表示示例的類別。由輸入空間到輸出空間的函數為

f(x⃗ )=sign(w⃗ x⃗ +b)f(x→)=sign(w→⋅x→+b)

 

sign(x)={+11ifx0elsesign(x)={+1ifx≥0−1else

 

感知機學習策略

如果訓練集是可分的,感知機的學習目的是求得一個能將訓練集正實例點和負實例點完全分開的分離超平面。為了找到這樣一個平面(或超平面),即確定感知機模型參數w⃗ w→和b,我們采用的是損失函數,同時並將損失函數極小化。

  • 對於正確分類的樣本點(xi,yi)(xi→,yi), 有(w⃗ xi+b)yi>0(w→⋅xi→+b)yi>0
  • 對於誤分類的樣本點(xi,yi)(xi→,yi), 有(w⃗ xi+b)yi<0(w→⋅xi→+b)yi<0

誤分類點到超平面的距離:

 

1||w⃗ ||2|(w⃗ xi+b)|1||w→||2|(w→⋅xi→+b)|

 

||w⃗ ||2||w→||2w⃗ w→L2L2范數

對於誤分類點:

 

(w⃗ xi+b)yi>0−(w→⋅xi→+b)yi>0

 

1||w⃗ ||2(w⃗ xi+b)yi−1||w→||2(w→⋅xi→+b)yi

 

所有的點到超平面的距離:

 

1||w⃗ ||2xiM(w⃗ xi+b)yi−1||w→||2∑xi→∈M(w→⋅xi→+b)yi

 

不考慮1||w⃗ ||21||w→||2,就得到了感知機的損失函數:

 

L(w⃗ ,b)=xiM(w⃗ xi+b)yiL(w→,b)=−∑xi→∈M(w→⋅xi→+b)yi

 

感知機學習算法

感知機學習轉變成求解損失函數L(w⃗ ,b)L(w→,b)的最優化問題。最優化的方法是隨機梯度下降法

 

minw⃗ ,bL(w⃗ ,b)=minw⃗ ,bxiM(w⃗ xi+b)yiminw→,bL(w→,b)=−minw→,b∑xi→∈M(w→⋅xi→+b)yi

 

定義損失函數的梯度:

 

w⃗ L(w⃗ ,b)=xiMyixi∇w→L(w→,b)=−∑xi→∈Myixi→

 

bL(w⃗ ,b)=xiMyi∇bL(w→,b)=−∑xi→∈Myi

 

隨機選取一個誤分類點,更新w⃗ ,bw→,b的值:

 

w⃗ :=w⃗ +ηyixiw→:=w→+ηyixi→

 

b:=b+ηyib:=b+ηyi

 

η(0,1]η∈(0,1]

神經網絡

從感知機到神經網絡

  • 感知機可以看作神經網絡的特例。感知機由兩層神經元組成:輸入層接收外界輸入信號,輸出層是M-P神經元。
  • 感知機只有輸出層神經元進行激活函數處理,即只擁有一層功能神經元

多層前饋神經網絡

  • 感知機只擁有一層功能神經元,它只能處理線性可分的問題,要想解決非線性可分問題,可以使用多層功能神經元
  • 神經網絡的結構:

    • 每層神經元與下一層神經元全部相連
    • 同層神經元之間不存在連接
    • 跨層神經元之間也不存在連接
  • 多層前饋神經網絡有一下特點:

    • 掩藏層和輸出層神經元都擁有激活函數
    • 輸入層接收外界輸入信號,不進行激活函數處理
    • 最終結果由輸出層神經元給出

下圖是一個簡單的神經網絡

這里寫圖片描述

激活函數

隱藏層和輸出層都需要激活函數

我們選用sigmod函數作為激活函數:

 

z(l)i=j=1nW(l1)ija(l1)j+b(l1)izi(l)=∑j=1nWij(l−1)aj(l−1)+bi(l−1)

 

f(z(l)i)=11+ez(l)if(zi(l))=11+e−zi(l)

 

參數說明:

  • a(l)i:liai(l):表示第l層第i個單元的輸出值
  • W(l)ij:ljl+1iWij(l):表示第l層第j單元和第l+1層第i單元之間的權重
  • b(l)i:l+1ibi(l):表示第l+1層第i單元的偏置項
  • z(l)i:lizi(l):表示第l層第i個單元輸入加權和

對於給定參數集合 W,bW,b,我們的神經網絡就可以按照函數 hW,b(x)hW,b(x)來計算輸出結果。上圖神經網絡的計算步驟如下:

 

a(2)1=f(W(1)11x1+W(1)12x2+W(1)13x3+b(1)1)a1(2)=f(W11(1)x1+W12(1)x2+W13(1)x3+b1(1))

 

a(2)2=f(W(1)21x1+W(1)22x2+W(1)23x3+b(1)1)a2(2)=f(W21(1)x1+W22(1)x2+W23(1)x3+b1(1))

 

a(2)3=f(W(1)31x1+W(1)32x2+W(1)33x3+b(1)2)a3(2)=f(W31(1)x1+W32(1)x2+W33(1)x3+b2(1))

 

hW,b(x)=a(3)1=f(W(1)11x1+W(1)12x2+W(1)13x3+b(1)1)hW,b(x)=a1(3)=f(W11(1)x1+W12(1)x2+W13(1)x3+b1(1))

 

上面的計算步驟叫做前向傳播

反向傳播算法

代價函數

 

C=12ni=1n||yi(x)a(L)i(x)||2C=12n∑i=1n||yi(x)−ai(L)(x)||2

 

xya(L)L其中,x表示輸入的樣本,y表示實際的分類,a(L)表示預測的輸出,L表示神經網絡的最大層數。

公式及其推導

首先,將第l層第i個神經元中產生的錯誤(即實際值與預測值之間的誤差)定義為:

 

δ(l)iCz(l)iδi(l)≡∂C∂zi(l)

 

為了便於理解,下面都是一個樣本

最后一層神經網絡產生的錯誤:

 

δ(L)i=aCf(z(L)i)δi(L)=∇aC⊙f′(zi(L))

 

用於矩陣或向量之間點對點的乘法運算

由后往前,計算每一層神經網絡產生的錯誤:

 

δ(l)i=((w(l))Tδ(l+1)i)f(z(l)i)δi(l)=((w(l))Tδi(l+1))⊙f′(zi(l))

 

權重的梯度:

 

Cw(l)ij=a(l)jδ(l+1)i∂C∂wij(l)=aj(l)δi(l+1)

 

偏置的梯度:

 

Cb(l)i=δ(l)i∂C∂bi(l)=δi(l)

 

使用梯度下降,訓練參數:

 

w(l):=w(l)ηmi=1nδ(l)i(a(l)i)Tw(l):=w(l)−ηm∑i=1nδi(l)(ai(l))T

 

b(l):=b(l)ηmi=1nδ(l)ib(l):=b(l)−ηm∑i=1nδi(l)

 

實例

神經網絡應用實例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM