การไล่ระดับโคตร
อัปเดตบน September 03, 2024 2 นาทีอ่าน

การแนะนำ
ลองนึกภาพว่าเรามีฟังก์ชัน $f(x)$ และเราต้องการหาค่าต่ำสุดของมัน คุณจะทำอย่างไร?
ง่ายใช่มั้ย? เราเพียงต้องแก้สมการต่อไปนี้:
$$f’(x) = 0$$
ประเด็นก็คือการค้นหาสูตรของ $f’$ ไม่ใช่เรื่องง่ายเสมอไป เนื่องจากมีแนวโน้มที่จะซับซ้อนมาก โดยเฉพาะอย่างยิ่งในการเรียนรู้เชิงลึกที่เราจัดการกับฟังก์ชันที่ซับซ้อน ดังนั้นเราจึงต้องหาวิธีการอื่นที่สามารถให้ฟังก์ชันขั้นต่ำโดยไม่จำเป็นต้องค้นหาสูตรของอนุพันธ์ $f’$
มาสร้างสัญชาตญาณกันหน่อย
สมมติว่าเรามีฟังก์ชัน f พร้อมด้วยกราฟที่สอดคล้องกัน:
เริ่มจากจุดสุ่ม $x_{0}$ กันก่อน เป้าหมายคือการย้ายจุดนี้และทำให้มันเข้าใกล้ $x*$ มากขึ้นเรื่อยๆ โดยที่ $f’($x*$) = 0$ ดังนั้นปัญหาสามารถแบ่งออกเป็นสองส่วน:
-
เราควรย้ายจุด $x$ ไปในทิศทางใด? ซ้ายหรือขวา?
-
เราควรย้ายเท่าไหร่?
ทิศทาง
มาสร้างสัญชาตญาณเพื่อตอบคำถามแรกกัน ลองดูที่จุดต่อไปนี้:
โปรดทราบว่า:
-
เมื่อจุด $x_{0}$ อยู่ทางด้านขวาของจุดที่เหมาะสมที่สุด $x*$ เส้นสัมผัสของมันจะเพิ่มขึ้น
-
เมื่อจุด $x_{0}$ อยู่ทางด้านขวาของจุดที่เหมาะสมที่สุด $x*$ เส้นสัมผัสของเส้นสัมผัสจะลดลง
ทิศทางของเส้นถูกกำหนดโดยเครื่องหมายของความชัน:
-
เส้นตรงขึ้นไป $\implies$ ความชัน $a$ เป็น บวก
-
เส้นตรงลงไป $\implies$ ความชัน $a$ เป็น ลบ
หมายเหตุ: \
ความชันของเส้นสัมผัสเส้นโค้งของฟังก์ชัน ณ จุดใดจุดหนึ่ง $x_{0}$ นั้นไม่เกินค่าอนุพันธ์ ณ จุดนั้น $f’(x_{0})$:
$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$
เพื่อเป็นคำตอบสำหรับคำถาม “เราควรย้าย $x_{0}$ ที่ไหน?”:
-
$f’(x_{0}) < 0$ $\implies$ $x_{0}$ ทางด้านขวาของ $x*$ $\implies$ เราต้องย้าย $x_{0}$ ไปทางซ้าย
-
$f’(x_{0}) > 0$ $\implies$ $x_{0}$ ทางด้านซ้ายของ $x*$ $\implies$ เราต้องย้าย $x_{0}$ ไปทางขวา
##ขั้นตอน
สำหรับคำถามที่สอง เราควรย้าย $x_{0}$ ? เท่าไหร่
ลองดูตัวอย่างต่อไปนี้:
เราสามารถสรุปได้ว่า:
-
$x_{0}$ อยู่ใกล้กับ $x*$ => ความชันของแทนเจนต์มีค่าน้อย => $f’(x_{0})$ มีค่าน้อย
-
$x_{0}$ อยู่ห่างจาก $x*$ => ความชันของแทนเจนต์มีขนาดใหญ่ => $f’(x_{0})$ นั้นใหญ่
จากการตอบคำถามทั้งสองข้อ เราได้สรุปว่าความรู้เรื่องอนุพันธ์ในจุด $x_{0}$ เท่านั้นที่จะให้ข้อมูลเชิงลึกมากมายเกี่ยวกับทิศทางและระยะห่างของจุดที่เหมาะสมที่สุด $x_{0}$ ได้
โคตรลาด
การไล่ระดับสีเป็นการกำหนดคำตอบของคำถามสองข้อก่อนหน้า เป็นอัลกอริธึมการทำซ้ำการปรับให้เหมาะสมซึ่งจะประมาณฟังก์ชัน $x*$ ขั้นต่ำที่เริ่มต้นจากจุดเริ่มต้นแบบสุ่ม $x_{0}$ อัลกอริทึมระบุไว้ดังนี้:
$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$
ที่ไหน:
-
$ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ ไม่เกินอนุพันธ์ของ $f$ ในจุด $x*{n}$
-
$lr$ เป็นค่าคงที่บวกที่กำหนดว่าขั้นต่างๆ จะใหญ่แค่ไหน
โปรดสังเกตว่า:
-
$x_{n}$ อยู่ทางขวาของ $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - ค่าบวก $ => $x_{n}$ เคลื่อนไปทางซ้าย
-
$x_{n}$ อยู่ทางด้านซ้ายของ $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + positive $ => $x_{n}$ เลื่อนไปทางขวา
-
$x_{n}$ ใกล้กับ $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ ใกล้ $0$ => อัปเดตเล็กน้อยเป็น $x_{ น}$
แบบทดสอบ
-
การไล่ระดับลงจะหยุดวนซ้ำเมื่อใด:
-
เมื่อ $x_{n}$ มีขนาดเล็กพอ
-
เมื่อ $x_{n}$ อยู่ใกล้กับ $x_{0}$
-
เมื่อ $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $ XXX
-
เราจะเลือก $x_{0}$: ได้อย่างไร
-
เราสุ่มเลือก XXX
-
เราถือว่ามันอยู่ในละแวก $x{n}$
-
มันขึ้นอยู่กับปัญหา
-
เหตุใดเราจึงต้องมีการไล่ระดับสี:
-
เนื่องจากคอมพิวเตอร์ไม่มีประสิทธิภาพเพียงพอที่จะคำนวณอนุพันธ์
-
เพราะมันยากมากที่จะหาสูตรอนุพันธ์ของโมเดลการเรียนรู้เชิงลึก XXX
-
เนื่องจากฟังก์ชันมีจุดต่ำสุดในพื้นที่มากกว่าหนึ่งรายการ