หลักสูตรข้อขัดข้องของแมชชีนเลิร์นนิงเวอร์ชันใหม่ที่ได้รับการปรับปรุงจะพร้อมให้บริการในเดือนสิงหาคม 2024 โปรดติดตามต่อไป
โครงข่ายระบบประสาทเทียมแห่งแรก
ในแบบฝึกหัดนี้ เราจะฝึกโครงข่ายประสาทโครงแรกขนาดเล็ก
โครงข่ายประสาทจะเป็นวิธีให้เราเรียนรู้รูปแบบที่ไม่ใช่แบบเชิงเส้นโดยไม่ต้องใช้การกากบาทแบบโจ่งแจ้ง
งานที่ 1: โมเดลที่ให้มาจะรวมฟีเจอร์อินพุต 2 รายการของเราไว้ในเซลล์ประสาทเดียว โมเดลนี้จะเรียนรู้รูปแบบที่ไม่ใช่เชิงเส้นหรือไม่ เรียกใช้เพื่อตรวจสอบการคาดการณ์
งานที่ 2: ลองเพิ่มจํานวนเซลล์ประสาทในเลเยอร์ที่ซ่อนอยู่จาก 1 เป็น 2 และลองเปลี่ยนจากการเปิดใช้งานเชิงเส้นเป็นการเปิดใช้งานที่ไม่ใช่แบบเชิงเส้น เช่น ReLU คุณจะสร้างโมเดลที่เรียนรู้รูปแบบที่ไม่ใช่เชิงเส้นได้ไหม สามารถจําลอง
ข้อมูลอย่างมีประสิทธิภาพได้ไหม
งานที่ 3: ลองเพิ่มจํานวนเซลล์ประสาทในเลเยอร์ที่ซ่อนอยู่จาก 2 เป็น 3 โดยใช้การเปิดใช้งานแบบไม่เป็นเส้น เช่น ReLU สามารถใช้โมเดลข้อมูลอย่าง
มีประสิทธิภาพหรือไม่ คุณภาพของรูปแบบแตกต่างจากการวิ่งแต่ละครั้งเป็นอย่างไร
งานที่ 4: ดําเนินการทดลองต่อไปโดยเพิ่มหรือลบเลเยอร์และเซลล์ประสาทที่ซ่อนอยู่ต่อเลเยอร์ นอกจากนี้ คุณยังเปลี่ยนอัตราการเรียนรู้
การทําให้เป็นมาตรฐาน และการตั้งค่าการเรียนรู้อื่นๆ ได้อีกด้วย จํานวนเซลล์ประสาทที่เล็กที่สุดที่คุณใช้ได้ซึ่งสูญเสียการทดสอบ 0.177 ครั้งหรือน้อยกว่ามีดังนี้
การเพิ่มขนาดโมเดลช่วยปรับปรุงขนาดให้พอดี หรือความเร็วในการบรรจบกัน
การเปลี่ยนแปลงนี้จะเปลี่ยนแปลงถี่หรือไม่เมื่อเทียบกับรูปแบบที่ดี ตัวอย่างเช่น ให้ลองใช้สถาปัตยกรรมต่อไปนี้
- ชั้นที่ซ่อนอยู่ชั้นแรกซึ่งมีเซลล์ประสาท 3 เซลล์
- เลเยอร์ที่ 2 ที่ซ่อนอยู่ซึ่งมีเซลล์ประสาท 3 เซลล์
- ชั้นที่ 3 ที่ซ่อนอยู่โดยมี 2 เซลล์ประสาท
(คําตอบจะปรากฏใต้แบบฝึกหัด)
คลิกไอคอนเครื่องหมายบวกเพื่อดูคําตอบของคําถามที่ 1
การเปิดใช้งานจะตั้งค่าเป็นเชิงเส้น รูปแบบนี้จึงเรียนรู้ไม่เป็นเชิงเส้นได้ การสูญเสียข้อมูลสูงมาก เราบอกว่าโมเดลทํางานได้
กับข้อมูล
คลิกไอคอนเครื่องหมายบวกเพื่อดูคําตอบของคําถามที่ 2
ฟังก์ชันการเปิดใช้งานที่ไม่ใช่เชิงเส้นจะเรียนรู้รูปแบบที่ไม่ใช่แบบเชิงเส้นได้ อย่างไรก็ตาม เลเยอร์ที่ซ่อนอยู่ชั้นเดียวที่มีเซลล์ประสาท 2 ชั้นไม่สามารถสะท้อนถึงความไม่เป็นรูปธรรมทั้งหมดในชุดข้อมูลนี้ได้ และจะสูญเสียไปแม้จะไร้เสียงรบกวน เพราะเลเยอร์นี้ยังคงทํางานเกี่ยวกับข้อมูลได้ไม่เพียงพอ แบบฝึกหัดเหล่านี้ไม่ได้กําหนดชัดเจน ดังนั้นการเรียกใช้บางรายการจะไม่เรียนรู้โมเดลที่มีประสิทธิภาพ ในขณะที่การเรียกใช้อื่นๆ ก็ทํางานได้ค่อนข้างดี
โมเดลที่ดีที่สุดอาจไม่มีรูปร่างอย่างที่คุณคาดหวัง!
คลิกไอคอนเครื่องหมายบวกเพื่อดูคําตอบของคําถามที่ 3
ธรรมชาติของ Playground' โดดเด่นเหนือใครในการออกกําลังกายนี้ เลเยอร์ที่ซ่อนอยู่ชั้นเดียวที่มีเซลล์ประสาท 3 เซลล์เพียงพอที่จะจําลองชุดข้อมูล (ไม่มีเสียงรบกวน) แต่การเรียกใช้บางรอบอาจไม่ได้เชื่อมโยงกับโมเดลที่ดี
เซลล์ประสาท 3 เซลล์เพียงพอเพราะฟังก์ชัน XOR สามารถแสดงเป็นการผสมผสานระหว่างเครื่องบิน 3 เครื่องบิน (เปิดใช้งาน ReLU) คุณจะเห็นข้อมูลนี้จากดูภาพของเซลล์ประสาท ซึ่งจะแสดงเอาต์พุตของเซลล์ประสาทแต่ละเซลล์ ในโมเดลที่ดีที่มีเซลล์ประสาท 3 เซลล์และการเปิดใช้งาน ReLU จะมีรูปภาพ 1 รูปที่มีเส้นเกือบอยู่ในแนวตั้ง ซึ่งตรวจพบ X1 ในทางบวก (หรือเครื่องหมายลบ ป้ายอาจเปลี่ยน) รูปภาพ 1 รูปมีเส้นแนวนอนเกือบเท่าๆ กัน แต่ตรวจพบสัญลักษณ์ X 2 และมีรูปภาพ 1 รูปที่มีเส้นทแยง ซึ่งตรวจพบการโต้ตอบ
อย่างไรก็ตาม การวิ่งบางรายการอาจไม่ใช่โมเดลที่เหมาะสม การเรียกใช้บางรายการไม่ได้มีประสิทธิภาพดีกว่าโมเดลที่มีเซลล์ประสาท 2 เซลล์ และคุณจะเห็นเซลล์ประสาทที่ซ้ํากันในเคสเหล่านี้
คลิกไอคอนเครื่องหมายบวกเพื่อดูคําตอบของคําถามที่ 4
เลเยอร์ที่ซ่อนอยู่ชั้นเดียวที่มีเซลล์ประสาท 3 ชั้นสามารถสร้างแบบจําลองข้อมูลได้ แต่ไม่มีความซ้ําซ้อน ดังนั้น ในหลายกรณี เซลล์ประสาทจะสูญเสียเซลล์ประสาทและเรียนรู้โมเดลที่ดีไม่ได้ เลเยอร์เดียวที่มีเซลล์ประสาทมากกว่า 3 เซลล์มีความซ้ําซ้อนมากกว่า และมีโอกาสมากกว่าที่จะผสานรวมเป็นโมเดลที่ดี
ตามที่เราเห็น เลเยอร์ที่ซ่อนอยู่ชั้นเดียวที่มีเซลล์ประสาทเพียง 2 เซลล์ไม่สามารถจําลองข้อมูลได้ หากลองดู คุณจะเห็นว่ารายการทั้งหมดในเลเยอร์เอาต์พุตมีได้เฉพาะรูปร่างที่ประกอบด้วยเส้นจาก 2 โหนดนั้น ในกรณีนี้ เครือข่ายที่ลึกกว่าสามารถสร้างแบบจําลองชุดข้อมูลได้ดีกว่าเลเยอร์แรกที่ซ่อนอยู่เท่านั้น นั่นคือ เซลล์ประสาทในเลเยอร์ที่ 2 สามารถสร้างแบบจําลองรูปร่างที่ซับซ้อนยิ่งขึ้น เช่น เซลล์สควอดควอดขวา โดยรวมเซลล์ประสาทในเลเยอร์แรก แม้ว่าการเพิ่มเลเยอร์ที่ 2 ที่ซ่อนอยู่จะยังสามารถจําลองชุดข้อมูลได้ดีกว่าเลเยอร์แรกที่ซ่อนอยู่ แต่ก็อาจทําให้การเพิ่มโหนดไปยังเลเยอร์แรกมากขึ้นเพื่อให้บรรทัดอื่นๆ เป็นส่วนหนึ่งของชุดที่เลเยอร์ที่ 2 สร้างรูปร่างขึ้นมา
อย่างไรก็ตาม โมเดลที่มีเซลล์ประสาท 1 ชั้นในเลเยอร์ที่ซ่อนอยู่ชั้นแรกไม่สามารถเรียนรู้โมเดลชั้นยอดได้ลึกเท่าๆ กัน เนื่องจากเอาต์พุตของเลเยอร์แรกจะแตกต่างกันไปเฉพาะมิติข้อมูลเดียวเท่านั้น (มักจะเป็นเส้นทแยงมุม) ซึ่งไม่เพียงพอสําหรับการประมาณชุดข้อมูลนี้ เลเยอร์ต่อๆ ไปไม่สามารถชดเชยเรื่องนี้ได้ ความซับซ้อนไม่ได้ทําให้ข้อมูลในอินพุตสูญหายไปโดยชดเชยไม่ได้
จะเป็นอย่างไร แทนที่จะพยายามมีเครือข่ายขนาดเล็ก เรามีเลเยอร์มากมายที่มีเซลล์ประสาทจํานวนมาก สําหรับปัญหาง่ายๆ เช่นนี้ อย่างที่เราเห็นไปแล้ว เลเยอร์แรก
สามารถทดสอบความลาดชันของเส้นต่างๆ ได้มากมาย และเลเยอร์ที่ 2 จะสามารถรวบรวมเป็นรูปร่างต่างๆ ได้ โดยมีรูปทรงมากมายและจํานวนมากลงมาทางเลเยอร์ต่อๆ มา
การอนุญาตให้โมเดลพิจารณารูปร่างต่างๆ จํานวนมากผ่านเซลล์ประสาทที่ซ่อนอยู่มากเกินไป เท่ากับว่าคุณสร้างพื้นที่เพียงพอให้โมเดลเริ่มทําเสียงมากเกินไปในชุดการฝึกได้อย่างง่ายดาย ส่งผลให้รูปร่างที่ซับซ้อนเหล่านี้จับคู่ความเป็นไปได้ของข้อมูลการฝึกแทนที่จะเป็นความจริงพื้นฐานทั่วไป ในตัวอย่างนี้ โมเดลขนาดใหญ่อาจมีขอบเขตที่ซับซ้อนเพื่อให้ตรงกับจุดข้อมูลที่ถูกต้อง ในกรณีสุดโต่ง โมเดลขนาดใหญ่อาจเรียนรู้ เกาะรอบๆ จุดของเสียงรบกวนแต่ละจุด ซึ่งเรียกว่าการจดจําข้อมูล การอนุญาตให้โมเดลขนาดใหญ่มากขนาดนี้ทําให้เห็นได้ว่าโมเดลมักจะแย่ลงมากกว่าโมเดลที่เรียบง่ายกว่าซึ่งมีเซลล์ประสาทเพียงช่วยแก้ปัญหาได้
การเริ่มต้นระบบประสาทเทียม
แบบฝึกหัดนี้ใช้ข้อมูล XOR อีกครั้ง แต่ดูที่ความสามารถในการทําซ้ําของการฝึก Neural Nets และความสําคัญของการเริ่มต้น
งานที่ 1: เรียกใช้โมเดลตามที่กําหนดไว้ 4 หรือ 5 ครั้ง ก่อนช่วงทดลองใช้แต่ละครั้ง ให้กดปุ่มรีเซ็ตเครือข่ายเพื่อรับการเริ่มต้นแบบสุ่มใหม่
(ปุ่มรีเซ็ตเครือข่ายคือลูกศรรีเซ็ตวงกลมที่อยู่ทางซ้ายของปุ่มเล่น) ปล่อยให้การทดลองแต่ละครั้งทํางานอย่างน้อย 500 ขั้นตอน
เพื่อให้แน่ใจว่ามีความไม่สอดคล้องกัน เอาต์พุตแต่ละรายการมีรูปร่างแบบใดที่มาบรรจบกัน
เงื่อนไขนี้กล่าวถึงบทบาทของการเริ่มต้นในการเพิ่มประสิทธิภาพที่ไม่ใช่ Conversion อย่างไร
งานที่ 2: ลองทําให้โมเดลซับซ้อนขึ้นเล็กน้อยด้วยการเพิ่มเลเยอร์และโหนดเพิ่มเติม 2 โหนด ทําการทดลองซ้ําจากงานที่ 1 การดําเนินการนี้จะเพิ่มความเสถียรให้กับผลการค้นหาไหม
(คําตอบจะปรากฏใต้แบบฝึกหัด)
คลิกไอคอนเครื่องหมายบวกเพื่อดูคําตอบของคําถามที่ 1
โมเดลที่เรียนรู้มีรูปร่างที่แตกต่างกันในการเรียกใช้แต่ละครั้ง การสูญเสียการทดสอบที่แปรปรวนนั้นเกือบ 2 เท่าจากต่ําไปสูงสุด
คลิกไอคอนเครื่องหมายบวกเพื่อดูคําตอบของคําถามที่ 2
การเพิ่มเลเยอร์และโหนดเพิ่มเติมจะให้ผลลัพธ์ที่สามารถทําซ้ําได้มากยิ่งขึ้น
ในการเรียกใช้แต่ละครั้ง โมเดลผลลัพธ์ก็ดูใกล้เคียงกัน ยิ่งไปกว่านั้น การทดสอบ Conversion ที่สูญเสียไปยังช่วยให้การทดสอบมีความแปรปรวนน้อยลงด้วย
เกลียวสุทธิแบบประสาทเทียม
ชุดข้อมูลนี้เป็นเกลียวที่มีเสียงดัง แน่นอนว่ารูปแบบเชิงเส้นจะล้มเหลวที่นี่
แต่แม้แต่ฟีเจอร์กากบาทที่กําหนดไว้เองก็อาจสร้างได้ยากเช่นกัน
งานที่ 1: ฝึกโมเดลที่ดีที่สุดโดยใช้ X1 และ X2 เพิ่มหรือนําเลเยอร์และเซลล์ประสาทออก เปลี่ยนการตั้งค่าการเรียนรู้ เช่น อัตราการเรียนรู้ อัตราการทําให้เป็นมาตรฐาน และขนาดกลุ่มได้ตามต้องการ การสูญเสียการทดสอบที่ดีที่สุดที่คุณจะได้รับคืออะไร เอาต์พุตของโมเดล
จะแสดงได้อย่างราบรื่นเพียงใด
งานที่ 2: แม้แต่กับโครงข่ายระบบประสาทเทียม ก็ยังต้องใช้วิศวกรรมฟีเจอร์จํานวนหนึ่งเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด ลองเพิ่มฟีเจอร์อื่นๆ ในผลิตภัณฑ์
หรือการเปลี่ยนรูปแบบอื่นๆ เช่น sin(X1) และ sin(X2) โมเดลของคุณดีกว่าไหม เอาต์พุตโมเดลจะมีความลื่นไหลมากขึ้นหรือไม่
(คําตอบจะปรากฏใต้แบบฝึกหัด)
คลิกไอคอนบวกเพื่อดูคําตอบที่เป็นไปได้
วิดีโอต่อไปนี้จะช่วยแนะนําวิธีเลือกไฮเปอร์พารามิเตอร์ใน Playground
เพื่อฝึกโมเดลสําหรับข้อมูลแบบเกลียวที่ช่วยลดการสูญเสียการทดสอบ
น้ํายายืดเส้นประสาทแบบโครงประสาท