AI-For-Beginners/translations/th/lessons/3-NeuralNetworks/03-Perceptron
localizeflow[bot] c55d809b23 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00
Perceptron.ipynb 🌐 Update translations via Co-op Translator 2025-12-12 20:42:50 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00

README.md

บทนำเกี่ยวกับเครือข่ายประสาท: Perceptron

แบบทดสอบก่อนเรียน

หนึ่งในความพยายามแรกๆ ในการสร้างสิ่งที่คล้ายกับเครือข่ายประสาทสมัยใหม่เกิดขึ้นโดย Frank Rosenblatt จาก Cornell Aeronautical Laboratory ในปี 1957 ซึ่งเป็นการสร้างฮาร์ดแวร์ที่เรียกว่า "Mark-1" ออกแบบมาเพื่อจดจำรูปทรงเรขาคณิตพื้นฐาน เช่น สามเหลี่ยม สี่เหลี่ยม และวงกลม

Frank Rosenblatt The Mark 1 Perceptron

รูปภาพ จาก Wikipedia

ภาพที่ป้อนเข้าถูกแทนด้วยอาร์เรย์ของโฟโตเซลล์ขนาด 20x20 ดังนั้นเครือข่ายประสาทจึงมีอินพุต 400 ตัวและเอาต์พุตแบบไบนารีหนึ่งตัว เครือข่ายง่ายๆ นี้มีเพียงเซลล์ประสาทเดียว ซึ่งเรียกว่า threshold logic unit น้ำหนักของเครือข่ายประสาททำหน้าที่เหมือนตัวต้านทานที่ต้องปรับด้วยมือในระหว่างขั้นตอนการฝึก

ตัวต้านทานปรับค่าได้ (potentiometer) คืออุปกรณ์ที่ช่วยให้ผู้ใช้ปรับค่าความต้านทานในวงจรได้

หนังสือพิมพ์ The New York Times เขียนเกี่ยวกับ perceptron ในเวลานั้นว่า: ตัวอ่อนของคอมพิวเตอร์อิเล็กทรอนิกส์ที่ [กองทัพเรือ] คาดหวังว่าจะสามารถเดิน พูด มองเห็น เขียน สร้างตัวเองขึ้นใหม่ และมีสติรู้ตัวถึงการดำรงอยู่ของมันเอง

โมเดล Perceptron

สมมติว่าเรามีคุณลักษณะ N ในโมเดลของเรา ซึ่งในกรณีนี้เวกเตอร์อินพุตจะมีขนาด N Perceptron เป็นโมเดล การจำแนกประเภทแบบไบนารี กล่าวคือสามารถแยกแยะระหว่างสองคลาสของข้อมูลอินพุตได้ เราจะสมมติว่า สำหรับแต่ละเวกเตอร์อินพุต x เอาต์พุตของ perceptron จะเป็น +1 หรือ -1 ขึ้นอยู่กับคลาส โดยเอาต์พุตจะถูกคำนวณด้วยสูตร:

y(x) = f(wTx)

โดยที่ f เป็นฟังก์ชันการกระตุ้นแบบขั้นบันได

การฝึก Perceptron

ในการฝึก Perceptron เราต้องหาน้ำหนักเวกเตอร์ w ที่สามารถจำแนกค่าต่างๆ ได้ถูกต้องมากที่สุด กล่าวคือทำให้เกิด ข้อผิดพลาด น้อยที่สุด ข้อผิดพลาด E นี้ถูกกำหนดโดย perceptron criterion ดังนี้:

E(w) = -∑wTxiti

โดยที่:

  • ผลรวมจะถูกคำนวณจากจุดข้อมูลการฝึก i ที่จำแนกผิด
  • xi คือข้อมูลอินพุต และ ti คือ -1 หรือ +1 สำหรับตัวอย่างเชิงลบและเชิงบวกตามลำดับ

เกณฑ์นี้ถือว่าเป็นฟังก์ชันของน้ำหนัก w และเราต้องลดค่ามันให้น้อยที่สุด โดยมักใช้วิธีที่เรียกว่า gradient descent ซึ่งเริ่มต้นด้วยน้ำหนักเริ่มต้น w(0) และในแต่ละขั้นตอนจะปรับน้ำหนักตามสูตร:

w(t+1) = w(t) - η∇E(w)

ที่นี่ η คือ learning rate และ ∇E(w) หมายถึง gradient ของ E หลังจากคำนวณ gradient เราจะได้:

w(t+1) = w(t) + ∑ηxiti

อัลกอริทึมใน Python มีลักษณะดังนี้:

def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):

    weights = [0,0,0] # Initialize weights (almost randomly :)
        
    for i in range(num_iterations):
        pos = random.choice(positive_examples)
        neg = random.choice(negative_examples)

        z = np.dot(pos, weights) # compute perceptron output
        if z < 0: # positive example classified as negative
            weights = weights + eta*weights.shape

        z  = np.dot(neg, weights)
        if z >= 0: # negative example classified as positive
            weights = weights - eta*weights.shape

    return weights

สรุป

ในบทเรียนนี้ คุณได้เรียนรู้เกี่ยวกับ Perceptron ซึ่งเป็นโมเดลการจำแนกประเภทแบบไบนารี และวิธีการฝึกมันโดยใช้น้ำหนักเวกเตอร์

🚀 ความท้าทาย

หากคุณต้องการลองสร้าง Perceptron ของคุณเอง ลอง ห้องทดลองนี้บน Microsoft Learn ซึ่งใช้ Azure ML designer

แบบทดสอบหลังเรียน

ทบทวนและศึกษาด้วยตนเอง

เพื่อดูว่าเราสามารถใช้ Perceptron ในการแก้ปัญหาแบบง่ายๆ รวมถึงปัญหาในชีวิตจริงได้อย่างไร และเพื่อเรียนรู้เพิ่มเติม - ไปที่ Perceptron notebook

นี่คือ บทความที่น่าสนใจเกี่ยวกับ Perceptron ด้วย

งานที่มอบหมาย

ในบทเรียนนี้ เราได้สร้าง Perceptron สำหรับงานการจำแนกประเภทแบบไบนารี และเราได้ใช้มันเพื่อจำแนกระหว่างตัวเลขเขียนด้วยมือสองตัว ในห้องทดลองนี้ คุณถูกขอให้แก้ปัญหาการจำแนกตัวเลขทั้งหมด กล่าวคือกำหนดว่าตัวเลขใดมีแนวโน้มที่จะตรงกับภาพที่กำหนดมากที่สุด