跳去內容

監督式學習

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

監督式學習(英文: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"嘅參照