Perceptron ในข้อเขียนนี้หมายถึง Learning Algorithm ใช้เพื่อการทำ binary classification [5] ถูกนำเสนอโดย McCulloch & Pitts [2][3] พัฒนาและปรับปรุงโดย Minski & Papert [3][7] เป็นพื้นฐานสำคัญเรื่องหนึ่งของการทำความเข้าใจเรื่อง Machine Learning / Deep Learning
โครงสร้างของ Perceptron
McCulloch & Pitts (MP model) ได้นำเสนอตัวแบบแรกของ perceptron ที่มีฟังก์ชั่นสองฟังก์ชั่นคือ function G (ดูรูปที่ 1) ใช้คำนวณหา weighted sum [12] ของ input ทั้งหมดเข้าด้วยกันให้เป็นตัวเลขค่าเดียว ส่งต่อไปให้ function F (ดูรูปที่ 1) เพื่อสร้าง output โดยเทียบกับค่า threshold ( ) ที่ถูกกำหนดไว้ก่อน
function ที่ทำงานร่วมกันสองส่วน :
w คือ weight โดยที่
x คือ input โดยที่
b คือ bias
y คือ output จะเลือกใช้แบบ (2) หรือ (3) ขึ้นกับ activation function หรือ threshold function [9] ที่เลือกใช้
ตัวอย่างที่มักหยิบขึ้นมาอธิบายขั้นตอนการทำงานการใช้ perceptron หาผลลัพธ์ของ OR Gate หรือ AND Gate
y ( | ||||
---|---|---|---|---|
1 | 1 | 2 | 1 | 1 |
1 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
y ( | ||||
---|---|---|---|---|
1 | 1 | 2 | 1 | 1 |
1 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
Rosenblatt [6] ได้เสนอตัวแบบที่เหมือนกับของ McCulloch & Pitts แต่มีเพิ่ม learning algorithm เข้าไปเพื่อให้ตัวแบบมีความเป็น adaptive สามารถปรับปรุงค่าของ parameters ได้เอง (รูปที่ 2) โดยอาศัยค่าจากตัวแปรใหม่เรียกว่า error โดยที่จะเกิดขึ้นเมื่อ ( คือ output ของตัวแบบ และ y คือค่าสังเกตุ )
Learning Algorithm ของ Perceptron
เป้าหมายของการเรียนรู้ของ perceptron คือการหาค่าประมาณของ parameters ซึ่งหมายถึงค่าของ weight และ bias มีการสร้างตัวแปรเพิ่มขึ้นมาคือความต่างระหว่าง output กับค่าสังเกตุ ( ) จะเรียกว่าค่า error ซึ่งหาได้โดยการวัดความต่างระหว่างข้อมูล [11] ในระหว่างการเรียนรู้
หากมี error เกิดขึ้น ค่านี้ก็จะถูกนำไปใช้ในการปรับปรุงค่าของ parameters กระทำวนกันไปจนกว่าจะได้ผลลัพธ์ออกมาตรงตามเป้าหมาย เขียนเป็น pseudocode ได้ดังนี้
Assign:
Input:
Algorithm :
Output :
การปรับปรุงค่า parameters
เพื่อให้เห็นภาพง่ายขึ้น จะขออ้างอิงจากเรื่อง vector [13] และ linear classifier [8][10] มาใช้ประกอบการอธิบาย เริ่มต้นด้วยการแปลงสมการ (1), (2) หรือ (3) ให้ในรูปของสมการ vector ก่อน
เราทราบว่า และ ต้องมากกว่า 0 (มีทิศทางเป็นบวกเสมอ) ดังนั้นทิศทางของ จึงแปรผันตรงกับ
ความรู้จากเรื่อง Linear classification นำไปสู่ข้อสรุปว่า decision line ที่เหมาะสมในการใช้ classify เมื่อ
กล่าวโดยสรุปว่า ความพยายามในการหา parameters ( ) ที่เหมาะสมคือการพยายามปรับค่า elementใน จนกว่าจะตั้งฉากกับ เหมือนกับการพยายามปรับเข็มยาวบนหน้าปัดนาฬิกาให้ตั้งฉากกับเข็มสั้น
กรณีที่ 1 เมื่อ หรือ :
![]() |
รูปที่ 3 |
การ update ต้องทำให้ เพิ่มขึ้นโดย
กรณีที่ 2 : เมื่อ หรือ :
![]() |
รูปที่ 4 |
การ update ต้องทำให้ ลดลงโดย
นิยามตัวแปรใหม่
กรณีที่ 1
กรณีที่ 2
นำมาสรุปรวมกันจะได้ว่า
ที่กล่าวมานำไปสู่ข้อสรุป สมการสำหรับปรับปรุง parameters คือ
Python code :
กำหนด Input และ target ในตัวอย่างจะใช้ AND Gate
import numpy as np
#AND Gate
# input X
X = np.array([[1,0,0],[1,0,1],[1,1,0],[1,1,1]])
label = np.array([0,0,0,1])
# weighting W + bias
W = np.random.rand(3)
ตัวแปร X คือ Array ของ List ที่ประกอบด้วยสมาชิก 3 ตัว ซึ่งเป็นตัวแทนของ bias, ตามลำดับ (ดูสมการที่ (1) และ (4) ประกอบ) ตัวแปร label แทนค่าของ output ที่ควรจะเป็นเมื่อ
summer_func = lambda w,x : np.dot(w.T,x)
threshold_func = lambda x: 0 if x < 0 else 1
predict_func = lambda w,x : threshold_func(summer_func(w,x) )
กำหนด function ใช้งานคือ
- summer_func หาค่าผลรวมของผลคูณระหว่าง
ตามสมการที่ (4) - threshold_func หาทิศทางหรือเครื่องหมาย ตามสมการที่ (2)
- predict_func รวมเอา summer_func และ threshold_func เข้าด้วยกัน
#training
epochs = 10
for e in range(epochs):
i = np.random.choice(len(X))
x = X[i]
a = predict_func(W,x)
e = label[i] - a
W = W + e * x
print(W)
[-2.06467451 1.94237225 0.71971274]
ใช้ learning algorithm ของ perceptron เพื่อปรับค่าของ W โดยกำหนดให้จำนวนรอบไว้ 10 รอบ ค่า W ที่แสดงออกมาคือเป้าหมายที่ต้องการ เป็นชุดตัวเลขที่ทำให้ parameter vector ตั้งฉากกับ input vector ตีความได้เป็น bias = -2.06467451 , = 1.94237225 , = 0.71971274
นำ parameter W ไปทดสอบ
1 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | |
0 | 1 | 0 | 0 | |
0 | 0 | 0 | 0 |
จะนำเอา ไป plot กราฟดูเทียบกับตำแหน่งของค่า เพื่อให้เห็นภาพชัดชึ้นว่า parameter นี้สามารถใช้แบ่งกลุ่มข้อมูลได้อย่างไร
![]() |
รูปที่ 5 |
ในรูปที่ 5 เส้นสีขาวคือเส้นตรงที่เป็นตัวแทนของ ที่สามารถคั่นระหว่างจุด ออกจากจุดอื่นได้ สอดคล้องกับผลของ And Gate
สรุป
perceptron เป็นตัวแบบหรือ algorithm (แล้วแต่มุมมอง) ที่มีองค์ประกอบสำคัญคือ
- Input :
- Weight :
- bias :
- Aggregation function :
- Threshold function :
- Learning algorithm สำหรับการปรับแต่งค่า parameters (Weight และ bias) จาก error (ความต่างระหว่างค่าสังเกตุกับ output)
ข้อจำกัด
ตัวแบบนี้ทำงานได้ดีในรูปแบบปัญหา linear separator [10] หรือ binary classification แต่ยังไม่สามารถนำมาใช้กับปัญหาที่เป็น nonlinear classification อย่าง XOR Gate ได้ จึงมีการพัฒนาตัวแบบนี้ไปสู่ multiplayer perceptron [14] ซึ่งจะได้กล่าวถึงต่อไป
1 | 1 | 2 | 1 | 1 |
1 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 1 |
เอกสารอ้างอิง
ความคิดเห็น
แสดงความคิดเห็น