การถดถอยเชิงเส้น: การลดค่าของ Gradient

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

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

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

  2. กำหนดทิศทางที่จะย้ายน้ำหนักและอคติที่ลดการสูญเสีย

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

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

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

รูปที่ 11 ภาพกระบวนการ Gradient Descent

รูปที่ 11 การไล่ระดับความชันเป็นกระบวนการที่ต้องทำซ้ำๆ ซึ่งจะค้นหาน้ำหนัก และอคติที่สร้างโมเดลที่มี Loss ต่ำที่สุด

คลิกไอคอนเครื่องหมายบวกเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับคณิตศาสตร์เบื้องหลังการไล่ระดับสี

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

ปอนด์ในหน่วยพัน (ฟีเจอร์) ไมล์ต่อแกลลอน (ป้ายกำกับ)
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 จากนั้นเราจะหารผลรวมด้วย จำนวนตัวอย่าง ผลลัพธ์คือความชันของเส้น สัมผัสกับค่าของอคติ

    หากเราแก้สมการนี้โดยกำหนดให้น้ำหนักและอคติเท่ากับ 0 เราจะได้ความชันของเส้นเท่ากับ -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.20 0.34 170.84
3 2.05 0.59 103.17
4 2.66 0.78 68.70
5 3.09 0.91 51.13
6 3.40 1.01 42.17

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

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

เส้นโค้งการบรรจบกันของโมเดลและเส้นโค้งการสูญเสีย

เมื่อฝึกโมเดล คุณมักจะดูเส้นโค้ง การสูญเสียเพื่อพิจารณาว่าโมเดลบรรจบกันหรือไม่ เส้นโค้งการสูญเสียแสดง การเปลี่ยนแปลงของการสูญเสียเมื่อโมเดลได้รับการฝึก ต่อไปนี้คือลักษณะของเส้นโค้งการสูญเสียโดยทั่วไป การสูญเสียจะอยู่บนแกน Y และการทำซ้ำจะอยู่บนแกน X

รูปที่ 12 กราฟของเส้นโค้งการสูญเสียแสดงการลดลงอย่างรวดเร็วและลดลงอย่างช้าๆ

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

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

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

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

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

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

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

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

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

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

และเมื่อถึงการวนซ้ำครั้งที่ประมาณ 1,000 เราจะเห็นว่าโมเดลได้บรรจบกันแล้ว ซึ่งสร้างโมเดลที่มี Loss ต่ำที่สุดเท่าที่จะเป็นไปได้

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

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

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

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

ฟังก์ชันการบรรจบกันและฟังก์ชันนูน

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

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

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

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

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

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

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

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

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

รูปที่ 18 กราฟการสูญเสียที่แสดงจุดการไล่ระดับสีหยุดที่จุดต่ำสุดในกราฟ

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

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

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

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

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

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