1. 程式人生 > >感知器和神經網路訓練(公式推導及C++實現)

感知器和神經網路訓練(公式推導及C++實現)

感知器

感知器是一個二元線性分類器,其目標是找到一個超平面將訓練樣本進行分隔(分類),其表示為
這裡寫圖片描述
一般使用的啟用函式不是階躍函式,常用的有sigmoid函式(其導數: σ=σ(1σ))
這裡寫圖片描述
在1個樣本的訓練集上代價函式(最小均方誤差)通常為

C=12|ay|2
訓練過程中步長(學習速率)為αwb的新值為
wib=wiαwiC=bαbC
分別求其梯度,由於在神經元中,上一步的輸出是下一步的輸入,也就是下一步中的自變數,根據鏈式法則可以得到
CwiCb=Czzwi=Czzb
其中
Czzwizb=Caaz=12
a|ay|2az
=(ay)σ(1σ)=wi(i=0n1wixi+b)=xi=wi(i=0n1wixi+b)=1

最終可得
CwiCb=Czzwi=Caazzwi=(ay)σ(z)(1σ(z))xi=Czzb=Caazzb=(ay)σ(z)(1σ(