多層感知機實作練習-R版本-使用鳶尾花數據訓練

多層感知機實作練習
R版本-使用鳶尾花數據訓練


___________________________________________________________

問題:如何有效分類鳶尾花


方法:使用多層感知機訓練模型,透過梯度下降修正減少錯誤率


實作流程:




1. 鳶尾花數據有setosa, versicolor, virginica三類,欲訓練的類設輸出為1, 其他類為0,並各先取二類進行訓練


2. 將數據(*1)輸入前兩個感知機分別與w1~w8相乘並加上偏權值,加總後過活化函式Sigmoid(*2),得到二輸入層輸出


3. 將前二輸出分別與w9,w10相乘並加上偏權值,加總後一樣過Sigmoid,得到結果輸出Output


4. 將Output-期望輸出可以得到錯誤率,透過梯度下降回頭修正權重
新權重=舊權重+學習速率*(錯誤率)*output*(1-output)*input


5. 重複以上步驟,將錯誤率壓低(*3)


6. 將訓練好的模組拿來驗證(*4)

遇到困難:

因versicolor和virginica類相似度高,此二類相互訓練時較難收斂且誤差率較與setosa類訓練時高(*5此圖來自網路)



將學習速率降為0.1,可在10000次左右時開始收斂,但還是會有誤差


以下為拿versicolor和virginica進行訓練的結果


可以看到setosa類不會出錯,但versicolor和virginica雖然分開但有部分誤差

程式碼


https://github.com/ShangHong-CAI/AI-Tutorial-Multilayer-Perceptron/blob/master/r/MuitPerceptron(iris).R


附註:

*1: 輸入Sepal.Length,Sepal.Width,Petal.Length,Petal.Width當作運算資料,而類別 Species則當成期望輸出用來修正模型

*2: Sigmoid函式可以將輸出壓進0~1之間

*3: 下圖為setosa 類與versicolor類30000次訓練後收斂的結果

*4:直接拿全資料集驗證,資料整理過1~50為setosa,51~100為versicolor,101~150為virginica

*5:此圖來自網路:http://www.cc.ntu.edu.tw/chinese/epaper/0031/20141220_3105.html


留言

這個網誌中的熱門文章

bilibili 影片下載紀錄兼教學

解決Parallels Tools無法安裝在Ubuntu 18.04、ElementaryOS-5.0 以及其他核心版本大於4.15的Linux之問題