iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
Google Developers Machine Learning

初心者的自我挑戰系列 第 22

Perceptron learning algorithm

今天回來繼續學習!昨天的抱怨文現在回頭看有點羞恥,但是寫20行程式寫3天真的是挑戰自己大腦的極限還有理智線。其實今天這篇我昨天凌晨真的就想po了,因為成功寫出來PLA啦!
昨天甚至一度低落到發文問人...後來才發現問題在哪!

首先第一件事! 非常重要! 也是我在Google study jam的課程裡面看到了卻沒放在心上的重點: Data 非常重要! All from data! Garbage in garbage out !(感謝回我問答的人提供~) 我在一開始用PLA時根本沒處理好data,在林軒田老師機器學習基石作業一裡PLA的code,每一筆data記得要加上x0 = 1 這項阿! 不然即使都沒bug你也是train到天荒地老PLA都不會停! 弄了三天才發現是這個問題! (P.S其實田神有提醒...但是我一直以為自己是程式寫錯,後來又去網路上看看別人怎麼寫,發現以前的題目好像沒有提醒!就陰錯陽差一直搞錯...)

先感謝這個作者,我覺得講得非常詳細: fukuball Github-
Perceptron Binary Classification Learning Algorithm Tutorial

還有感謝林軒田老師的上課也是詳細到不行。

接著直接開始吧: (請容許我不放上自己的code,因為老師作業規定很嚴格,我怕同學拿去參考...結果不巧寫一樣,我就掛了XD)

Perceptron演算法非常簡單,也是機器學習中最基礎的演算法,但是卻是NN的一個基本單位,非常重要。這次作業是做2元分類,PLA也可以拓展到多元分類。
其核心想法就是"有錯的就修正",田神說的知錯能改!

假設今天的data長:
[[0.9998, 0.7776, 0.33425, 0.12341, 1]......]
前四項分別代表x1,x2,x3,x4 (如果是2維可以像老師上課提到,他就是平面上的點,而4維我自己想像是高維空間中的點。)
第五項代表y (就是label的概念,分2類(+1,-1))
然後共有400筆data。
重點來了:記得加上x0 = 1
也就是我的 data_x 會長的像[[1, 0.9998, 0.7776, 0.33425, 0.12341]......]
然後有400筆。
data_y 就是400筆正負1。

然後先找一個點丟進去hypothesis裡預測:
記得:w0 = [0,0,0,0,0]

https://ithelp.ithome.com.tw/upload/images/20191007/20121109yXVurzuUdn.jpg

也就是把w和data_x做內積,然後>0取1 , <=0 取-1
(全部內積就跟 fully connected layer一樣啊,sign 其實就是activation function啦)

接著跟y(label)做比較:
https://ithelp.ithome.com.tw/upload/images/20191007/20121109dh8oKUr1By.jpg
如果不相同那就是有錯,有錯就修正!怎麼修正呢?
https://ithelp.ithome.com.tw/upload/images/20191007/20121109EXpPRFy6fA.jpg
在2維,這個式子意思可以想成兩個向量的角度關係:
如果w和x內積後取sign 是1 而y(label)是-1 這樣的錯誤,代表著兩個向量之間角度太小
做式子中的修正調整w。而反之則是角度太太。 如果不知道角度關係哪來的,可以複習一下內積公式阿!有cos(theta).

然後讓整個這樣修正的過程跑遍所有data_x,直到所有data_x都正確,這樣就完成了!
最後提醒另一種PLA不停的狀況: data本身為 non linear seperable!
這樣的情況得使用pocket,如果我做完pocket再跟大家分享!

最後以一張圖來總結
https://ithelp.ithome.com.tw/upload/images/20191007/20121109mJjjwlxXy7.png


上一篇
程式菜鳥的自我檢討
下一篇
Computer vision - Connected Component
系列文
初心者的自我挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言