ในแบบฝึกหัดเชิงโต้ตอบด้านล่างนี้ คุณจะได้สำรวจการทำงานภายในของโครงข่ายประสาทเทียมอย่างละเอียดมากขึ้น ขั้นแรก คุณจะได้เห็นว่าการเปลี่ยนแปลงของพารามิเตอร์และไฮเปอร์พารามิเตอร์ส่งผลต่อการคาดการณ์ของโครงข่ายอย่างไร จากนั้น คุณจะนำสิ่งที่คุณได้เรียนรู้ไปใช้ในการฝึกโครงข่ายประสาทเทียมให้เหมาะสมกับข้อมูลที่ไม่เป็นเชิงเส้น
แบบฝึกหัดที่ 1
วิดเจ็ตต่อไปนี้จะตั้งค่าเครือข่ายประสาทเทียมด้วยการกำหนดค่าดังต่อไปนี้:
- ชั้นอินพุตที่มีนิวรอน 3 ตัวซึ่งบรรจุค่า
0.00 , 0.00 และ 0.00 - ชั้นซ่อนเร้นที่มีเซลล์ประสาท 4 เซลล์
- ชั้นเอาต์พุตที่มี 1 นิวรอน
- ฟังก์ชันการกระตุ้น ReLU ถูกนำไปใช้กับโหนดทั้งหมดในเลเยอร์ซ่อนและโหนดเอาต์พุต
ตรวจสอบการตั้งค่าเครือข่ายเบื้องต้น (หมายเหตุ: อย่า เพิ่งคลิกปุ่ม ▶️ หรือ >| ) จากนั้นดำเนินการตามขั้นตอนด้านล่างวิดเจ็ตให้เสร็จสมบูรณ์
งานที่ 1
ค่าสำหรับคุณลักษณะอินพุตทั้งสามของแบบจำลองเครือข่ายประสาทเทียมมีค่าเป็น 0.00 ทั้งหมด คลิกที่แต่ละโหนดในเครือข่ายเพื่อดูค่าเริ่มต้นทั้งหมด ก่อนกดปุ่มเล่น ( ▶️ ) โปรดตอบคำถามนี้:
คุณคิดว่าค่าผลลัพธ์ที่ได้จะเป็นแบบใด: ค่าบวก ค่าลบ หรือ 0?
ค่าเอาต์พุตที่เป็นบวก
คุณเลือก ค่าผลลัพธ์ที่เป็นบวก โปรด ทำตามคำแนะนำด้านล่างเพื่อทำการอนุมานกับข้อมูลอินพุตและตรวจสอบว่าคุณถูกต้องหรือไม่
ค่าเอาต์พุตติดลบ
คุณเลือก ค่าผลลัพธ์เป็นค่าลบ โปรด ทำตามคำแนะนำด้านล่างเพื่อทำการอนุมานกับข้อมูลอินพุตและตรวจสอบว่าคุณถูกต้องหรือไม่
ค่าเอาต์พุตเป็น 0
คุณเลือก ค่าเอาต์พุตเป็น 0 ทำตามคำแนะนำด้านล่างเพื่อทำการอนุมานกับข้อมูลอินพุตและตรวจสอบว่าคุณถูกต้องหรือไม่
ตอนนี้คลิกปุ่มเล่น (▶️) ด้านบนของเครือข่าย แล้วดูค่าของเลเยอร์ที่ซ่อนอยู่และโหนดเอาต์พุตปรากฏขึ้น คำตอบของคุณถูกต้องหรือไม่
คลิกที่นี่เพื่อดูคำอธิบาย
ค่าเอาต์พุตที่ได้จะแตกต่างกันไป ขึ้นอยู่กับการกำหนดค่าเริ่มต้นแบบสุ่มของพารามิเตอร์น้ำหนักและไบแอส อย่างไรก็ตาม เนื่องจากนิวรอนแต่ละตัวในชั้นอินพุตมีค่าเป็น 0 น้ำหนักที่ใช้ในการคำนวณค่าโหนดในชั้นซ่อนจึงมีค่าเป็นศูนย์ทั้งหมด ตัวอย่างเช่น การคำนวณโหนดชั้นซ่อนตัวแรกจะเป็นดังนี้:
y = ReLU(ก 11 * 0.00 + ก 21 * 0.00 + ก 31 * 0.00 + b)
y = ReLU(b)
ดังนั้นค่าของแต่ละโหนดในชั้นซ่อนจะมีค่าเท่ากับค่า ReLU ของไบแอส (b) ซึ่งจะเป็น 0 ถ้า b เป็นลบ และจะเป็น b เองถ้า b เป็น 0 หรือบวก
จากนั้นค่าของโหนดเอาต์พุตจะถูกคำนวณดังนี้:
y = ReLU(ก 11 * x 11 + ก 21 * x 21 + ก 31 * x 31 + ก 41 * x 41 + b)
งานที่ 2
ก่อนที่จะทำการแก้ไขโครงข่ายประสาทเทียม โปรดตอบคำถามต่อไปนี้:
ถ้าคุณเพิ่มเลเยอร์ซ่อนเร้นอีกชั้นหนึ่งเข้าไปในโครงข่ายประสาทเทียมหลังจากเลเยอร์ซ่อนเร้นชั้นแรก และกำหนดให้เลเยอร์ใหม่นี้มี 3 โหนด โดยคงค่าพารามิเตอร์อินพุตและน้ำหนัก/ไบแอสไว้เหมือนเดิม การคำนวณของโหนดอื่นๆ จะได้รับผลกระทบอย่างไรบ้าง?
โหนดทั้งหมดในเครือข่าย ยกเว้นโหนดอินพุต
คุณเลือก โหนดทั้งหมดในเครือข่าย ยกเว้นโหนดอินพุต ทำตามคำแนะนำด้านล่างเพื่ออัปเดตเครือข่ายประสาทเทียมและตรวจสอบว่าคุณทำถูกต้องหรือไม่
เฉพาะโหนดในเลเยอร์ที่ซ่อนอยู่ชั้นแรกเท่านั้น
คุณเลือก เฉพาะโหนดในเลเยอร์ซ่อนเร้นชั้นแรกเท่านั้น ทำตามคำแนะนำด้านล่างเพื่ออัปเดตโครงข่ายประสาทเทียมและตรวจสอบว่าคุณทำถูกต้องหรือไม่
เฉพาะโหนดเอาต์พุตเท่านั้น
คุณเลือก เฉพาะโหนดเอาต์พุตเท่านั้น ทำตามคำแนะนำด้านล่างเพื่ออัปเดตโครงข่ายประสาทเทียมและตรวจสอบว่าคุณทำถูกต้องหรือไม่
ต่อไปนี้ ให้แก้ไขโครงข่ายประสาทเทียมโดยเพิ่มเลเยอร์ซ่อนใหม่ที่มี 3 โหนด:
- คลิกปุ่ม + ทางด้านซ้ายของข้อความ 1 hidden layer เพื่อเพิ่มเลเยอร์ซ่อนใหม่ก่อนเลเยอร์เอาต์พุต
- คลิกปุ่ม + ด้านบนเลเยอร์ที่ซ่อนอยู่ใหม่สองครั้ง เพื่อเพิ่มโหนดอีก 2 โหนดลงในเลเยอร์นั้น
คำตอบของคุณข้างต้นถูกต้องหรือไม่?
คลิกที่นี่เพื่อดูคำอธิบาย
เฉพาะโหนดเอาต์พุตเท่านั้นที่จะเปลี่ยนแปลง เนื่องจากโครงข่ายประสาทเทียมนี้ใช้การอนุมานแบบ "ส่งต่อ" (การคำนวณดำเนินไปจากต้นจนจบ) การเพิ่มเลเยอร์ใหม่ลงในโครงข่ายจะส่งผลต่อโหนด หลังจาก เลเยอร์ใหม่เท่านั้น ไม่ใช่โหนดที่อยู่ก่อนหน้า
งานที่ 3
คลิกที่โหนดที่สอง (จากด้านบน) ในเลเยอร์ที่ซ่อนอยู่ชั้นแรกของกราฟเครือข่าย ก่อนทำการเปลี่ยนแปลงใดๆ กับการกำหนดค่าเครือข่าย โปรดตอบคำถามต่อไปนี้:
หากคุณเปลี่ยนค่าของน้ำหนัก w 12 (แสดงอยู่ด้านล่างโหนดอินพุตแรก x 1 ) การคำนวณของโหนดอื่นๆ อาจ ได้รับผลกระทบสำหรับค่าอินพุตบางค่าหรือไม่
ไม่มี
คุณเลือก "ไม่มี" โปรดทำตามคำแนะนำด้านล่างเพื่ออัปเดตโครงข่ายประสาทเทียมและตรวจสอบว่าคุณเลือกถูกต้องหรือไม่
โหนดที่สองในเลเยอร์ซ่อนเร้นแรก โหนดทั้งหมดในเลเยอร์ซ่อนเร้นที่สอง และโหนดเอาต์พุต
คุณเลือก โหนดที่สองในเลเยอร์ซ่อนเร้นแรก โหนดทั้งหมดในเลเยอร์ซ่อนเร้นที่สอง และโหนดเอาต์พุต ทำตามคำแนะนำด้านล่างเพื่ออัปเดตโครงข่ายประสาทเทียมและตรวจสอบว่าคุณทำถูกต้องหรือไม่
โหนดทั้งหมดในเลเยอร์ซ่อนเร้นชั้นแรก เลเยอร์ซ่อนเร้นชั้นที่สอง และเลเยอร์เอาต์พุต
คุณเลือก โหนดทั้งหมดในเลเยอร์ซ่อนเร้นแรก เลเยอร์ซ่อนเร้นที่สอง และเลเยอร์เอาต์พุตแล้ว ทำตามคำแนะนำด้านล่างเพื่ออัปเดตโครงข่ายประสาทเทียมและตรวจสอบว่าคุณทำถูกต้องหรือไม่
ตอนนี้ ให้คลิกที่ช่องข้อความสำหรับน้ำหนัก w 12 (แสดงอยู่ด้านล่างโหนดอินพุตแรก x 1 ) เปลี่ยนค่าเป็น 5.00 แล้วกด Enter สังเกตการเปลี่ยนแปลงบนกราฟ
คำตอบของคุณถูกต้องหรือไม่? โปรดระมัดระวังเมื่อตรวจสอบคำตอบของคุณ: หากค่าของโหนดไม่เปลี่ยนแปลง หมายความว่าการคำนวณพื้นฐานไม่เปลี่ยนแปลงใช่หรือไม่?
คลิกที่นี่เพื่อดูคำอธิบาย
โหนดเดียวที่ได้รับผลกระทบในเลเยอร์ซ่อนเร้นแรกคือโหนดที่สอง (โหนดที่คุณคลิก) การคำนวณค่าสำหรับโหนดอื่นๆ ในเลเยอร์ซ่อนเร้นแรกไม่มีค่า w 12 เป็นพารามิเตอร์ ดังนั้นจึงไม่ได้รับผลกระทบ โหนดทั้งหมดในเลเยอร์ซ่อนเร้นที่สองได้รับผลกระทบ เนื่องจากการคำนวณของโหนดเหล่านั้นขึ้นอยู่กับค่าของโหนดที่สองในเลเยอร์ซ่อนเร้นแรก ในทำนองเดียวกัน ค่าของโหนดเอาต์พุตก็ได้รับผลกระทบเช่นกัน เพราะการคำนวณของค่าโหนดนั้นขึ้นอยู่กับค่าของโหนดในเลเยอร์ซ่อนเร้นที่สอง
คุณคิดว่าคำตอบคือ "ไม่มี" เพราะค่าของโหนดใดๆ ในเครือข่ายไม่เปลี่ยนแปลงเมื่อคุณเปลี่ยนค่าของน้ำหนักใช่หรือไม่? โปรดทราบว่าการคำนวณพื้นฐานสำหรับโหนดอาจเปลี่ยนแปลงได้โดยไม่ต้องเปลี่ยนค่าของโหนด (เช่น ReLU(0) และ ReLU(–5) ต่างก็ให้ผลลัพธ์เป็น 0) อย่าด่วนสรุปว่าเครือข่ายได้รับผลกระทบอย่างไรเพียงแค่ดูจากค่าของโหนด โปรดตรวจสอบการคำนวณด้วยเช่นกัน
แบบฝึกหัดที่ 2
ใน แบบฝึกหัด Feature cross ใน โมดูลข้อมูลเชิงหมวดหมู่ คุณได้สร้าง feature cross ด้วยตนเองเพื่อให้เข้ากับข้อมูลที่ไม่เป็นเชิงเส้น ตอนนี้ คุณจะได้ลองดูว่าคุณสามารถสร้างโครงข่ายประสาทเทียมที่สามารถเรียนรู้วิธีการปรับให้เข้ากับข้อมูลที่ไม่เป็นเชิงเส้นโดยอัตโนมัติระหว่างการฝึกฝนได้หรือไม่
ภารกิจของคุณ: กำหนดค่าโครงข่ายประสาทเทียมที่สามารถแยกจุดสีส้มออกจากจุดสีน้ำเงินในแผนภาพด้านล่าง โดยให้ค่าความคลาดเคลื่อน (loss) น้อยกว่า 0.2 ทั้งในข้อมูลฝึกฝนและข้อมูลทดสอบ
คำแนะนำ:
ในวิดเจ็ตแบบโต้ตอบด้านล่างนี้:
- ปรับเปลี่ยนพารามิเตอร์ของโครงข่ายประสาทเทียมโดยทดลองใช้การตั้งค่าต่างๆ ดังต่อไปนี้:
- เพิ่มหรือลบเลเยอร์ที่ซ่อนอยู่โดยคลิกปุ่ม + และ - ทางด้านซ้ายของหัวข้อ เลเยอร์ที่ซ่อนอยู่ (HIDDEN LAYERS) ในแผนภาพเครือข่าย
- เพิ่มหรือลบเซลล์ประสาทจากชั้นที่ซ่อนอยู่โดยคลิกปุ่ม + และ - เหนือคอลัมน์ของชั้นที่ซ่อนอยู่
- เปลี่ยนอัตราการเรียนรู้โดยเลือกค่าใหม่จากเมนูแบบเลื่อนลง "อัตราการเรียนรู้" ด้านบนแผนภาพ
- เปลี่ยนฟังก์ชันการทำงานโดยเลือกค่าใหม่จากเมนูแบบเลื่อนลง "Activation" ด้านบนแผนภาพ
- คลิกปุ่มเล่น (▶️) ด้านบนแผนภาพเพื่อฝึกฝนโมเดลเครือข่ายประสาทเทียมโดยใช้พารามิเตอร์ที่ระบุ
- โปรดสังเกตการแสดงผลของแบบจำลองที่ปรับให้เข้ากับข้อมูลขณะที่การฝึกฝนดำเนินไป รวมถึงค่า ความสูญเสียในการทดสอบ และ ความสูญเสียในการฝึกฝน ในส่วน ผลลัพธ์
- หากโมเดลไม่สามารถลดค่าความสูญเสีย (loss) ให้ต่ำกว่า 0.2 ได้ทั้งในข้อมูลทดสอบและข้อมูลฝึกฝน ให้คลิก รีเซ็ต แล้วทำซ้ำขั้นตอนที่ 1–3 โดยใช้การตั้งค่าที่แตกต่างกัน ทำซ้ำกระบวนการนี้จนกว่าจะได้ผลลัพธ์ที่ต้องการ
คลิกที่นี่เพื่อดูวิธีแก้ปัญหาของเรา
เราสามารถลดค่าความคลาดเคลื่อนทั้งในการทดสอบและการฝึกฝนให้ต่ำกว่า 0.2 ได้โดย:
- เพิ่มเลเยอร์ที่ซ่อนอยู่ 1 เลเยอร์ ซึ่งประกอบด้วยเซลล์ประสาท 3 เซลล์
- เลือกอัตราการเรียนรู้เป็น 0.01
- เลือกใช้ฟังก์ชันกระตุ้น ReLU