- Artificial Neural Network (ANN)
- Supervised learning - 監督式學習
- Unsupervised learning - 非監督式學習
- Reinforcement learning - 增強式學習
- Perceptron
- x1=0 x2=0 y=0
- x1=0 x2=1 y=1
- x1=1 x2=0 y=1
- x1=1 x2=1 y=1
- x1=-1 x2=1 y=1
- x1=1 x2=-1 y=1
- x1=-1 x2=1 y=1
- x1=1 x2=-1 y=1
在人工智慧的領域裡Artificial Neural Network(ANN)扮演著一個很重要的角色,他是一個基於大腦神經元的架構而構成的人工類神經網路,廣泛應用在電機、資訊、醫學、環境、商業等等各領域上。
而依造類神經網路學習的類別可分為:
依造所要解決的問題環境不同而選擇對應的學習網路,基本的ANN資訊你可以參考wikipedia。
http://en.wikipedia.org/wiki/Neural_network#Real_life_applications
於1957年Frank Rosenblatt.在康乃爾航空實驗室時期所發表的類神經網路學習模式,是屬於監督行網路,圖形定義如下:
x1,x2是我們的input, y1是我們的output(這只是最簡易的範例,你的input,output數量會隨著你要解決的問題而定),我們還有三個參數要控制,分別為 w1,w3,theta,也就是所謂的加權職(weight)以及Bias。要計算修改weight跟bias的值我們必須基於兩個參數,eta(學習速率)和delta(差距向量),公式如下:
計算並更新新的bias值。
根據上述的公式我們可以用程式語言去實做一個Perceptron學習模式來解決AND,OR的邏輯問題。
Download:perceptron.c
為了執行效率我選擇c語言來撰寫,程式碼並沒有經過最佳化,如此比較方便做公式的對照。以OR為例,input,output如下:
我們以0.1的學習速率去跑這個程式,結果如下(僅供參考,不同的Weight初始值會有不同的解)
經過三個epoch之後我們的perceptron已經完全學到OR的pattern,你可以將目標輸出改成AND的輸出,或者更改學習速率以觀察輸出結果。
將perceptron的線性方程式畫在座標上類似如下。
由圖形我們可以得知weight影響著此方程式的斜率,而bias決定著這條線離原點的距離,同時你也可以了解到bias一定介於0~0.707 (也就是根號2再除以2),如果你要再加上如下一組pattern
由圖形我們可以輕易的得知這是可行的,同理你也可以將上面的資料改成如下:
所以你絕對不可能使用這個model找到可以同時滿足下面情況的解:
這時你也許也發現到這個model是不能解XOR的問題,不具隱藏層的Perceptron是不能解XOR的問題,下一次我會介紹Back-Propagation Neural Network並用它來解XOR問題。
No comments:
Post a Comment