機器學習算法完整版見fenghaootong-github
神經網絡原理
- 感知機學習算法
- 神經網絡
- 從感知機到神經網絡
- 多層前饋神經網絡
- bp算法
感知機學習算法
- 感知機(perceptron)是二分類的線性分類模型,屬於監督學習算法。輸入為實例的特征向量,輸出為實例的類別(取+1和-1)。感知機對應於輸入空間中將實例划分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面導入了基於誤分類的損失函數,利用梯度下降法 對損失函數進行最優化(最優化)。
- 是神經網絡和支持向量機的基礎。
感知機定義
假設輸入空間(特征向量)為X⊆RnX⊆Rn,輸出空間為Y=−1,+1Y=−1,+1。輸入x∈Xx∈X表示實例的特征向量,對應於輸入空間的點;輸出y∈Yy∈Y表示示例的類別。由輸入空間到輸出空間的函數為
f(x⃗ )=sign(w⃗ ⋅x⃗ +b)f(x→)=sign(w→⋅x→+b)
感知機學習策略
如果訓練集是可分的,感知機的學習目的是求得一個能將訓練集正實例點和負實例點完全分開的分離超平面。為了找到這樣一個平面(或超平面),即確定感知機模型參數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
誤分類點到超平面的距離:
||w⃗ ||2||w→||2為w⃗ w→的L2L2范數
對於誤分類點:
所有的點到超平面的距離:
不考慮1||w⃗ ||21||w→||2,就得到了感知機的損失函數:
感知機學習算法
感知機學習轉變成求解損失函數L(w⃗ ,b)L(w→,b)的最優化問題。最優化的方法是隨機梯度下降法
定義損失函數的梯度:
隨機選取一個誤分類點,更新w⃗ ,bw→,b的值:
η∈(0,1]η∈(0,1]
神經網絡
從感知機到神經網絡
- 感知機可以看作神經網絡的特例。感知機由兩層神經元組成:輸入層接收外界輸入信號,輸出層是M-P神經元。
- 感知機只有輸出層神經元進行激活函數處理,即只擁有一層功能神經元
多層前饋神經網絡
- 感知機只擁有一層功能神經元,它只能處理線性可分的問題,要想解決非線性可分問題,可以使用多層功能神經元
-
神經網絡的結構:
- 每層神經元與下一層神經元全部相連
- 同層神經元之間不存在連接
- 跨層神經元之間也不存在連接
-
多層前饋神經網絡有一下特點:
- 掩藏層和輸出層神經元都擁有激活函數
- 輸入層接收外界輸入信號,不進行激活函數處理
- 最終結果由輸出層神經元給出
下圖是一個簡單的神經網絡

激活函數
隱藏層和輸出層都需要激活函數
我們選用sigmod函數作為激活函數:
參數說明:
- a(l)i:表示第l層第i個單元的輸出值ai(l):表示第l層第i個單元的輸出值
- W(l)ij:表示第l層第j單元和第l+1層第i單元之間的權重Wij(l):表示第l層第j單元和第l+1層第i單元之間的權重
- b(l)i:表示第l+1層第i單元的偏置項bi(l):表示第l+1層第i單元的偏置項
- z(l)i:表示第l層第i個單元輸入加權和zi(l):表示第l層第i個單元輸入加權和
對於給定參數集合 W,bW,b,我們的神經網絡就可以按照函數 hW,b(x)hW,b(x)來計算輸出結果。上圖神經網絡的計算步驟如下:
上面的計算步驟叫做前向傳播
反向傳播算法
代價函數
其中,x表示輸入的樣本,y表示實際的分類,a(L)表示預測的輸出,L表示神經網絡的最大層數。其中,x表示輸入的樣本,y表示實際的分類,a(L)表示預測的輸出,L表示神經網絡的最大層數。
公式及其推導
首先,將第l層第i個神經元中產生的錯誤(即實際值與預測值之間的誤差)定義為:
為了便於理解,下面都是一個樣本
最后一層神經網絡產生的錯誤:
⊙⊙ 用於矩陣或向量之間點對點的乘法運算
由后往前,計算每一層神經網絡產生的錯誤:
權重的梯度:
偏置的梯度:
使用梯度下降,訓練參數:
實例
