การถดถอยเชิงเส้น: การไล่ระดับสี

การลดเชิงลาดเป็นเทคนิคทางคณิตศาสตร์ที่ค้นหาน้ำหนักและค่าอคติซึ่งสร้างโมเดลที่มีค่าการสูญเสียต่ำที่สุดซ้ำๆ การลดเชิงลาดจะหาน้ำหนักและค่ากําหนดที่ดีที่สุดโดยทําขั้นตอนต่อไปนี้ซ้ำตามจํานวนรอบที่ผู้ใช้กําหนด

โมเดลจะเริ่มฝึกด้วยน้ำหนักและค่ากําหนดแบบสุ่มใกล้กับ 0 จากนั้นทําตามขั้นตอนต่อไปนี้ซ้ำ

  1. คำนวณการสูญเสียด้วยน้ำหนักและค่ากําหนดปัจจุบัน

  2. กำหนดทิศทางในการย้ายน้ำหนักและค่ากําหนดซึ่งจะช่วยลดการสูญเสีย

  3. ย้ายค่าน้ำหนักและค่าอคติเล็กน้อยในทิศทางที่ช่วยลดการสูญเสีย

  4. กลับไปที่ขั้นตอนที่ 1 แล้วทําซ้ำจนกว่าโมเดลจะลดการสูญเสียไม่ได้อีก

แผนภาพด้านล่างแสดงขั้นตอนซ้ำๆ ที่การลดเชิงลาดชันทํางานเพื่อค้นหาน้ำหนักและค่าอคติที่สร้างโมเดลที่มีค่าการสูญเสียต่ำที่สุด

รูปที่ 12 ภาพประกอบของกระบวนการไล่ระดับสี

รูปที่ 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
  1. โมเดลจะเริ่มการฝึกโดยตั้งค่าน้ำหนักและน้ำหนักให้เป็น 0 ดังนี้
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. คํานวณการสูญเสีย MSE ด้วยพารามิเตอร์โมเดลปัจจุบัน
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. คำนวณความชันของแทนเจนต์ต่อฟังก์ชันการสูญเสียที่น้ำหนักแต่ละรายการและความลำเอียง ดังนี้
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    คลิกไอคอนบวกเพื่อเรียนรู้เกี่ยวกับการคำนวณความชัน

    หากต้องการหาความลาดชันของเส้นสัมผัสกับน้ำหนักและค่ากําหนด เราจะนําอนุพันธ์ของฟังก์ชันการสูญเสียไปเทียบกับน้ำหนักและค่ากําหนด จากนั้นจึงคํานวณสมการ

    เราจะเขียนสมการสำหรับการทำนายเป็น
    $ 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

  7. ย้ายไปเล็กน้อยในทิศทางของเส้นลาดชันเชิงลบเพื่อรับน้ำหนักและค่ากําหนดถัดไป ในระหว่างนี้ เราจะกำหนด "จำนวนเล็กน้อย" เป็น 0.01 โดยพลการ
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

ใช้น้ำหนักและค่ากําหนดใหม่เพื่อคํานวณการสูญเสียแล้วทําซ้ำ เมื่อทำซ้ำ 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 กราฟเส้นโค้งของการสูญเสียที่แสดงการลดลงอย่างรวดเร็วแล้วค่อยๆ ลดลง

รูปที่ 13 เส้นโค้งการสูญเสียที่แสดงโมเดลที่บรรจบกันในช่วงการวนซ้ำที่ 1,000

คุณจะเห็นว่าการสูญเสียลดลงอย่างมากในช่วง 2-3 Iteration แรก จากนั้นค่อยๆ ลดลงก่อนที่จะคงที่เมื่อถึง Iteration ที่ 1,000 หลังจากการวนซ้ำ 1,000 ครั้ง เราค่อนข้างมั่นใจว่าโมเดลได้บรรลุความสอดคล้องแล้ว

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

ในรูปภาพ เราใช้น้ำหนักและค่าอคติที่ได้มาจากการวนซ้ำหนึ่งๆ เพื่อแสดงโมเดล ในกราฟที่มีจุดข้อมูลและภาพรวมของโมเดล เส้นการสูญเสียสีน้ำเงินจากโมเดลไปยังจุดข้อมูลจะแสดงจํานวนการสูญเสีย ยิ่งสายยาวมากเท่าใด สัญญาณก็ยิ่งสูญเสียมากเท่านั้น

ในรูปภาพต่อไปนี้ เราเห็นว่าประมาณการซ้ำครั้งที่ 2 โมเดลจะทำการคาดการณ์ได้ไม่ดีนักเนื่องจากมีจำนวนการสูญเสียสูง

รูปที่ 14 เส้นโค้งการสูญเสียและกราฟที่สอดคล้องกันของโมเดล ซึ่งเอียงออกจากจุดข้อมูล

รูปที่ 14 เส้นโค้งการสูญเสียและสแนปชอตของโมเดลในช่วงเริ่มต้นของกระบวนการฝึก

เมื่อประมาณการวนซ้ำที่ 400 เราจะเห็นว่าการลดเชิงลาดได้พบน้ำหนักและค่าอคติที่ทำให้เกิดโมเดลที่ดีขึ้น

รูปที่ 15 เส้นโค้งการสูญเสียและกราฟที่สอดคล้องกันของโมเดล ซึ่งจะตัดผ่านจุดข้อมูลแต่ไม่ตัดในมุมที่ดีที่สุด

รูปที่ 15 เส้นโค้งการสูญเสียและภาพรวมของโมเดลในช่วงกลางของการฝึก

และประมาณวันที่ 1,000 เราจะเห็นได้ว่าโมเดลได้ลู่ขึ้น ซึ่งทำให้โมเดลมีความสูญเสียต่ำสุดที่เป็นไปได้

รูปที่ 16 เส้นโค้งการสูญเสียและกราฟที่สอดคล้องกันของโมเดล ซึ่งเหมาะกับข้อมูลพอดี

รูปที่ 16 เส้นโค้งการสูญเสียและสแนปชอตของโมเดลในช่วงท้ายของกระบวนการฝึก

แบบฝึกหัด: ทดสอบความเข้าใจ

บทบาทของ Gradient Descent ในการถดถอยเชิงเส้นคืออะไร
การไล่ระดับสีแบบไล่ระดับสีคือกระบวนการทำซ้ำเพื่อค้นหาน้ำหนัก และการให้น้ำหนักพิเศษที่ดีที่สุดซึ่งจะทำให้สูญเสียค่าน้อยที่สุด
การไล่ระดับสีจะช่วยระบุประเภทของการสูญเสียที่จะใช้เมื่อฝึกโมเดล เช่น L1 หรือ L2
การลดเชิงลาดไม่ได้เกี่ยวข้องกับการเลือกฟังก์ชันการสูญเสียสำหรับการฝึกโมเดล
การลดเชิงกรวยจะนำค่าผิดปกติออกจากชุดข้อมูลเพื่อช่วยให้โมเดลคาดการณ์ได้ดีขึ้น
การลดเชิงลาดจะไม่เปลี่ยนชุดข้อมูล

ฟังก์ชันที่บรรจบและฟังก์ชันโค้งมน

ฟังก์ชันการสูญเสียสําหรับโมเดลเชิงเส้นจะสร้างพื้นผิวที่นู้นเสมอ จากคุณสมบัตินี้ เมื่อโมเดลการถดถอยเชิงเส้นมาบรรจบกัน เราจะทราบว่าโมเดลพบน้ำหนักและน้ำหนักที่ก่อให้เกิดการสูญเสียต่ำสุด

หากเราสร้างกราฟพื้นผิวการสูญเสียของโมเดลที่มีฟีเจอร์เดียว เราจะเห็นรูปร่างที่โค้งมน ต่อไปนี้คือพื้นผิวการสูญเสียของชุดข้อมูลไมล์ต่อแกลลอนที่ใช้ในตัวอย่างก่อนหน้านี้ โดยน้ำหนักจะอยู่ในแกน X ส่วนความลำเอียงอยู่ในแกน Y และค่าสูญเสียอยู่ในแกน Z

รูปที่ 17 กราฟ 3 มิติของพื้นผิวการสูญเสีย

รูปที่ 17 พื้นผิวการสูญเสียที่แสดงรูปร่างแบบนูน

ในตัวอย่างนี้ น้ำหนัก -5.44 และค่ากําหนด 35.94 ให้ผลลัพธ์การสูญเสียต่ำสุดที่ 5.54

รูปที่ 18 กราฟ 3 มิติของพื้นผิวการสูญเสีย โดยมี (-5.44, 35.94, 5.54) ที่ด้านล่าง

รูปที่ 18 พื้นผิวการสูญเสียที่แสดงค่าน้ำหนักและค่าอคติซึ่งทำให้เกิดความสูญเสียต่ำสุด

โมเดลเชิงเส้นจะบรรจบเมื่อพบการสูญเสียขั้นต่ำ ดังนั้น การวนซ้ำเพิ่มเติมจะทําให้ลู่ลาดพาค่าน้ำหนักและค่าอคติไปเพียงเล็กน้อยรอบๆ ค่าต่ำสุดเท่านั้น หากเราสร้างกราฟน้ำหนักและจุดอคติระหว่างการลดเชิงลาด จุดต่างๆ จะมีลักษณะเหมือนลูกบอลกลิ้งลงเนิน และหยุดลงที่จุดที่ไม่มีทางลาดลงอีก

รูปที่ 19 พื้นผิวการสูญเสีย 3 มิติแบบนูนที่มีจุดการลดเชิงลาดเคลื่อนไปยังจุดต่ำสุด

รูปที่ 19 กราฟการสูญเสียที่แสดงจุดการลดเชิงลาดที่หยุดอยู่ที่จุดต่ำสุดบนกราฟ

โปรดสังเกตว่าจุดการสูญเสียสีดําสร้างรูปร่างของเส้นโค้งการสูญเสียที่แน่นอน ซึ่งก็คือการลดลงอย่างรวดเร็วก่อนที่จะค่อยๆ ลาดลงจนกว่าจะถึงจุดต่ำสุดบนพื้นผิวการสูญเสีย

สิ่งสำคัญที่ควรทราบคือโมเดลแทบจะไม่เคยค้นหาค่าขั้นต่ำที่แน่นอนสำหรับน้ำหนักและความเอนเอียงแต่ละรายการเลย แต่จะหาค่าที่ใกล้เคียงมากๆ แทน นอกจากนี้ โปรดทราบว่าค่าต่ำสุดของน้ำหนักและค่ากําหนดไม่ได้สอดคล้องกับการสูญเสียเป็น 0 แต่เป็นค่าที่ทำให้เกิดค่าการสูญเสียต่ำสุดสําหรับพารามิเตอร์นั้น

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

รูปที่ 20 กราฟของน้ำหนักเป็นพันๆ ปอนด์เทียบกับไมล์ต่อแกลลอน โดยมีรูปแบบที่พอดีกับข้อมูล

รูปที่ 20 โมเดลที่แสดงเป็นกราฟโดยใช้ค่าน้ำหนักและค่าอคติที่ทำให้เกิด Loss ต่ำสุด

นี่เป็นโมเดลที่ดีที่สุดสําหรับชุดข้อมูลนี้ เนื่องจากไม่มีค่าน้ำหนักและค่าอคติอื่นๆ ที่สร้างโมเดลที่มีค่าการสูญเสียต่ำกว่า