AI-For-Beginners/translations/th/lessons/3-NeuralNetworks/04-OwnFramework
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
OwnFramework.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +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

บทนำเกี่ยวกับ Neural Networks: Multi-Layered Perceptron

ในส่วนก่อนหน้านี้ คุณได้เรียนรู้เกี่ยวกับโมเดลเครือข่ายประสาทที่ง่ายที่สุด - one-layered perceptron ซึ่งเป็นโมเดลการจำแนกประเภทสองคลาสแบบเชิงเส้น

ในส่วนนี้ เราจะขยายโมเดลนี้ให้เป็นกรอบการทำงานที่ยืดหยุ่นมากขึ้น ซึ่งจะช่วยให้เรา:

  • ทำ การจำแนกประเภทหลายคลาส นอกเหนือจากสองคลาส
  • แก้ปัญหา การถดถอย นอกเหนือจากการจำแนกประเภท
  • แยกคลาสที่ไม่สามารถแยกได้แบบเชิงเส้น

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

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

การทำให้ปัญหา Machine Learning เป็นรูปแบบทางการ

เริ่มต้นด้วยการทำให้ปัญหา Machine Learning เป็นรูปแบบทางการ สมมติว่าเรามีชุดข้อมูลการฝึกอบรม X พร้อมป้ายกำกับ Y และเราต้องสร้างโมเดล f ที่สามารถทำนายได้อย่างแม่นยำที่สุด คุณภาพของการทำนายจะถูกวัดโดย Loss function ฟังก์ชัน loss ที่มักใช้มีดังนี้:

  • สำหรับปัญหาการถดถอย เมื่อเราต้องทำนายตัวเลข เราสามารถใช้ absolute errori|f(x(i))-y(i)| หรือ squared errori(f(x(i))-y(i))2
  • สำหรับการจำแนกประเภท เราใช้ 0-1 loss (ซึ่งโดยพื้นฐานแล้วเหมือนกับ accuracy ของโมเดล) หรือ logistic loss

สำหรับ one-level perceptron ฟังก์ชัน f ถูกกำหนดเป็นฟังก์ชันเชิงเส้น f(x)=wx+b (ที่นี่ w คือ weight matrix, x คือเวกเตอร์ของคุณลักษณะอินพุต และ b คือ bias vector) สำหรับสถาปัตยกรรมเครือข่ายประสาทที่แตกต่างกัน ฟังก์ชันนี้สามารถมีรูปแบบที่ซับซ้อนมากขึ้นได้

ในกรณีของการจำแนกประเภท มักจะต้องการให้ผลลัพธ์ของเครือข่ายเป็นความน่าจะเป็นของคลาสที่เกี่ยวข้อง เพื่อแปลงตัวเลขใดๆ ให้เป็นความน่าจะเป็น (เช่น การทำให้ผลลัพธ์เป็นปกติ) เรามักใช้ softmax function σ และฟังก์ชัน f จะกลายเป็น f(x)=σ(wx+b)

ในคำจำกัดความของ f ข้างต้น w และ b ถูกเรียกว่า parameters θ=⟨w,b⟩ เมื่อได้รับชุดข้อมูล ⟨X,Y⟩ เราสามารถคำนวณข้อผิดพลาดโดยรวมในชุดข้อมูลทั้งหมดเป็นฟังก์ชันของพารามิเตอร์ θ

เป้าหมายของการฝึกอบรมเครือข่ายประสาทคือการลดข้อผิดพลาดโดยการปรับเปลี่ยนพารามิเตอร์ θ

การปรับแต่งด้วย Gradient Descent

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

  • กำหนดค่าเริ่มต้นของพารามิเตอร์ด้วยค่าที่สุ่ม w(0), b(0)
  • ทำซ้ำขั้นตอนต่อไปนี้หลายครั้ง:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

ในระหว่างการฝึกอบรม ขั้นตอนการปรับแต่งควรคำนวณโดยพิจารณาจากชุดข้อมูลทั้งหมด (จำไว้ว่าฟังก์ชัน loss ถูกคำนวณเป็นผลรวมผ่านตัวอย่างการฝึกอบรมทั้งหมด) อย่างไรก็ตาม ในชีวิตจริง เราใช้ส่วนเล็กๆ ของชุดข้อมูลที่เรียกว่า minibatches และคำนวณ gradients โดยอิงจากชุดข้อมูลย่อย เนื่องจากชุดข้อมูลย่อยถูกสุ่มเลือกในแต่ละครั้ง วิธีนี้จึงเรียกว่า stochastic gradient descent (SGD)

Multi-Layered Perceptrons และ Backpropagation

เครือข่ายแบบชั้นเดียว ตามที่เราได้เห็นข้างต้น สามารถจำแนกคลาสที่แยกได้แบบเชิงเส้นได้ เพื่อสร้างโมเดลที่สมบูรณ์ยิ่งขึ้น เราสามารถรวมหลายชั้นของเครือข่ายเข้าด้วยกัน ในทางคณิตศาสตร์หมายความว่าฟังก์ชัน f จะมีรูปแบบที่ซับซ้อนมากขึ้น และจะถูกคำนวณในหลายขั้นตอน:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

ที่นี่ α คือ non-linear activation function, σ คือ softmax function และพารามิเตอร์ θ=<w1,b1,w2,b2>

อัลกอริทึม gradient descent จะยังคงเหมือนเดิม แต่การคำนวณ gradients จะยากขึ้น ตามกฎการหาอนุพันธ์แบบลูกโซ่ เราสามารถคำนวณอนุพันธ์ได้ดังนี้:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

กฎการหาอนุพันธ์แบบลูกโซ่ถูกใช้ในการคำนวณอนุพันธ์ของฟังก์ชัน loss โดยสัมพันธ์กับพารามิเตอร์

โปรดทราบว่าส่วนที่อยู่ทางซ้ายสุดของนิพจน์ทั้งหมดนั้นเหมือนกัน และดังนั้นเราสามารถคำนวณอนุพันธ์ได้อย่างมีประสิทธิภาพโดยเริ่มจากฟังก์ชัน loss และย้อนกลับ "ย้อนกลับ" ผ่านกราฟการคำนวณ ดังนั้นวิธีการฝึกอบรม multi-layered perceptron จึงเรียกว่า backpropagation หรือ 'backprop'

compute graph

TODO: อ้างอิงภาพ

เราจะครอบคลุม backprop อย่างละเอียดมากขึ้นในตัวอย่าง notebook ของเรา

สรุป

ในบทเรียนนี้ เราได้สร้างไลบรารีเครือข่ายประสาทของเราเอง และเราได้ใช้มันสำหรับงานการจำแนกประเภทสองมิติที่ง่าย

🚀 ความท้าทาย

ใน notebook ที่มาพร้อมกัน คุณจะได้สร้างกรอบการทำงานของคุณเองสำหรับการสร้างและฝึกอบรม multi-layered perceptrons คุณจะสามารถเห็นรายละเอียดว่าเครือข่ายประสาทสมัยใหม่ทำงานอย่างไร

ไปที่ OwnFramework notebook และทำงานผ่านมัน

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

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

Backpropagation เป็นอัลกอริทึมที่ใช้กันทั่วไปใน AI และ ML ซึ่งควรค่าแก่การศึกษา เพิ่มเติม

งานที่ได้รับมอบหมาย

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