อ่าน 23 นาที
การไล่ระดับแบบสุ่ม
การไล่ระดับแบบสุ่ม (มักย่อว่าSGD ) เป็น วิธี การวนซ้ำเพื่อเพิ่มประสิทธิภาพฟังก์ชันเป้าหมายที่มีคุณสมบัติความเรียบ ที่เหมาะสม (เช่น สามารถหาอนุพันธ์ได้หรือสามารถหาอนุพันธ์ย่อยได้ ).
การไล่ระดับแบบสุ่ม
| ส่วนหนึ่งของชุดบทความเกี่ยวกับ |
| การเรียนรู้ของเครื่องจักรและการขุดข้อมูล |
|---|
การไล่ระดับแบบสุ่ม (มักย่อว่าSGD ) เป็น วิธี การวนซ้ำเพื่อเพิ่มประสิทธิภาพฟังก์ชันเป้าหมายที่มีคุณสมบัติความเรียบ ที่เหมาะสม (เช่น สามารถหาอนุพันธ์ได้หรือสามารถหาอนุพันธ์ย่อยได้ ) สามารถถือได้ว่าเป็นค่าประมาณแบบสุ่มของ การเพิ่มประสิทธิภาพการ ไล่ระดับเนื่องจากแทนที่การไล่ระดับจริง (คำนวณจากชุดข้อมูล ทั้งหมด ) ด้วยค่าประมาณ (คำนวณจากชุดย่อยของข้อมูลที่เลือกแบบสุ่ม) โดยเฉพาะอย่างยิ่งใน ปัญหาการเพิ่มประสิทธิภาพ ที่มีมิติสูงวิธีนี้จะช่วยลดภาระการคำนวณ ที่สูงมาก ทำให้ได้การวนซ้ำที่เร็วขึ้นแลกกับการมีอัตราการล convergenceที่ ต่ำลง [ 1 ]
แนวคิดพื้นฐานเบื้องหลังการประมาณค่าแบบสุ่มสามารถสืบย้อนไปถึงอัลกอริทึม Robbins–Monro ในช่วงทศวรรษ 1950 ปัจจุบัน การไล่ระดับแบบสุ่มได้กลายเป็นวิธีการเพิ่มประสิทธิภาพที่สำคัญในด้าน การเรียนรู้ ของเครื่อง[ 2 ]
พื้นหลัง
ทั้งการ ประมาณค่า ทางสถิติ และการเรียนรู้ของเครื่องจักรต่างพิจารณาปัญหาการลดค่าฟังก์ชันเป้าหมายที่มีรูปแบบเป็นผลรวม โดยที่พารามิเตอร์ที่ทำให้ค่าต่ำสุดคือค่าที่ต้องประมาณ โดย ทั่วไปแล้ว ฟังก์ชันแต่ละพจน์ในผลรวมจะสัมพันธ์กับการสังเกตลำดับที่ในชุดข้อมูล (ที่ใช้สำหรับการฝึกฝน)
ในสถิติแบบคลาสสิก ปัญหาการลดผลรวมให้น้อยที่สุดเกิดขึ้นใน วิธี การกำลังสองน้อยที่สุดและการประมาณค่าความน่าจะเป็นสูงสุด (สำหรับการสังเกตที่เป็นอิสระ) กลุ่มทั่วไปของตัวประมาณค่าที่เกิดขึ้นจากการลดผลรวมให้น้อยที่สุดเรียกว่าตัวประมาณค่า Mอย่างไรก็ตาม ในสถิติ เป็นที่ยอมรับกันมานานแล้วว่าการกำหนดให้มีการลดค่าให้น้อยที่สุดในระดับท้องถิ่นนั้นเข้มงวดเกินไปสำหรับปัญหาบางอย่างของการประมาณค่าความน่าจะเป็นสูงสุด[ 3 ]ดังนั้น นักทฤษฎีสถิติร่วมสมัยจึงมักพิจารณาจุดนิ่งของฟังก์ชันความน่าจะเป็น (หรือศูนย์ของอนุพันธ์ฟังก์ชันคะแนนและสมการการประมาณค่า อื่นๆ )
ปัญหาการลดผลรวมให้เหลือน้อยที่สุดยังเกิดขึ้นสำหรับการลดความเสี่ยงเชิงประจักษ์ให้เหลือน้อยที่สุดด้วย โดยที่คือค่าของฟังก์ชันความสูญเสียในตัวอย่างลำดับที่ และคือความเสี่ยงเชิงประจักษ์
เมื่อนำไปใช้เพื่อลดค่าฟังก์ชันข้างต้น วิธี การไล่ระดับความชัน แบบมาตรฐาน (หรือ "แบบกลุ่ม") จะทำการวนซ้ำดังต่อไปนี้: ขนาดของขั้นตอนจะแสดงด้วย(บางครั้งเรียกว่าอัตราการเรียนรู้ในแมชชีนเลิร์นนิง) และในที่นี้ " " หมายถึงการอัปเดตตัวแปรในอัลกอริธึม
ในหลายกรณี ฟังก์ชันผลรวมมักมีรูปแบบที่เรียบง่าย ทำให้สามารถประเมินค่าฟังก์ชันผลรวมและอนุพันธ์ของผลรวมได้อย่างประหยัด ตัวอย่างเช่น ในทางสถิติตระกูลฟังก์ชันเลขชี้กำลังแบบพารามิเตอร์เดียวช่วยให้สามารถประเมินค่าฟังก์ชันและอนุพันธ์ได้อย่างประหยัด
อย่างไรก็ตาม ในกรณีอื่นๆ การประเมินผลรวมของเกรเดียนต์อาจต้องใช้การประเมินเกรเดียนต์ที่มีราคาแพงจากฟังก์ชันผลรวมทั้งหมด เมื่อชุดข้อมูลฝึกฝนมีขนาดใหญ่มากและไม่มีสูตรที่เรียบง่าย การประเมินผลรวมของเกรเดียนต์จะกลายเป็นเรื่องที่มีค่าใช้จ่ายสูงมาก เนื่องจากการประเมินเกรเดียนต์จำเป็นต้องประเมินเกรเดียนต์ของฟังก์ชันผลรวมทั้งหมด เพื่อประหยัดค่าใช้จ่ายในการคำนวณในแต่ละรอบการทำซ้ำ การไล่ระดับเกรเดียนต์แบบสุ่มจะสุ่มเลือกชุดย่อยของฟังก์ชันผลรวมในแต่ละขั้นตอน ซึ่งมีประสิทธิภาพมากในกรณีของปัญหาการเรียนรู้ของเครื่องขนาดใหญ่[ 4 ]
วิธีการวนซ้ำ

ในการไล่ระดับแบบสุ่ม (หรือ "ออนไลน์") ไล่ระดับที่แท้จริงจะถูกประมาณโดยไล่ระดับที่ตัวอย่างเดียว: เมื่ออัลกอริทึมกวาดผ่านชุดฝึกอบรม มันจะทำการอัปเดตข้างต้นสำหรับแต่ละตัวอย่างฝึกอบรม สามารถวนซ้ำชุดฝึกอบรมได้หลายรอบจนกว่าอัลกอริทึมจะลู่เข้า หากทำเช่นนี้ ข้อมูลสามารถสับเปลี่ยนได้ในแต่ละรอบเพื่อป้องกันวงจร การใช้งานทั่วไปอาจใช้อัตราการเรียนรู้แบบปรับได้เพื่อให้อัลกอริทึมลู่เข้า[ 5 ]
ในรูปแบบรหัสเทียม การลดระดับความชันแบบสุ่มสามารถแสดงได้ดังนี้:
- เลือกเวกเตอร์พารามิเตอร์เริ่มต้นและอัตราการเรียนรู้
- ทำซ้ำจนกว่าจะได้ค่าต่ำสุดโดยประมาณ:
- สุ่มสลับตำแหน่งตัวอย่างในชุดข้อมูลฝึกฝน
- สำหรับ ให้ทำดังนี้:
การประนีประนอมระหว่างการคำนวณเกรเดียนต์ที่แท้จริงและเกรเดียนต์ที่ตัวอย่างเดียวคือการคำนวณเกรเดียนต์กับตัวอย่างการฝึกอบรมมากกว่าหนึ่งตัวอย่าง (เรียกว่า "มินิแบทช์") ในแต่ละขั้นตอน ซึ่งอาจมีประสิทธิภาพดีกว่าการลดเกรเดียนต์แบบสุ่ม "ที่แท้จริง" ที่อธิบายไว้ เนื่องจากโค้ดสามารถใช้ ไลบรารี เวกเตอร์แทนที่จะคำนวณแต่ละขั้นตอนแยกกันดังที่แสดงครั้งแรกใน[ 6 ]ซึ่งเรียกว่า "อัลกอริทึมการแพร่กระจายย้อนกลับแบบกลุ่ม" นอกจากนี้ยังอาจส่งผลให้การบรรจบกันราบรื่นยิ่งขึ้น เนื่องจากเกรเดียนต์ที่คำนวณในแต่ละขั้นตอนจะถูกหาค่าเฉลี่ยจากตัวอย่างการฝึกอบรมจำนวนมากขึ้น
การลู่เข้าของการลดระดับความชันแบบสุ่มได้รับการวิเคราะห์โดยใช้ทฤษฎีการลดค่าต่ำสุดแบบนูนและการประมาณค่าแบบสุ่ม กล่าว โดยสรุป เมื่ออัตราการเรียนรู้ ลดลงในอัตราที่เหมาะสม และอยู่ภายใต้สมมติฐานที่ไม่รุนแรงนัก การลดระดับความชันแบบสุ่มจะลู่เข้า สู่ค่าต่ำสุดทั่วโลก เกือบแน่นอนเมื่อฟังก์ชันเป้าหมายเป็นแบบนูนหรือแบบนูนเทียมและในกรณีอื่น ๆ จะลู่เข้าสู่ค่าต่ำสุดเฉพาะที่เกือบแน่นอน[ 2 ] [ 7 ] อันที่จริงนี่เป็นผลสืบเนื่องมาจากทฤษฎีบท Robbins– Siegmund [ 8 ]
การถดถอยเชิงเส้น
สมมติว่าเราต้องการหาเส้นตรงที่เหมาะสมกับชุดข้อมูลฝึกฝนที่มีข้อมูลสังเกตการณ์และค่าประมาณที่สอดคล้องกันโดยใช้ วิธีการกำลัง สองน้อยที่สุดฟังก์ชันเป้าหมายที่จะต้องลดให้เหลือน้อยที่สุดคือ บรรทัดสุดท้ายในรหัสเทียมข้างต้นสำหรับปัญหานี้จะกลายเป็น: โปรดทราบว่าในแต่ละรอบการทำซ้ำหรือขั้นตอนการอัปเดต ค่าความชันจะถูกประเมินที่จุดเดียวเท่านั้นนี่คือความแตกต่างที่สำคัญระหว่างการลดความชันแบบสุ่มและการลดความชันแบบกลุ่ม
โดยทั่วไปแล้ว เมื่อพิจารณาปัญหาการถดถอยเชิงเส้น การไล่ระดับความชันแบบสุ่มจะมีพฤติกรรมที่แตกต่างกันเมื่อ(พารามิเตอร์น้อยเกินไป) และ(พารามิเตอร์มากเกินไป) ในกรณีที่พารามิเตอร์มากเกินไป การไล่ระดับความชันแบบสุ่มจะลู่เข้าสู่นั่นคือ SGD จะลู่เข้าสู่โซลูชันการแทรกสอดที่มีระยะห่างน้อยที่สุดจากจุดเริ่มต้นซึ่งเป็นจริงแม้ว่าอัตราการเรียนรู้จะคงที่ ในกรณีที่พารามิเตอร์น้อยเกินไป SGD จะไม่ลู่เข้าหากอัตราการเรียนรู้คงที่[ 9 ]
ประวัติศาสตร์
ในปี พ.ศ. 2494 เฮอร์เบิร์ต ร็อบบินส์และซัตตัน มอนโรได้นำเสนอวิธีการประมาณค่าแบบสุ่มในยุคแรก ซึ่งมาก่อนการลดระดับความชันแบบสุ่ม[ 10 ]หนึ่งปีต่อมา แจ็คคีเฟอร์และเจคอบ วูล์ฟวิทซ์ได้ตีพิมพ์อัลกอริทึมการปรับให้ เหมาะสม ซึ่งใกล้เคียงกับการลดระดับความชันแบบสุ่ม โดยใช้ความแตกต่างส่วนกลางเป็นค่าประมาณของความชัน[ 11 ]ต่อมาในช่วงทศวรรษ พ.ศ. 2493 แฟรงค์ โรเซนแบลตต์ ได้ใช้ SGD เพื่อปรับ แบบจำลองเพอร์เซปตรอนของเขาให้เหมาะสมซึ่งแสดงให้เห็นถึงการประยุกต์ใช้การลดระดับความชันแบบสุ่มกับเครือข่ายประสาทเป็นครั้งแรก[ 12 ]
การย้อน กลับการแพร่กระจาย (Backpropagation)ได้รับการอธิบายครั้งแรกในปี 1986 โดยใช้การไล่ระดับแบบสุ่ม (stochastic gradient descent) เพื่อเพิ่มประสิทธิภาพพารามิเตอร์ในเครือข่ายประสาทที่มีเลเยอร์ซ่อน หลาย ชั้น ไม่นานหลังจากนั้น ก็มีการพัฒนาปรับปรุงอีกอย่างหนึ่งคือ การไล่ระดับแบบมินิแบตช์ (mini-batch gradient descent) โดยใช้ชุดข้อมูลขนาดเล็กแทนตัวอย่างเดี่ยว ในปี 1997 ได้มีการสำรวจประโยชน์ด้านประสิทธิภาพในทางปฏิบัติจากการใช้เวกเตอร์กับชุดข้อมูลขนาดเล็กดังกล่าวเป็นครั้งแรก[ 13 ]ซึ่งปูทางไปสู่การเพิ่มประสิทธิภาพอย่างมีประสิทธิภาพในการเรียนรู้ของเครื่อง ณ ปี 2023 วิธีการมินิแบตช์นี้ยังคงเป็นมาตรฐานสำหรับการฝึกอบรมเครือข่ายประสาท โดยสร้างสมดุลระหว่างประโยชน์ของการไล่ระดับแบบสุ่มกับการไล่ระดับแบบปกติ[ 14 ]
ในช่วงทศวรรษ 1980 โมเมนตัมได้ถูกนำมาใช้แล้ว และถูกเพิ่มเข้าไปในเทคนิคการเพิ่มประสิทธิภาพ SGD ในปี 1986 [ 15 ]อย่างไรก็ตาม เทคนิคการเพิ่มประสิทธิภาพเหล่านี้ถือว่าไฮเปอร์พารามิเตอร์ คงที่ กล่าว คือ อัตราการเรียนรู้และพารามิเตอร์โมเมนตัมคงที่ ในช่วงทศวรรษ 2010 แนวทางการปรับตัวในการใช้ SGD ด้วยอัตราการเรียนรู้ต่อพารามิเตอร์ได้รับการแนะนำด้วย AdaGrad (สำหรับ "Adaptive Gradient") ในปี 2011 [ 16 ]และ RMSprop (สำหรับ "Root Mean Square Propagation") ในปี 2012 [ 17 ]ในปี 2014 Adam (สำหรับ "Adaptive Moment Estimation") ได้รับการเผยแพร่ โดยนำแนวทางการปรับตัวของ RMSprop มาใช้กับโมเมนตัม จากนั้นจึงมีการพัฒนาการปรับปรุงและสาขาต่างๆ ของ Adam มากมาย เช่น Adadelta, Adagrad, AdamW และ Adamax [ 18 ] [ 19 ]
ภายในการเรียนรู้ของเครื่อง แนวทางการปรับให้เหมาะสมในปี 2023 นั้นถูกครอบงำโดยตัวปรับให้เหมาะสมที่ได้มาจาก Adam, TensorFlowและPyTorchซึ่งเป็นไลบรารีการเรียนรู้ของเครื่องที่ได้รับความนิยมมากที่สุด[ 20 ]ในปี 2023 ส่วนใหญ่ประกอบด้วยตัวปรับให้เหมาะสมที่ได้มาจาก Adam รวมถึงรุ่นก่อนหน้าของ Adam เช่น RMSprop และ SGD แบบคลาสสิก PyTorch ยังรองรับBFGS ที่มีหน่วยความจำจำกัดซึ่งเป็นวิธีการค้นหาเส้น แต่เฉพาะสำหรับการตั้งค่าอุปกรณ์เดียวที่ไม่มีกลุ่มพารามิเตอร์[ 19 ] [ 21 ]
แอปพลิเคชันที่โดดเด่น
การไล่ระดับแบบสุ่ม (Stochastic gradient descent) เป็นอัลกอริธึมยอดนิยมสำหรับการฝึกโมเดลหลากหลายประเภทในด้านการเรียนรู้ของเครื่อง รวม ถึงเครื่องเวกเตอร์สนับสนุน (เชิงเส้น) การถดถอยโลจิสติก (ดูเช่นVowpal Wabbit ) และโมเดลกราฟิก [ 22 ] เมื่อรวมกับ อัลกอริธึมการแพร่ กระจายย้อนกลับ (backpropagation ) จะเป็นอัลก อริธึมมาตรฐานที่ใช้ กันโดยทั่วไปสำหรับการฝึกเครือข่ายประสาทเทียม [ 23 ] นอกจากนี้ยังมีการรายงานการใช้งานใน ชุมชน ธรณีฟิสิกส์โดยเฉพาะอย่างยิ่งในการประยุกต์ใช้การผกผันคลื่นเต็มรูปแบบ (Full Waveform Inversion: FWI) [ 24 ]
การไล่ระดับแบบสุ่มแข่งขันกับ อัลกอริทึม L-BFGSซึ่งใช้กันอย่างแพร่หลายเช่นกัน การไล่ระดับแบบสุ่มถูกใช้มาตั้งแต่ปี 1960 เป็นอย่างน้อยสำหรับการฝึกโมเดลการถดถอยเชิงเส้นโดยเดิมทีใช้ชื่อว่าADALINE [ 25 ]
อีกหนึ่งอัลกอริธึมการลดความชันแบบสุ่มคือตัวกรองปรับตัว แบบกำลังสองน้อยที่สุด (LMS)
ส่วนขยายและรูปแบบต่างๆ
มีการเสนอและใช้งานการปรับปรุงมากมายในอัลกอริทึมการไล่ระดับแบบสุ่มพื้นฐาน โดยเฉพาะอย่างยิ่งในการเรียนรู้ของเครื่อง ความจำเป็นในการกำหนดอัตราการเรียนรู้ (ขนาดขั้นตอน) ได้รับการยอมรับว่าเป็นปัญหา การตั้งค่าพารามิเตอร์นี้สูงเกินไปอาจทำให้อัลกอริทึมเกิดการล divergence การตั้งค่าต่ำเกินไปจะทำให้การบรรจบกันช้าลง[ 26 ]การขยายการไล่ระดับแบบสุ่มที่เรียบง่ายในเชิงแนวคิดทำให้อัตราการเรียนรู้เป็นฟังก์ชันที่ลดลงη tของหมายเลขการวนซ้ำtทำให้ เกิด ตารางอัตราการเรียนรู้ดังนั้นการวนซ้ำครั้งแรกๆ จะทำให้เกิดการเปลี่ยนแปลงขนาดใหญ่ในพารามิเตอร์ ในขณะที่การวนซ้ำในภายหลังจะทำการปรับแต่งอย่างละเอียดเท่านั้น ตารางดังกล่าวเป็นที่รู้จักกันมาตั้งแต่ผลงานของ MacQueen เกี่ยวกับการ จัดกลุ่ม k -means [ 27 ]คำแนะนำเชิงปฏิบัติเกี่ยวกับการเลือกขนาดขั้นตอนใน SGD หลายรูปแบบนั้นได้มาจาก Spall [ 28 ]


การอัปเดตโดยปริยาย (ISGD)
ดังที่กล่าวไว้ก่อนหน้านี้ การลดระดับความชันแบบสุ่มคลาสสิกโดยทั่วไปจะไวต่ออัตราการเรียนรู้ηการบรรจบกันอย่างรวดเร็วต้องใช้อัตราการเรียนรู้ขนาดใหญ่ แต่อาจทำให้เกิดความไม่เสถียรเชิงตัวเลข ปัญหาดังกล่าวสามารถแก้ไขได้ส่วนใหญ่[ 29 ]โดยการพิจารณาการอัปเดตโดยปริยายซึ่งความชันแบบสุ่มจะถูกประเมินในการวนซ้ำครั้งถัดไปแทนที่จะเป็นครั้งปัจจุบัน:
สมการนี้เป็นสมการโดยปริยาย เนื่องจากปรากฏอยู่ทั้งสองข้างของสมการ เป็นรูปแบบสุ่มของวิธีการไล่ระดับใกล้เคียง (proximal gradient method)เนื่องจากสามารถเขียนการอัปเดตได้ดังนี้:
ยกตัวอย่างเช่น พิจารณาการหาค่ากำลังสองน้อยที่สุด (least squares) โดยใช้คุณลักษณะ (features) และการสังเกต (observations ) เราต้องการหาคำตอบของสมการ: โดยที่ แสดงถึงผลคูณภายใน (inner product) โปรดสังเกตว่าอาจมี "1" เป็นองค์ประกอบแรกเพื่อรวมค่าคงที่ (intercept) การลดระดับความชันแบบสุ่มคลาสสิก (classical stochastic gradient descent) ดำเนินการดังนี้:
โดยที่ค่า ถูกสุ่มอย่างสม่ำเสมอระหว่าง 1 และถึงแม้ว่าการลู่เข้าทางทฤษฎีของกระบวนการนี้จะเกิดขึ้นภายใต้สมมติฐานที่ค่อนข้างอ่อนโยน แต่ในทางปฏิบัติกระบวนการนี้อาจไม่เสถียรนัก โดยเฉพาะอย่างยิ่ง เมื่อค่าถูกกำหนดผิดพลาด ทำให้ค่า มีค่าสัมบูรณ์ของค่าลักษณะเฉพาะขนาดใหญ่ด้วยความน่าจะเป็นสูง กระบวนการอาจลู่เข้าไม่ได้ในเชิงตัวเลขภายในไม่กี่รอบการทำซ้ำ ในทางตรงกันข้ามการไล่ระดับความชันแบบสุ่มโดยปริยาย (เรียกย่อว่า ISGD) สามารถหาคำตอบได้ในรูปแบบปิดดังนี้:
กระบวนการนี้จะยังคงมีเสถียรภาพเชิงตัวเลขแทบทุกกรณีเนื่องจากอัตราการเรียนรู้ได้รับการทำให้เป็นมาตรฐานแล้ว การเปรียบเทียบระหว่างการไล่ระดับความชันแบบคลาสสิกและแบบสุ่มโดยปริยายในปัญหาการหาค่ากำลังสองน้อยที่สุดนั้นคล้ายคลึงกับการเปรียบเทียบระหว่างตัวกรองค่ากำลังสองน้อยที่สุดแบบเฉลี่ย (LMS)และ ตัวกรองค่ากำลังสองน้อยที่สุดแบบเฉลี่ยมาตรฐาน (NLMS )
ถึงแม้ว่าวิธีการแก้ปัญหาแบบปิดสำหรับ ISGD จะเป็นไปได้เฉพาะในวิธีการกำลังสองน้อยที่สุดเท่านั้น แต่กระบวนการนี้สามารถนำไปใช้ได้อย่างมีประสิทธิภาพในแบบจำลองที่หลากหลาย โดยเฉพาะอย่างยิ่ง สมมติว่าขึ้นอยู่กับผ่านการรวมเชิงเส้นกับคุณลักษณะ เท่านั้นดังนั้นเราจึงสามารถเขียนได้โดยที่อาจขึ้นอยู่กับเช่นกัน แต่ไม่ขึ้นอยู่กับยกเว้นผ่าน วิธีการกำลังสองน้อยที่สุดเป็นไปตามกฎนี้ เช่นเดียวกับการถดถอยโลจิสติกและแบบจำลองเชิงเส้นทั่วไป ส่วนใหญ่ ตัวอย่างเช่น ในวิธีการกำลังสองน้อยที่สุดและในการถดถอยโลจิสติกโดยที่คือฟังก์ชันโลจิสติกในการถดถอยปัวซงและอื่นๆ
ในสถานการณ์เช่นนี้ ISGD จะถูกนำไปใช้ง่ายๆ ดังนี้ ให้ โดยที่เป็นค่าสเกลาร์ ดังนั้น ISGD จะเทียบเท่ากับ:
สามารถหาค่าตัวประกอบการปรับขนาดได้ โดยใช้ วิธีแบ่งครึ่งช่วงเนื่องจากในแบบจำลองปกติส่วนใหญ่ เช่น แบบจำลองเชิงเส้นทั่วไปที่กล่าวถึงข้างต้น ฟังก์ชันจะลดลง ดังนั้นขอบเขตการค้นหาสำหรับจึง เป็น
โมเมนตัม
ข้อเสนอเพิ่มเติม ได้แก่วิธีโมเมนตัมหรือวิธีลูกบอลหนักซึ่งในบริบทของ ML ปรากฏใน บทความของ Rumelhart , HintonและWilliamsเกี่ยวกับการเรียนรู้แบบ backpropagation [ 30 ]และยืมแนวคิดมาจากบทความของ Boris Polyak นักคณิตศาสตร์ชาวโซเวียตในปี 1964 เกี่ยวกับการแก้สมการเชิงฟังก์ชัน[ 31 ]การไล่ระดับแบบสุ่มด้วยโมเมนตัมจะจดจำการอัปเดตΔ wในแต่ละรอบ และกำหนดการอัปเดตครั้งต่อไปเป็นการรวมเชิงเส้นของการไล่ระดับและการอัปเดตก่อนหน้า: [ 32 ] [ 33 ] ซึ่งนำไปสู่:
โดยที่พารามิเตอร์ ที่ ต้องการ ประมาณ ค่า ให้ มีค่าน้อยที่สุด คือขนาดของขั้นตอน (บางครั้งเรียกว่าอัตราการเรียนรู้ในแมชชีนเลิร์นนิง) และคือปัจจัยการลดลงแบบเอกซ์ ponential ระหว่าง 0 ถึง 1 ซึ่งกำหนดสัดส่วนการมีส่วนร่วมของเกรเดียนต์ปัจจุบันและเกรเดียนต์ก่อนหน้าต่อการเปลี่ยนแปลงน้ำหนัก
ชื่อโมเมนตัมมาจากความคล้ายคลึงกับโมเมนตัมในฟิสิกส์: เวกเตอร์น้ำหนักซึ่งคิดว่าเป็นอนุภาคที่เคลื่อนที่ผ่านพื้นที่พารามิเตอร์[ 30 ]จะได้รับความเร่งจากเกรเดียนต์ของการสูญเสีย (" แรง ") ซึ่งแตกต่างจากการลดเกรเดียนต์แบบสุ่มคลาสสิก มันมีแนวโน้มที่จะเคลื่อนที่ไปในทิศทางเดียวกัน ป้องกันการแกว่ง โมเมนตัมถูกนำมาใช้โดยนักวิทยาศาสตร์คอมพิวเตอร์อย่างประสบความสำเร็จในการฝึกเครือข่ายประสาทเทียมมาหลายทศวรรษแล้ว[ 34 ] วิธีโมเมนตัม มีความเกี่ยวข้องอย่างใกล้ชิดกับพลศาสตร์ Langevin แบบหน่วงน้อยและอาจรวมเข้ากับการอบอ่อนแบบจำลองได้[ 35 ]
ในช่วงกลางทศวรรษ 1980 วิธีการนี้ได้รับการปรับปรุงโดยYurii Nesterov เพื่อใช้เกรเดียนต์ที่คาดการณ์ไว้ที่จุดถัดไป และ เกรเดียนต์เร่งความเร็ว Nesterovที่ได้นั้นบางครั้งก็ถูกนำมาใช้ใน ML ในช่วงทศวรรษ 2010 [ 36 ]
การหาค่าเฉลี่ย
การลดระดับความชันแบบสุ่มเฉลี่ยซึ่งคิดค้นโดยอิสระโดย Ruppert และ Polyak ในช่วงปลายทศวรรษ 1980 เป็นการลดระดับความชันแบบสุ่มทั่วไปที่บันทึกค่าเฉลี่ยของเวกเตอร์พารามิเตอร์เมื่อเวลาผ่านไป กล่าวคือ การอัปเดตจะเหมือนกับการลดระดับความชันแบบสุ่มทั่วไป แต่อัลกอริทึมยังติดตาม[ 37 ] ด้วย
เมื่อทำการปรับให้เหมาะสมแล้ว เวก เตอร์ พารามิเตอร์เฉลี่ยนี้จะเข้ามาแทนที่w
เอดาเกรด
AdaGrad (สำหรับ อัลกอริทึม การไล่ระดับ แบบปรับได้ ) เป็นอัลกอริทึมการไล่ระดับแบบสุ่มที่ได้รับการดัดแปลงโดยมีอัตราการเรียนรู้ ต่อพารามิเตอร์ ซึ่งเผยแพร่ครั้งแรกในปี 2011 [ 38 ]โดยทั่วไปแล้ว วิธีนี้จะเพิ่มอัตราการเรียนรู้สำหรับพารามิเตอร์ที่เบาบางกว่าและลดอัตราการเรียนรู้สำหรับพารามิเตอร์ที่เบาบางน้อยกว่า กลยุทธ์นี้มักจะปรับปรุงประสิทธิภาพการบรรจบกันเมื่อเทียบกับการไล่ระดับแบบสุ่มมาตรฐานในสถานการณ์ที่ข้อมูลเบาบางและพารามิเตอร์ที่เบาบางมีข้อมูลมากกว่า ตัวอย่างของการใช้งานดังกล่าว ได้แก่ การประมวลผลภาษาธรรมชาติและการจดจำภาพ[ 38 ]
ยังคงมีอัตราการเรียนรู้พื้นฐานηอยู่ แต่ค่านี้จะถูกคูณด้วยองค์ประกอบของเวกเตอร์{ G j , j }ซึ่งเป็นค่าทแยงมุมของเมทริกซ์ ผลคูณภายนอก
โดยที่คือค่าความชัน ณ รอบการทำซ้ำτค่าแนวทแยงมุมกำหนดโดย
เวกเตอร์นี้โดยพื้นฐานแล้วจะเก็บผลรวมของกำลังสองของเกรเดียนต์ในอดีตตามมิติ และจะได้รับการอัปเดตหลังจากการวนซ้ำทุกครั้ง สูตรสำหรับการอัปเดตคือ[ a ] หรือเขียนเป็นการอัปเดตต่อพารามิเตอร์ แต่ละ{ G ( i , i ) }จะทำให้เกิดตัวประกอบการปรับขนาดสำหรับอัตราการเรียนรู้ที่ใช้กับพารามิเตอร์w i ตัวเดียว เนื่องจากตัวส่วนในตัวประกอบนี้คือค่าปกติℓ 2ของอนุพันธ์ก่อนหน้า การอัปเดตพารามิเตอร์ที่รุนแรงจะถูกลดทอนลง ในขณะที่พารามิเตอร์ที่ได้รับการอัปเดตน้อยหรือเล็กน้อยจะได้รับอัตราการเรียนรู้ที่สูงขึ้น[ 34 ]
แม้ว่าจะได้รับการออกแบบมาสำหรับปัญหาแบบนูนแต่ AdaGrad ก็ได้ถูกนำไปใช้กับการเพิ่มประสิทธิภาพแบบไม่นูนได้สำเร็จ[ 39 ]
อาร์เอ็มเอสโพรป
RMSProp (ย่อมาจาก Root Mean Square Propagation) เป็นวิธีการที่คิดค้นขึ้นในปี 2012 โดย James Martens และIlya Sutskeverซึ่งในขณะนั้นทั้งคู่เป็นนักศึกษาปริญญาเอกในกลุ่มของ Geoffrey Hinton โดยอัตราการเรียนรู้จะถูกปรับให้เหมาะสมกับแต่ละพารามิเตอร์เช่นเดียวกับใน Adagrad แนวคิดคือการหารอัตราการเรียนรู้สำหรับน้ำหนักด้วยค่าเฉลี่ยเคลื่อนที่ของขนาดของเกรเดียนต์ล่าสุดสำหรับน้ำหนักนั้น[ 40 ]ที่น่าแปลกคือ ไม่ได้มีการตีพิมพ์ในบทความ แต่ได้อธิบายไว้ในบทเรียน Coursera เท่านั้น [ 41 ] [ 42 ]
ดังนั้น ขั้นแรกจึงคำนวณค่าเฉลี่ยเคลื่อนที่ในรูปของค่าเฉลี่ยกำลังสอง
โดยที่คือปัจจัยการลืม แนวคิดในการจัดเก็บค่าความชันในอดีตในรูปผลรวมของกำลังสองนั้นยืมมาจาก Adagrad แต่มีการนำ "การลืม" เข้ามาใช้เพื่อแก้ปัญหาอัตราการเรียนรู้ที่ลดลงของ Adagrad ในปัญหาที่ไม่นูน โดยการค่อยๆ ลดอิทธิพลของข้อมูลเก่าลง
และพารามิเตอร์จะได้รับการอัปเดตดังนี้
RMSProp แสดงให้เห็นถึงการปรับตัวที่ดีของอัตราการเรียนรู้ในแอปพลิเคชันต่างๆ RMSProp สามารถมองได้ว่าเป็นการวางนัยทั่วไปของRpropและสามารถทำงานกับมินิแบตช์ได้เช่นกัน ต่างจากแบตช์แบบเต็มเท่านั้น[ 40 ]
อดัม
Adam [ 43 ] (ย่อมาจาก Adaptive Moment Estimation) เป็นการอัปเดตในปี 2014 ของ ตัวเพิ่มประสิทธิภาพ RMSPropโดยผสมผสานกับคุณสมบัติหลักของวิธีการ Momentum [ 44 ] ในอัลกอริธึมการเพิ่มประสิทธิภาพนี้ จะใช้ค่าเฉลี่ยเคลื่อนที่พร้อมกับการลืมแบบเอกซ์โพเนนเชียลของทั้งเกรเดียนต์และโมเมนต์ที่สองของ เกรเดียนต์ เมื่อกำหนดพารามิเตอร์และฟังก์ชันการสูญเสียโดยที่ดัชนีการวนซ้ำการฝึกอบรมปัจจุบัน (ดัชนีที่) การอัปเดตพารามิเตอร์ของ Adam จะได้รับดังนี้:
โดยที่เป็นค่าสเกลาร์ขนาดเล็ก (เช่น) ใช้เพื่อป้องกันการหารด้วย 0 และ(เช่น 0.9) และ(เช่น 0.999) คือปัจจัยการลืมสำหรับเกรเดียนต์และโมเมนต์อันดับสองของเกรเดียนต์ตามลำดับ การยกกำลังสองและการถอดรากที่สองทำทีละองค์ประกอบ
เนื่องจากค่าเฉลี่ยเคลื่อนที่แบบเอกซ์โปเนนเชียลของเกรเดียนต์และ เกรเดียนต์กำลังสองเริ่มต้นด้วยเวกเตอร์ของ 0 จึงจะมีแนวโน้มเข้าใกล้ศูนย์ในรอบการฝึกแรกๆ จึงมีการนำตัวประกอบมาใช้เพื่อชดเชยแนวโน้มนี้และเพื่อให้ได้ค่าประมาณที่ดีขึ้น
การพิสูจน์เบื้องต้นที่ยืนยันการบรรจบกันของ Adam นั้นไม่สมบูรณ์ และการวิเคราะห์ในภายหลังได้เปิดเผยว่า Adam ไม่บรรจบกันสำหรับวัตถุประสงค์นูนทั้งหมด[ 45 ] [ 46 ]ถึงกระนั้นAdamก็ยังคงถูกใช้งานต่อไปเนื่องจากมีประสิทธิภาพที่ดีในทางปฏิบัติ[ 47 ]
ตัวแปร
ความนิยมของAdamได้เป็นแรงบันดาลใจให้เกิดการพัฒนาและปรับปรุง Adam ในรูปแบบต่างๆ มากมาย ตัวอย่างเช่น:
- การไล่ระดับสีที่ปรับปรุงโดย Nesterov: NAdam , [ 48 ] FASFA [ 49 ]
- การตีความ ข้อมูลลำดับที่สองที่แตกต่างกัน: Powerpropagation [ 50 ]และAdaSqrt [ 51 ]
- การใช้บรรทัดฐานอนันต์ : AdaMax [ 43 ]
- AMSGrad [ 52 ]ซึ่งปรับปรุงการบรรจบกันเหนือAdamโดยใช้ค่าสูงสุดของเกรเดียนต์กำลังสองในอดีตแทนค่าเฉลี่ยเลขชี้กำลัง[ 53 ] AdamX [ 54 ]ปรับปรุงการบรรจบกันเหนือAMSGrad ให้ ดี ยิ่งขึ้นไปอีก
- AdamW , [ 55 ]ซึ่งช่วยปรับปรุงการลดน้ำหนัก
การไล่ระดับความชันแบบสุ่มตามเครื่องหมาย
แม้ว่าการเพิ่มประสิทธิภาพตามเครื่องหมายจะย้อนกลับไปถึงRprop ที่กล่าวถึงข้างต้น แต่ในปี 2018 นักวิจัยได้พยายามทำให้ Adam ง่ายขึ้นโดยการลบขนาดของเกรเดียนต์แบบสุ่มออกไปและพิจารณาเฉพาะเครื่องหมายเท่านั้น[ 56 ] [ 57 ]ซึ่งส่งผลให้ต้นทุนการสื่อสารในการถ่ายโอนเกรเดียนต์จากเวิร์กเกอร์ไปยังเซิร์ฟเวอร์พารามิเตอร์ลดลงอย่างมาก ในแง่นี้ มันช่วยให้บีบอัดข้อมูลเกรเดียนต์ได้ดีขึ้น ในขณะที่มีการบรรจบกันที่เทียบได้กับ SGD มาตรฐาน[ 57 ]
การค้นหาเส้นแบบย้อนกลับ
การค้นหาเส้นแบบย้อนกลับ (Backtracking line search ) เป็นอีกรูปแบบหนึ่งของการลดระดับความชัน (gradient descent) ข้อมูลทั้งหมดด้านล่างนี้มาจากลิงก์ที่กล่าวถึง โดยอิงตามเงื่อนไขที่เรียกว่าเงื่อนไข Armijo–Goldstein ทั้งสองวิธีอนุญาตให้เปลี่ยนอัตราการเรียนรู้ได้ในแต่ละรอบการทำซ้ำ อย่างไรก็ตาม วิธีการเปลี่ยนแปลงนั้นแตกต่างกัน การค้นหาเส้นแบบย้อนกลับใช้การประเมินฟังก์ชันเพื่อตรวจสอบเงื่อนไขของ Armijo และโดยหลักการแล้ว ลูปในอัลกอริทึมสำหรับการกำหนดอัตราการเรียนรู้สามารถยาวและไม่ทราบล่วงหน้าได้ SGD แบบปรับได้ (Adaptive SGD) ไม่จำเป็นต้องใช้ลูปในการกำหนดอัตราการเรียนรู้ ในทางกลับกัน Adaptive SGD ไม่รับประกัน "คุณสมบัติการลดลง" ซึ่งการค้นหาเส้นแบบย้อนกลับมี ซึ่งก็คือสำหรับทุก n หากความชันของฟังก์ชันต้นทุนมีความต่อเนื่องแบบ Lipschitz ทั่วโลก โดยมีค่าคงที่ Lipschitz เป็น L และอัตราการเรียนรู้ถูกเลือกในลำดับ 1/L แล้ว SGD เวอร์ชันมาตรฐานจะเป็นกรณีพิเศษของการค้นหาเส้นแบบย้อนกลับ
วิธีการลำดับที่สอง
อนาล็อกเชิงสุ่มของอัลกอริธึม Newton–Raphson มาตรฐาน (เชิงกำหนด) (วิธี "ลำดับที่สอง") ให้รูปแบบการเพิ่มประสิทธิภาพแบบวนซ้ำที่เหมาะสมที่สุดหรือใกล้เคียงที่สุดในเชิงอะซิมโทติกในบริบทของการประมาณเชิงสุ่ม วิธีการที่ใช้การวัดโดยตรงของเมทริกซ์ Hessianของผลรวมในฟังก์ชันความเสี่ยงเชิงประจักษ์ได้รับการพัฒนาโดย Byrd, Hansen, Nocedal และ Singer [ 58 ]อย่างไรก็ตาม การกำหนดเมทริกซ์ Hessian ที่จำเป็นสำหรับการเพิ่มประสิทธิภาพโดยตรงอาจเป็นไปไม่ได้ในทางปฏิบัติ วิธีการที่ใช้ได้ผลจริงและถูกต้องตามทฤษฎีสำหรับ SGD เวอร์ชันลำดับที่สองที่ไม่ต้องการข้อมูล Hessian โดยตรงนั้นได้มาจาก Spall และคนอื่นๆ[ 59 ] [ 60 ] [ 61 ] (Ruppert เสนอวิธีการที่มีประสิทธิภาพน้อยกว่าโดยอาศัยความแตกต่างแบบจำกัด แทนที่จะใช้การรบกวนพร้อมกัน[ 62 ] ) อีกแนวทางหนึ่งในการประมาณเมทริกซ์ Hessian คือการแทนที่ด้วยเมทริกซ์ข้อมูล Fisher ซึ่งแปลงเกรเดียนต์ปกติให้เป็นแบบธรรมชาติ[ 63 ]วิธีการเหล่านี้ที่ไม่ต้องการข้อมูล Hessian โดยตรงนั้นขึ้นอยู่กับค่าของผลรวมในฟังก์ชันความเสี่ยงเชิงประจักษ์ข้างต้นหรือค่าของเกรเดียนต์ของผลรวม (เช่น อินพุต SGD) โดยเฉพาะอย่างยิ่ง ความเหมาะสมอันดับสองสามารถบรรลุได้ในเชิงอะซิมโทติกโดยไม่ต้องคำนวณเมทริกซ์ Hessian ของผลรวมในฟังก์ชันความเสี่ยงเชิงประจักษ์โดยตรง เมื่อวัตถุประสงค์คือการสูญเสีย กำลังสองน้อยที่สุดแบบไม่เชิงเส้น โดยที่คือแบบจำลองการทำนาย (เช่นเครือข่ายประสาทเทียมเชิงลึก ) โครงสร้างของวัตถุประสงค์สามารถนำมาใช้เพื่อประมาณข้อมูลอันดับ 2 โดยใช้เกรเดียนต์เท่านั้น วิธีการดังกล่าวนั้นเรียบง่ายและมักได้ผล[ 64 ]
การประมาณค่าในเวลาต่อเนื่อง
สำหรับอัตราการเรียนรู้ที่ต่ำการไล่ระดับแบบสุ่ม (stochastic gradient descent) สามารถมองได้ว่าเป็นการแบ่งส่วนของสมการเชิงอนุพันธ์สามัญของการไหลของไล่ระดับ (gradient flow ODE)
ขึ้นอยู่กับสัญญาณรบกวนแบบสุ่มเพิ่มเติม การประมาณค่านี้ใช้ได้เฉพาะในช่วงเวลาจำกัดในแง่ต่อไปนี้: สมมติว่าสัมประสิทธิ์ทั้งหมด มีความเรียบเพียงพอ ให้และเป็นฟังก์ชันทดสอบที่มีความเรียบเพียงพอ แล้วจะมีค่าคงที่ อยู่ค่าหนึ่งซึ่งสำหรับทุก
โดยที่หมายถึง การหาค่าเฉลี่ยโดยพิจารณาจากการเลือกดัชนีแบบสุ่มในแผนการลดระดับความชันแบบสุ่ม
เนื่องจากการประมาณค่านี้ไม่สามารถจับความผันผวนแบบสุ่มรอบพฤติกรรมเฉลี่ยของโซลูชันการลดระดับความชันแบบสุ่มสำหรับสมการเชิงอนุพันธ์แบบสุ่ม (SDEs) ได้ จึงมีการเสนอให้ใช้โซลูชันดังกล่าวเป็นวัตถุจำกัด[ 65 ]กล่าวโดยละเอียดคือ โซลูชันสำหรับ SDE
โดยที่หมายถึงปริพันธ์อิโตที่เกี่ยวข้องกับการเคลื่อนที่แบบบราวน์เป็นการประมาณที่แม่นยำกว่าในแง่ที่ว่ามีค่าคงที่อยู่ค่าหนึ่งเช่นนั้น
อย่างไรก็ตาม SDE นี้เป็นเพียงการประมาณการเคลื่อนที่แบบจุดเดียวของการไล่ระดับแบบสุ่มเท่านั้น สำหรับการประมาณการไหลแบบสุ่มจำเป็นต้องพิจารณา SDE ที่มีสัญญาณรบกวนมิติอนันต์[ 66 ]
ดูเพิ่มเติม
- การค้นหาเส้นแบบย้อนกลับ
- กฎการปรับขนาดประสาทที่แตกหัก
- การลดพิกัด – เปลี่ยนพิกัดทีละค่า แทนที่จะเปลี่ยนทีละตัวอย่าง
- การไล่ระดับแบบสุ่มที่มีความเป็นส่วนตัวแตกต่างกัน
- ตัวจำแนกเชิงเส้น
- การเรียนรู้ของเครื่องจักรแบบออนไลน์
- การปีนเขาแบบสุ่ม
- การลดความแปรปรวนแบบสุ่ม
หมายเหตุ
- ^หมายถึงผลคูณแบบทีละองค์ประกอบ
อ่านเพิ่มเติม
- บอตตู, เลออน (2004), "การเรียนรู้แบบสุ่ม" , การบรรยายขั้นสูงเกี่ยวกับการเรียนรู้ของเครื่องจักร , LNAI, เล่มที่ 3176, สปริงเกอร์, หน้า 146–168 , ISBN 978-3-540-23122-6
- Buduma, Nikhil; Locascio, Nicholas (2017), "Beyond Gradient Descent" , Fundamentals of Deep Learning : Designing Next-Generation Machine Intelligence Algorithms , O'Reilly, ISBN 9781491925584
- LeCun, Yann A. ; Bottou, Léon; Orr, Genevieve B.; Müller, Klaus-Robert (2012), "Efficient BackProp" , Neural Networks: Tricks of the Trade , Springer, หน้า 9–48 , ISBN 978-3-642-35288-1
- Spall, James C. (2003), บทนำสู่การค้นหาและการเพิ่มประสิทธิภาพเชิงสุ่ม , Wiley , ISBN 978-0-471-33052-3
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การไล่ระดับแบบสุ่ม
การไล่ระดับแบบสุ่ม (มักย่อว่าSGD ) เป็น วิธี การวนซ้ำเพื่อเพิ่มประสิทธิภาพฟังก์ชันเป้าหมายที่มีคุณสมบัติความเรียบ ที่เหมาะสม (เช่น สามารถหาอนุพันธ์ได้หรือสามารถหาอนุพันธ์ย่อยได้ ).
พื้นหลัง
ทั้ง การ ประมาณค่า ทางสถิติ และ การเรียนรู้ของเครื่องจักร ต่างพิจารณาปัญหา การลดค่า ฟังก์ชันเป้าหมาย ที่มีรูปแบบเป็นผลรวม โดยที่ พารามิเตอร์ ที่ทำให้ค่าต่ำสุดคือค่าที่ต้อง ประมาณ โดย ทั่วไปแล้ว ฟังก์ชันแต่ละพจน์ในผลรวมจะสัมพันธ์กับ การสังเกต ลำดับที่ใน...
วิธีการวนซ้ำ
ในการไล่ระดับแบบสุ่ม (หรือ "ออนไลน์") ไล่ระดับที่แท้จริงจะถูกประมาณโดยไล่ระดับที่ตัวอย่างเดียว: เมื่ออัลกอริทึมกวาดผ่านชุดฝึกอบรม มันจะทำการอัปเดตข้างต้นสำหรับแต่ละตัวอย่างฝึกอบรม สามารถวนซ้ำชุดฝึกอบรมได้หลายรอบจนกว่าอัลกอริทึมจะลู่เข้า หากทำเช่นนี้...
การถดถอยเชิงเส้น
สมมติว่าเราต้องการหาเส้นตรงที่เหมาะสมกับชุดข้อมูลฝึกฝนที่มีข้อมูลสังเกตการณ์และค่าประมาณที่สอดคล้องกันโดยใช้ วิธีการกำลัง สองน้อยที่สุด ฟังก์ชันเป้าหมายที่จะต้องลดให้เหลือน้อยที่สุดคือ บรรทัดสุดท้ายในรหัสเทียมข้างต้นสำหรับปัญหานี้จะกลายเป็น:...