ต้นขั้ว Gradient Descent คืออะไร? - Unite.AI
เชื่อมต่อกับเรา
มาสเตอร์คลาส AI:

AI 101

Gradient Descent คืออะไร?

mm
วันที่อัพเดท on

Gradient Descent คืออะไร?

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

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

การไล่ระดับสีคืออะไร?

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

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

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

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

ตอนนี้เรารู้แล้วว่าการไล่ระดับสีเป็นคำแนะนำที่บอกเราว่าควรไปในทิศทางใด (ควรปรับปรุงค่าสัมประสิทธิ์ใด) และขั้นตอนใหญ่แค่ไหนที่เราควรดำเนินการ (ควรปรับปรุงค่าสัมประสิทธิ์เท่าใด) เราสามารถสำรวจวิธีการคำนวณการไล่ระดับสีได้

การคำนวณ Gradients & Gradient Descent

การไล่ระดับสีแบบไล่ระดับเริ่มต้นที่จุดที่มีการสูญเสียสูงและผ่านการวนซ้ำหลายครั้ง ดำเนินขั้นตอนในทิศทางที่มีการสูญเสียน้อยที่สุด โดยมีเป้าหมายเพื่อค้นหาการกำหนดค่าน้ำหนักที่เหมาะสมที่สุด รูปภาพ: Роман Сузи ผ่าน Wikimedia Commons, CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

เพื่อดำเนินการไล่ระดับสีขั้นแรกต้องคำนวณการไล่ระดับสี ในการสั่งซื้อ เพื่อคำนวณการไล่ระดับสีเราจำเป็นต้องทราบฟังก์ชันการสูญเสีย/ต้นทุน เราจะใช้ฟังก์ชันต้นทุนเพื่อกำหนดอนุพันธ์ ในแคลคูลัส อนุพันธ์หมายถึงความชันของฟังก์ชัน ณ จุดที่กำหนด ดังนั้นโดยพื้นฐานแล้ว เราก็แค่คำนวณความชันของเนินตาม ฟังก์ชันการสูญเสีย. เรากำหนดการสูญเสียโดยใช้ค่าสัมประสิทธิ์ผ่านฟังก์ชันการสูญเสีย หากเราแสดงฟังก์ชันการสูญเสียเป็น "f" เราสามารถระบุได้ว่าสมการสำหรับการคำนวณการสูญเสียเป็นดังนี้ (เราแค่เรียกใช้ค่าสัมประสิทธิ์ผ่านฟังก์ชันต้นทุนที่เราเลือก):

การสูญเสีย = ฉ(ค่าสัมประสิทธิ์)

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

เดลต้า = derivative_function (ขาดทุน)

ตอนนี้เราได้พิจารณาแล้วว่าทิศทางใดเป็นขาลงไปสู่จุดที่สูญเสียน้อยที่สุด ซึ่งหมายความว่าเราสามารถอัปเดตค่าสัมประสิทธิ์ในพารามิเตอร์โครงข่ายประสาทเทียมและหวังว่าจะลดการสูญเสียได้ เราจะอัปเดตค่าสัมประสิทธิ์ตามค่าสัมประสิทธิ์ก่อนหน้าลบค่าการเปลี่ยนแปลงที่เหมาะสมตามที่กำหนดโดยทิศทาง (เดลต้า) และอาร์กิวเมนต์ที่ควบคุมขนาดของการเปลี่ยนแปลง (ขนาดของขั้นตอนของเรา) อาร์กิวเมนต์ที่ควบคุมขนาดของการอัปเดตเรียกว่า "อัตราการเรียนรู้” และเราจะแทนมันด้วยคำว่า “อัลฟ่า”

ค่าสัมประสิทธิ์ = ค่าสัมประสิทธิ์ – (อัลฟา * เดลต้า)

จากนั้นเราก็ทำขั้นตอนนี้ซ้ำจนกว่าเครือข่ายจะมาบรรจบกันที่จุดสูญเสียต่ำสุด ซึ่งควรจะอยู่ใกล้ศูนย์

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

ในทางตรงกันข้าม หากอัตราการเรียนรู้น้อยเกินไป เครือข่ายอาจใช้เวลานานเป็นพิเศษในการหาค่าน้ำหนักที่เหมาะสม

ประเภทของการไล่ระดับสี

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

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

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

Mini-Batch Gradient Descent: Mini-Batch Gradient Descent ทำงานโดยแยกชุดข้อมูลการฝึกอบรมทั้งหมดออกเป็นส่วนย่อย จะสร้างชุดย่อยขนาดเล็กที่รันผ่านเครือข่าย และเมื่อชุดย่อยถูกใช้เพื่อคำนวณข้อผิดพลาด ค่าสัมประสิทธิ์จะถูกปรับปรุง Mini-batch Gradient Descent เป็นจุดกึ่งกลางระหว่าง Stochastic Gradient Descent และ Batch Gradient Descent โมเดลได้รับการอัปเดตบ่อยกว่าในกรณีของ Batch Gradient Descent ซึ่งหมายถึงการบรรจบกันของพารามิเตอร์ที่เหมาะสมที่สุดของโมเดลเร็วขึ้นเล็กน้อยและมีประสิทธิภาพมากขึ้น นอกจากนี้ยังมีประสิทธิภาพในการคำนวณมากกว่า Stochastic Gradient Descent

บล็อกเกอร์และโปรแกรมเมอร์ที่มีความเชี่ยวชาญด้าน เครื่องเรียนรู้ และ การเรียนรู้ลึก ๆ หัวข้อ Daniel หวังว่าจะช่วยให้ผู้อื่นใช้พลังของ AI เพื่อประโยชน์ทางสังคม