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

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

โมเดลจะเริ่มฝึกด้วยน้ำหนักและค่ากําหนดแบบสุ่มใกล้กับ 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. Weight: 0
    Bias: 0
    y=0+0(x1)
  3. คํานวณการสูญเสีย MSE ด้วยพารามิเตอร์โมเดลปัจจุบัน
  4. Loss=(180)2+(150)2+(180)2+(160)2+(150)2+(140)2+(240)27
    Loss=303.71
  5. คำนวณความชันของแทนเจนต์ต่อฟังก์ชันการสูญเสียที่น้ำหนักแต่ละรายการและความลำเอียง ดังนี้
  6. Weight slope:119.7
    Bias slope:34.3

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

    เราจะเขียนสมการสำหรับการทำนายเป็น
    fw,b(x)=(wx)+b

    เราจะเขียนค่าจริงเป็น y

    เราจะคํานวณ MSE โดยใช้
    1Mi=1M(fw,b(x(i))y(i))2
    โดยที่ i แสดงถึงตัวอย่างการฝึก i รายการ และ M แสดงถึงจํานวนตัวอย่าง

    อนุพันธ์ของน้ำหนัก

    อนุพันธ์ของฟังก์ชันการสูญเสียที่เกี่ยวข้องกับน้ำหนักเขียนเป็น
    w1Mi=1M(fw,b(x(i))y(i))2

    และประเมินผลเป็น
    1Mi=1M(fw,b(x(i))y(i))2x(i)

    ก่อนอื่นเราจะบวกค่าที่คาดการณ์แต่ละค่าลบด้วยค่าจริง แล้วคูณด้วยค่าฟีเจอร์ 2 เท่า จากนั้นหารผลรวมด้วยจำนวนตัวอย่าง ผลลัพธ์คือความลาดชันของเส้นสัมผัสกับค่าของน้ำหนัก

    หากเราแก้สมการนี้ด้วยน้ำหนักและค่ากําหนดเท่ากับ 0 เราจะได้ความชันของเส้นเป็น -119.7

    อนุพันธ์ของค่าเบี่ยงเบนมาตรฐาน

    อนุพันธ์ของฟังก์ชันการสูญเสียเทียบกับค่าอคติเขียนได้ดังนี้
    b1Mi=1M(fw,b(x(i))y(i))2

    และค่าที่ได้คือ
    1Mi=1M(fw,b(x(i))y(i))2

    ก่อนอื่น เราหาผลรวมค่าที่คาดการณ์แต่ละค่าลบด้วยค่าจริงแล้วคูณด้วย 2 จากนั้นหารผลรวมด้วยจำนวนตัวอย่าง ผลลัพธ์คือความชันของเส้นที่สัมผัสกับค่าของค่ากําหนด

    หากเราคํานวณสมการนี้ด้วยน้ำหนักและค่ากําหนดเท่ากับศูนย์ เราจะได้ความชันของเส้นเป็น -34.3

  7. ย้ายไปเล็กน้อยในทิศทางของเส้นลาดชันเชิงลบเพื่อรับน้ำหนักและค่ากําหนดถัดไป ในระหว่างนี้ เราจะกำหนด "จำนวนเล็กน้อย" เป็น 0.01 โดยพลการ
  8. New weight=old weight(small amountweight slope)
    New bias=old bias(small amountbias slope)
    New weight=0(0.01)(119.7)
    New bias=0(0.01)(34.3)
    New weight=1.2
    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 ต่ำสุด

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