iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 29
0

在前面的文章已經有介紹過Preceptron了,這是最簡單的神經網路,雖然課程裡面沒有要直接把Model實做出來的部分
但是為了讓文章結尾精彩一點我們要來實作Preceptron囉!
要實作Preceptron之前我們要來徹底的了解Preceptron的工作原理囉!
首先選擇我們的資料集,我們要用ML的經典Dataset,IRIS的Dataset鳶尾花數據集,也就是我們要透過花萼長度、花萼寬度、花瓣長度、花瓣寬度來預測鳶尾花的種類,不過呢在這組數據裡,我們有三種鳶尾花而我們的Preceptron只能做二元分類而已QAQ所以我們把原本的數據集(0、1、2)這三種只取(0、1)這兩種來做預測!

我們已經知道輸入有花萼長度、花萼寬度、花瓣長度、花瓣寬度四個資料來做預測,
於是我們Preceptron的輸入有4個我們要分別乘上權重,並且加總,也就是做加權和!
加權和算完之後我們要加上一個偏差,偏差就類似是一個閥值,可以控制神經元激活的容易度,
偏差越小神經元越不容易激活,反之則非常容易激活!
而我們加權和再加上偏差後我們得到的值稱為Activation Value,
這個Value會是任意值,不過我們要輸出的是0&1而已,所以我們要把Activation Value經過Activation Function,
而我們在這次的例子裡因為輸出的是0&1,所以我們選用的Activation Function是Sigmoid!
Sigmoid Function可以把任意值的輸出壓縮在0&1之間!剛好符合我們的需求。

到最後我們就可以開始計算誤差,並把誤差平方得到MSE(這些理由之前都有說過~)
好的重頭戲來了,我們要來更新參數!也就是做學習的動作,用來更新銓重和偏差的算式我這裡先不贅述,
明天的程式碼會有!這些公視的推倒其實很簡單!首先先把你要更新的參數取出來(例如:W1)
再來把其他參數視為常數,並進行微分!這就是大名鼎鼎的偏微分啦~

推導一次
LossFunction = MSE(ERROR(Activation Func(X1*W1)))
根據微分鎖鏈法則做完之後就可以得到Gradient也就是W1應該要調整的值囉!


上一篇
[Day28]TensorFlow Playground視覺化神經網路
下一篇
[Day30]Preceptron實作(With Python)
系列文
Google'sMachineLearning-挑戰機器智慧極限30

尚未有邦友留言

立即登入留言