2021年3月14日 星期日

類神經網路 基本入門

今天我們要介紹類神經網路與演算法

單一神經細胞

圖1


假設圖1是一個神經細胞元,在神經細胞傳遞中需要有輸入,也需要包含輸出,每個神經元可能會包含多個輸入(A & B),加上一個或多個Bias(b),並包含一個輸出

我們通常會以一個簡單的公式來計算輸出值Y=A*W1+B*W2+b

W1與W2就是類神經元的權重


多層類神經架構

圖2

圖2為一個多層類神經架構,包含輸入層、隱藏層與輸出層

W的計算為 A*W11+B*W21+b1

X的計算為 A*W12+B*W22+b1

輸出Y則是W*N11+X*N21

在神經網路中W與N這些都代表權重值,而權重本身影響決策

在訓練過程中,權重會依照每次計算結果的誤差進行修正

初始權重值通常是經驗值或亂數決定


實際運算

表1
表1為一個AND閘,並使用圖2作為類神經訓練的架構

計算時先假設所有權重初值皆為1(實務上為亂數),並忽略Bias

那麼計算出來的Y=(1*1+1*1)*1+(1*1+1*1)*1=4

圖3
當輸出等於4時,與我們預設的輸出目標1差距過大,此時就需要進行權重修正

如圖3所示,經過運算後的delta值為-3,因為delta值為負表示計算結果離目標輸出過大,那就需要將權重W與權重N調小

假設修正公式W(new)=W(old)+beta*delta=W(old)*0.2*(-0.3)           

                        Ps.假設beta=0.2(該值依經驗調整)

權重修正計算如下

W11=W11+beta*delta=1*0.2*(-3)=0.4

W12=W12+beta*delta=1*0.2*(-3)=0.4

W21=W21+beta*delta=1*0.2*(-3)=0.4

W22=W22+beta*delta=1*0.2*(-3)=0.4

N11=N11+beta*delta=1*0.2*(-3)=0.4

N21=N21+beta*delta=1*0.2*(-3)=0.4

修正後權重結果為0.4


重新運算輸出得到如下

Y=(1*0.4+1*0.4)*0.4+(1*0.4+1*0.4)*0.4=0.32 

新的誤差量已降至1-0.32=0.68

依照上述方式不斷運算直到誤差量等於0.便完成訓練

但實務上運到0是非常耗時的且可能落入區域極值

故我們可能會設定目標0.0001或0.001這樣趨近於0的目標.較0符合經濟效益

教學與操作影片



0 意見:

張貼留言

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates