跳去內容

監督式學習

出自維基百科,自由嘅百科全書

監督式學習英文supervised learning)係機械學習上最直接嗰種學習範式。監督式學習演算法做嘅嘢係建立一個數學模型模擬柞數據,佢當中某啲變數扮演輸入、又有啲變數扮演輸出。柞學習用嘅數據係所謂嘅訓練用數據(training data)。用數學行話講返,即係要搵出一柞已知嘅例子,有若干對輸入()同正確輸出(),,再由容許得嘅函數當中搵返個同啲例子最啱搭嘅函數 出嚟。喺呢種學習之下,個神經網絡會由研究者度收到一柞數據俾佢學,好似有個老師噉-所以就叫「監督」式學習[1]

例子碼

用電腦程式嚟整人工神經細胞,例如以下呢段碼,係頭先嗰個用 Python 寫嘅感知機嘅擴充版,用一個簡單嘅演算法教個感知機學識邏輯或(logical or)[2]

import numpy, random, os # 指明要用邊柞指令。
a = 1 # 設一個數做學習率。
bias = 1 # 設定 bias 值
weights = [random.random(),random.random(),random.random()]
# 設定三個權重值,每個都係一個隨機喺 0 同 1 之間揀嘅數值。

# set 好嗮所有嘢喇,開始程式。

def Perceptron(input1, input2, output) : # 定義一個感知機,個感知機有兩個輸入同一個輸出。
   x = input1
   y = input2
   outputP = input1*weights[0]+input2*weights[1]+bias*weights[2] # 按照柞權重、輸入、同 bias 計個感知機嘅輸出係乜。
   if outputP > 0 :
      outputP = 1
   else :
      outputP = 0
   # 個感知機得兩個輸出值-「0」同「1」。

   error = output - outputP # 計個誤差值-即係「實際輸出」同「個感知機俾嘅輸出」差幾遠。
   weights[0] += error * input1 * a 
   weights[1] += error * input2 * a
   weights[2] += error * bias * a
   # 按誤差值計吓,每個權重值要改變幾多。
   print(x, "or", y, "is : ", outputP) # 將輸入值同輸出值 show 出嚟俾個用家睇。

for i in range(50) :
   Perceptron(1,1,1)
   Perceptron(1,0,1)
   Perceptron(0,1,1)
   Perceptron(0,0,0)
# 俾柞數據個感知機 run 好多次。由呢柞數據睇得出,數據所顯示嘅係一個邏輯或-當「是但一個輸入係 1」或者「兩個都係 1」嗰陣,個輸出要係「1」,而當「兩個都係 0」嗰陣,輸出要係「0」-「輸出係 1」 if 「第一個輸入係 1」 or 「第二個輸入係 1」。
# 結果係,初頭嗰陣個感知機會犯錯,例如喺其中一個輸入係 1 另一個係 0 嗰陣俾 0 做輸出,但係慢慢學吓學吓,佢就變到識得做邏輯或噉嘅反應。

睇埋

[編輯]

[編輯]
  1. M.R. Smith and T. Martinez (2011). "Improving Classification Accuracy by Identifying and Removing Instances that Should Be Misclassified". Proceedings of International Joint Conference on Neural Networks (IJCNN 2011). pp. 2690–2697.
  2. 引用錯誤 無效嘅<ref>標籤;無文字提供畀叫做firstneural嘅參照