การลดเชิงลาดเป็นเทคนิคทางคณิตศาสตร์ที่ค้นหาน้ำหนักและค่าอคติซึ่งสร้างโมเดลที่มีค่าการสูญเสียต่ำที่สุดซ้ำๆ การลดเชิงลาดจะหาน้ำหนักและค่ากําหนดที่ดีที่สุดโดยทําขั้นตอนต่อไปนี้ซ้ำตามจํานวนรอบที่ผู้ใช้กําหนด
โมเดลจะเริ่มฝึกด้วยน้ำหนักและค่ากําหนดแบบสุ่มใกล้กับ 0 จากนั้นทําตามขั้นตอนต่อไปนี้ซ้ำ
คำนวณการสูญเสียด้วยน้ำหนักและค่ากําหนดปัจจุบัน
กำหนดทิศทางในการย้ายน้ำหนักและค่ากําหนดซึ่งจะช่วยลดการสูญเสีย
ย้ายค่าน้ำหนักและค่าอคติเล็กน้อยในทิศทางที่ช่วยลดการสูญเสีย
กลับไปที่ขั้นตอนที่ 1 แล้วทําซ้ำจนกว่าโมเดลจะลดการสูญเสียไม่ได้อีก
แผนภาพด้านล่างแสดงขั้นตอนซ้ำๆ ที่การลดเชิงลาดชันทํางานเพื่อค้นหาน้ำหนักและค่าอคติที่สร้างโมเดลที่มีค่าการสูญเสียต่ำที่สุด
รูปที่ 12 การลดเชิงลาดเป็นกระบวนการที่ต้องทำซ้ำซึ่งจะค้นหาน้ำหนักและค่าเบี่ยงเบนมาตรฐานที่จะสร้างโมเดลที่มีค่า Loss ต่ำที่สุด
คลิกไอคอนเครื่องหมายบวกเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับคณิตศาสตร์ที่อยู่เบื้องหลังการลดเชิงลาด
ในระดับที่เป็นรูปธรรม เราจะอธิบายขั้นตอนการฝึกด้วยวิธีการลดเชิงลาดโดยใช้ชุดข้อมูลขนาดเล็กที่มีตัวอย่างน้ำหนักของรถยนต์เป็นปอนด์ 7 รายการและอัตราการสิ้นเปลืองน้ำมันต่อระยะทาง 1 แกลลอน ดังนี้
ปอนด์เป็นพันๆ (ฟีเจอร์) | ไมล์ต่อแกลลอน (ป้ายกำกับ) |
---|---|
3.5 | 18 |
3.69 | 15 |
3.44 | 18 |
3.43 | 16 |
4.34 | 15 |
4.42 | 14 |
2.37 | 24 |
- โมเดลจะเริ่มการฝึกโดยตั้งค่าน้ำหนักและน้ำหนักให้เป็น 0 ดังนี้
- คํานวณการสูญเสีย MSE ด้วยพารามิเตอร์โมเดลปัจจุบัน
- คำนวณความชันของแทนเจนต์ต่อฟังก์ชันการสูญเสียที่น้ำหนักแต่ละรายการและความลำเอียง ดังนี้
- ย้ายไปเล็กน้อยในทิศทางของเส้นลาดชันเชิงลบเพื่อรับน้ำหนักและค่ากําหนดถัดไป ในระหว่างนี้ เราจะกำหนด "จำนวนเล็กน้อย" เป็น 0.01 โดยพลการ
คลิกไอคอนบวกเพื่อเรียนรู้เกี่ยวกับการคำนวณความชัน
หากต้องการหาความลาดชันของเส้นสัมผัสกับน้ำหนักและค่ากําหนด เราจะนําอนุพันธ์ของฟังก์ชันการสูญเสียไปเทียบกับน้ำหนักและค่ากําหนด จากนั้นจึงคํานวณสมการ
เราจะเขียนสมการสำหรับการทำนายเป็น
$ f_{w,b}(x) = (w*x)+b $
เราจะเขียนค่าจริงเป็น $ y $
เราจะคํานวณ MSE โดยใช้
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
โดยที่ $i$ แสดงถึงตัวอย่างการฝึก $i$ รายการ และ $M$ แสดงถึงจํานวนตัวอย่าง
อนุพันธ์ของฟังก์ชันการสูญเสียที่เกี่ยวข้องกับน้ำหนักเขียนเป็น
$ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
และประเมินผลเป็น
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $
ก่อนอื่นเราจะบวกค่าที่คาดการณ์แต่ละค่าลบด้วยค่าจริง แล้วคูณด้วยค่าฟีเจอร์ 2 เท่า จากนั้นหารผลรวมด้วยจำนวนตัวอย่าง ผลลัพธ์คือความลาดชันของเส้นสัมผัสกับค่าของน้ำหนัก
หากเราแก้สมการนี้ด้วยน้ำหนักและค่ากําหนดเท่ากับ 0 เราจะได้ความชันของเส้นเป็น -119.7
อนุพันธ์ของค่าเบี่ยงเบนมาตรฐาน
อนุพันธ์ของฟังก์ชันการสูญเสียเทียบกับค่าอคติเขียนได้ดังนี้
$ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
และค่าที่ได้คือ
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $
ก่อนอื่น เราหาผลรวมค่าที่คาดการณ์แต่ละค่าลบด้วยค่าจริงแล้วคูณด้วย 2 จากนั้นหารผลรวมด้วยจำนวนตัวอย่าง ผลลัพธ์คือความชันของเส้นที่สัมผัสกับค่าของค่ากําหนด
หากเราคํานวณสมการนี้ด้วยน้ำหนักและค่ากําหนดเท่ากับศูนย์ เราจะได้ความชันของเส้นเป็น -34.3
ใช้น้ำหนักและค่ากําหนดใหม่เพื่อคํานวณการสูญเสียแล้วทําซ้ำ เมื่อทำซ้ำ 6 ครั้ง เราจะได้น้ำหนัก ความลำเอียง และค่าสูญเสียดังต่อไปนี้
การทำซ้ำ | น้ำหนัก | ความลำเอียง | ค่า Loss (MSE) |
---|---|---|---|
1 | 0 | 0 | 303.71 |
2 | 1.2 | 0.34 | 170.67 |
3 | 2.75 ปี | 0.59 | 67.3 |
4 | 3.17 | 0.72 | 50.63 |
5 | 3.47 | 0.82 | 42.1 |
6 | 3.68 | 0.9 | 37.74 |
คุณจะเห็นว่าการสูญเสียลดลงเมื่อน้ำหนักและค่ากําหนดของแต่ละครั้งที่อัปเดต ในตัวอย่างนี้ เราหยุดหลังจากการทำซ้ำ 6 ครั้ง ในทางปฏิบัติ โมเดลจะฝึกจนกว่าจะแปลงหน่วย เมื่อโมเดลบรรจบแล้ว การวนซ้ำเพิ่มเติมจะไม่ลด Loss ได้อีก เนื่องจาก Gradient Descent ได้พบน้ำหนักและค่าอคติที่เกือบจะลด Loss อยู่แล้ว
หากโมเดลยังคงฝึกฝนต่อไปหลังจากบรรลุการบรรจบแล้ว Loss จะเริ่มผันผวนเล็กน้อยเมื่อโมเดลอัปเดตพารามิเตอร์รอบๆ ค่าต่ำสุดอย่างต่อเนื่อง ซึ่งอาจทําให้ตรวจสอบได้ยากว่าโมเดลบรรจบแล้วจริงๆ หากต้องการยืนยันว่าโมเดลบรรจบแล้ว คุณจะต้องฝึกต่อไปจนกว่าค่าการสูญเสียจะคงที่
เส้นโค้งการบรรจบกันของโมเดลและการสูญเสีย
เมื่อฝึกโมเดล คุณมักจะดูเส้นโค้งการสูญเสียเพื่อตัดสินว่าโมเดลได้แปลงแล้วหรือไม่ เส้นโค้งการสูญเสียจะแสดงการเปลี่ยนแปลงของการสูญเสียเมื่อโมเดลได้รับการฝึก ต่อไปนี้เป็นลักษณะของ กราฟเส้นโค้งสูญเสียทั่วไป โดย Loss จะแสดงในแกน Y และจำนวนรอบจะแสดงในแกน X
รูปที่ 13 เส้นโค้งการสูญเสียที่แสดงโมเดลที่บรรจบกันในช่วงการวนซ้ำที่ 1,000
คุณจะเห็นว่าการสูญเสียลดลงอย่างมากในช่วง 2-3 Iteration แรก จากนั้นค่อยๆ ลดลงก่อนที่จะคงที่เมื่อถึง Iteration ที่ 1,000 หลังจากการวนซ้ำ 1,000 ครั้ง เราค่อนข้างมั่นใจว่าโมเดลได้บรรลุความสอดคล้องแล้ว
ในรูปภาพต่อไปนี้ เราจะวาดโมเดล 3 จุดในระหว่างกระบวนการฝึก ได้แก่ เริ่มต้น กลาง และสิ้นสุด การแสดงภาพสถานะของโมเดลที่สแนปชอตระหว่างขั้นตอนการฝึกจะช่วยสร้างความสัมพันธ์ระหว่างการอัปเดตน้ำหนักและน้ำหนัก การลดการสูญเสียและการลู่เข้าโมเดล
ในรูปภาพ เราใช้น้ำหนักและค่าอคติที่ได้มาจากการวนซ้ำหนึ่งๆ เพื่อแสดงโมเดล ในกราฟที่มีจุดข้อมูลและภาพรวมของโมเดล เส้นการสูญเสียสีน้ำเงินจากโมเดลไปยังจุดข้อมูลจะแสดงจํานวนการสูญเสีย ยิ่งสายยาวมากเท่าใด สัญญาณก็ยิ่งสูญเสียมากเท่านั้น
ในรูปภาพต่อไปนี้ เราเห็นว่าประมาณการซ้ำครั้งที่ 2 โมเดลจะทำการคาดการณ์ได้ไม่ดีนักเนื่องจากมีจำนวนการสูญเสียสูง
รูปที่ 14 เส้นโค้งการสูญเสียและสแนปชอตของโมเดลในช่วงเริ่มต้นของกระบวนการฝึก
เมื่อประมาณการวนซ้ำที่ 400 เราจะเห็นว่าการลดเชิงลาดได้พบน้ำหนักและค่าอคติที่ทำให้เกิดโมเดลที่ดีขึ้น
รูปที่ 15 เส้นโค้งการสูญเสียและภาพรวมของโมเดลในช่วงกลางของการฝึก
และประมาณวันที่ 1,000 เราจะเห็นได้ว่าโมเดลได้ลู่ขึ้น ซึ่งทำให้โมเดลมีความสูญเสียต่ำสุดที่เป็นไปได้
รูปที่ 16 เส้นโค้งการสูญเสียและสแนปชอตของโมเดลในช่วงท้ายของกระบวนการฝึก
แบบฝึกหัด: ทดสอบความเข้าใจ
ฟังก์ชันที่บรรจบและฟังก์ชันโค้งมน
ฟังก์ชันการสูญเสียสําหรับโมเดลเชิงเส้นจะสร้างพื้นผิวที่นู้นเสมอ จากคุณสมบัตินี้ เมื่อโมเดลการถดถอยเชิงเส้นมาบรรจบกัน เราจะทราบว่าโมเดลพบน้ำหนักและน้ำหนักที่ก่อให้เกิดการสูญเสียต่ำสุด
หากเราสร้างกราฟพื้นผิวการสูญเสียของโมเดลที่มีฟีเจอร์เดียว เราจะเห็นรูปร่างที่โค้งมน ต่อไปนี้คือพื้นผิวการสูญเสียของชุดข้อมูลไมล์ต่อแกลลอนที่ใช้ในตัวอย่างก่อนหน้านี้ โดยน้ำหนักจะอยู่ในแกน X ส่วนความลำเอียงอยู่ในแกน Y และค่าสูญเสียอยู่ในแกน Z
รูปที่ 17 พื้นผิวการสูญเสียที่แสดงรูปร่างแบบนูน
ในตัวอย่างนี้ น้ำหนัก -5.44 และค่ากําหนด 35.94 ให้ผลลัพธ์การสูญเสียต่ำสุดที่ 5.54
รูปที่ 18 พื้นผิวการสูญเสียที่แสดงค่าน้ำหนักและค่าอคติซึ่งทำให้เกิดความสูญเสียต่ำสุด
โมเดลเชิงเส้นจะบรรจบเมื่อพบการสูญเสียขั้นต่ำ ดังนั้น การวนซ้ำเพิ่มเติมจะทําให้ลู่ลาดพาค่าน้ำหนักและค่าอคติไปเพียงเล็กน้อยรอบๆ ค่าต่ำสุดเท่านั้น หากเราสร้างกราฟน้ำหนักและจุดอคติระหว่างการลดเชิงลาด จุดต่างๆ จะมีลักษณะเหมือนลูกบอลกลิ้งลงเนิน และหยุดลงที่จุดที่ไม่มีทางลาดลงอีก
รูปที่ 19 กราฟการสูญเสียที่แสดงจุดการลดเชิงลาดที่หยุดอยู่ที่จุดต่ำสุดบนกราฟ
โปรดสังเกตว่าจุดการสูญเสียสีดําสร้างรูปร่างของเส้นโค้งการสูญเสียที่แน่นอน ซึ่งก็คือการลดลงอย่างรวดเร็วก่อนที่จะค่อยๆ ลาดลงจนกว่าจะถึงจุดต่ำสุดบนพื้นผิวการสูญเสีย
สิ่งสำคัญที่ควรทราบคือโมเดลแทบจะไม่เคยค้นหาค่าขั้นต่ำที่แน่นอนสำหรับน้ำหนักและความเอนเอียงแต่ละรายการเลย แต่จะหาค่าที่ใกล้เคียงมากๆ แทน นอกจากนี้ โปรดทราบว่าค่าต่ำสุดของน้ำหนักและค่ากําหนดไม่ได้สอดคล้องกับการสูญเสียเป็น 0 แต่เป็นค่าที่ทำให้เกิดค่าการสูญเสียต่ำสุดสําหรับพารามิเตอร์นั้น
เมื่อใช้ค่าน้ำหนักและค่าอคติที่ให้ค่าการสูญเสียต่ำสุด ซึ่งในกรณีนี้คือน้ำหนัก -5.44 และค่าอคติ 35.94 เราสามารถสร้างกราฟรูปแบบเพื่อดูว่ารูปแบบนั้นพอดีกับข้อมูลมากน้อยเพียงใด
รูปที่ 20 โมเดลที่แสดงเป็นกราฟโดยใช้ค่าน้ำหนักและค่าอคติที่ทำให้เกิด Loss ต่ำสุด
นี่เป็นโมเดลที่ดีที่สุดสําหรับชุดข้อมูลนี้ เนื่องจากไม่มีค่าน้ำหนักและค่าอคติอื่นๆ ที่สร้างโมเดลที่มีค่าการสูญเสียต่ำกว่า