監督式學習
監督式學習(英文: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 做輸出,但係慢慢學吓學吓,佢就變到識得做邏輯或噉嘅反應。
睇埋
編輯攷
編輯