กลับไปหน้าบทความ

อ่าน 10 นาที

อัลกอริทึม Broyden–Fletcher–Goldfarb–Shanno

ในการเพิ่มประสิทธิภาพเชิงตัวเลขอัลกอริทึม Broyden –Fletcher–Goldfarb–Shanno ( BFGS ) เป็นวิธีการวนซ้ำสำหรับการแก้ปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้น ที่ไม่มีข้อจำกัด...

อัลกอริทึม Broyden–Fletcher–Goldfarb–Shanno

ในการเพิ่มประสิทธิภาพเชิงตัวเลขอัลกอริทึม Broyden –Fletcher–Goldfarb–Shanno ( BFGS ) เป็นวิธีการวนซ้ำสำหรับการแก้ปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้น ที่ไม่มีข้อจำกัด [ 1 ] เช่นเดียวกับ วิธี Davidon–Fletcher–Powellที่เกี่ยวข้องBFGS กำหนดทิศทางการลดลงโดยการปรับ สภาพ เกรเดียนต์ด้วยข้อมูลความโค้ง โดยทำเช่นนั้นโดยการค่อยๆ ปรับปรุงการประมาณเมทริกซ์ Hessianของฟังก์ชันการสูญเสียซึ่งได้มาจากการประเมินเกรเดียนต์ (หรือการประเมินเกรเดียนต์โดยประมาณ) ผ่านวิธีการเซแคนต์แบบ ทั่วไป [ 2 ]

เนื่องจากการอัปเดตเมทริกซ์ความโค้ง BFGS ไม่จำเป็นต้องใช้การผกผันเมทริกซ์ความซับซ้อนในการคำนวณจึงมีเพียงเมื่อเทียบกับในวิธีของนิวตัน นอกจากนี้ L-BFGS ที่ ใช้กันทั่วไปก็เป็น BFGS เวอร์ชันหน่วยความจำจำกัด ซึ่งเหมาะอย่างยิ่งสำหรับปัญหาที่มีตัวแปรจำนวนมาก (เช่น >1000) ตัวแปร BFGS-B จัดการกับข้อจำกัดแบบกล่องอย่างง่าย[ 3 ]เมทริกซ์ BFGS ยังยอมรับการแสดงแบบกระชับซึ่งทำให้เหมาะสำหรับปัญหาที่มีข้อจำกัดขนาดใหญ่ได้ดียิ่งขึ้น

อัลกอริทึมนี้ตั้งชื่อตามCharles George Broyden , Roger Fletcher , Donald GoldfarbและDavid Shanno [ 4 ] [ 5 ] [ 6 ] [ 7 ] เป็นตัวอย่างหนึ่งของอัลกอริทึมทั่วไปโดย John Greenstadt [ 8 ]

เหตุผล

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

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

ทิศทางการค้นหาp kในขั้นตอนkกำหนดโดยคำตอบของสมการอนาล็อกของสมการนิวตัน:

โดยที่เป็นค่าประมาณของเมทริกซ์เฮสเซียนที่ซึ่งจะได้รับการปรับปรุงซ้ำๆ ในแต่ละขั้นตอน และเป็นเกรเดียนต์ของฟังก์ชันที่ประเมินค่าที่x k จากนั้นจะใช้ การค้นหาเส้นตรงในทิศทางp kเพื่อหาจุดถัดไปx k +1โดยการลดค่าสเกลาร์ ให้เหลือน้อยที่สุด

เงื่อนไขกึ่งนิวตันที่กำหนดไว้สำหรับการปรับปรุงคือ

ให้และแล้วจะสอดคล้องกับเงื่อนไขต่อ ไปนี้

,

ซึ่งก็คือสมการเซแคนต์

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

แทนที่จะต้องคำนวณ เมทริกซ์ Hessian เต็มรูปแบบ ณ จุดนั้น เมทริกซ์ Hessian โดยประมาณ ณ ขั้นตอนkจะได้รับการปรับปรุงโดยการบวกเมทริกซ์สองตัวเข้าด้วยกัน:

ทั้งและเป็นเมทริกซ์สมมาตรอันดับหนึ่ง แต่ผลรวมของพวกมันเป็นเมทริกซ์อัปเดตอันดับสอง เมทริกซ์อัปเดต BFGS และDFPต่างจากเมทริกซ์ก่อนหน้าด้วยเมทริกซ์อันดับสอง วิธีการอันดับหนึ่งที่ง่ายกว่าอีกวิธีหนึ่งเรียกว่า วิธี การอันดับหนึ่งแบบสมมาตรซึ่งไม่รับประกันความเป็นบวกแน่นอนเพื่อรักษาความสมมาตรและความเป็นบวกแน่นอนของรูปแบบการอัปเดตสามารถเลือกเป็น ได้โดยกำหนดเงื่อนไขเซแคนต์เลือกและเราจะได้: [ 9 ]

สุดท้าย เราแทนค่าและลงในและได้สมการการปรับปรุงของ:

อัลกอริทึม

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

จากการคาดเดาเบื้องต้นและการคาดเดาเบื้องต้นของเมทริกซ์เฮสเซียนขั้นตอนต่อไปนี้จะถูกทำซ้ำจนกว่าจะลู่เข้าสู่คำตอบ:

  1. หาทิศทางโดยการแก้โจทย์ปัญหา
  2. ทำการหาค่าเหมาะสมที่สุดแบบหนึ่งมิติ ( การค้นหาเส้นตรง ) เพื่อหาขนาดขั้นตอนที่ยอมรับได้ในทิศทางที่พบในขั้นตอนแรก หากทำการค้นหาเส้นตรงแบบแม่นยำแล้วในทางปฏิบัติ การค้นหาเส้นตรงแบบไม่แม่นยำมักจะเพียงพอ โดยมีค่าที่ยอมรับได้และตรงตามเงื่อนไขของ Wolfe
  3. ตั้งค่าและอัปเดต
  4. .
  5. .

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

ขั้นตอนแรกของอัลกอริทึมดำเนินการโดยใช้เมทริกซ์ผกผันซึ่งสามารถหาได้อย่างมีประสิทธิภาพโดยการใช้สูตร Sherman–Morrisonในขั้นตอนที่ 5 ของอัลกอริทึม ซึ่งจะได้ผลลัพธ์ดังนี้

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

ดังนั้น เพื่อหลีกเลี่ยงการผกผันเมทริกซ์ใดๆ จึงสามารถประมาณค่าผกผัน ของเมทริกซ์เฮสเซียนแทนที่จะใช้เมทริกซ์เฮสเซียนเองได้: [ 10 ]

จากการคาดเดาเบื้องต้นและเมทริกซ์เฮสเซียนผกผัน โดยประมาณ ขั้นตอนต่อไปนี้จะถูกทำซ้ำจนกว่าจะลู่เข้าสู่คำตอบ:

  1. หาทิศทางโดยการแก้โจทย์ปัญหา
  2. ทำการหาค่าเหมาะสมที่สุดแบบหนึ่งมิติ ( การค้นหาเส้นตรง ) เพื่อหาขนาดขั้นตอนที่ยอมรับได้ในทิศทางที่พบในขั้นตอนแรก หากทำการค้นหาเส้นตรงแบบแม่นยำแล้วในทางปฏิบัติ การค้นหาเส้นตรงแบบไม่แม่นยำมักจะเพียงพอ โดยมีค่าที่ยอมรับได้และตรงตามเงื่อนไขของ Wolfe
  3. ตั้งค่าและอัปเดต
  4. .
  5. .

ในปัญหาการประมาณค่าทางสถิติ (เช่นความน่าจะเป็นสูงสุดหรือการอนุมานแบบเบย์เซียน) ช่วงความน่าเชื่อถือหรือช่วงความเชื่อมั่นสำหรับคำตอบสามารถประมาณได้จาก เมทริกซ์เฮสเซียน ผกผันสุดท้าย อย่างไรก็ตาม ปริมาณเหล่านี้ถูกกำหนดทางเทคนิคโดยเมทริกซ์เฮสเซียนจริง และการประมาณค่า BFGS อาจไม่ลู่เข้าสู่เมทริกซ์เฮสเซียนจริง[ 11 ]

ความคืบหน้าเพิ่มเติม

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

ในกรณีดังกล่าว สามารถใช้การอัปเดต BFGS แบบลดทอนที่เรียกว่าหนึ่งรายการ (ดู[ 12 ] ) ซึ่งปรับเปลี่ยนและ/หรือเพื่อให้ได้การอัปเดตที่แข็งแกร่งยิ่งขึ้น

การนำไปใช้งานที่โดดเด่น

ตัวอย่างการใช้งานแบบโอเพนซอร์สที่โดดเด่น ได้แก่:

  • ALGLIBเป็นไลบรารีที่ใช้ C++ และ C# ในการจำลอง BFGS รวมถึงเวอร์ชันที่ใช้หน่วยความจำจำกัด
  • GNU Octaveใช้รูปแบบหนึ่งของ BFGS ในfsolveฟังก์ชันของมัน โดยมี การขยาย ขอบเขตความเชื่อถือ (trust region extensions)
  • GSL ใช้ BFGSเป็น gsl_multimin_fdfminimizer_vector_bfgs2 [ 13 ]
  • ในRอัลกอริทึม BFGS (และเวอร์ชัน L-BFGS-B ที่อนุญาตให้มีข้อจำกัดแบบกล่อง) ถูกนำมาใช้เป็นตัวเลือกของฟังก์ชันพื้นฐาน optim() [ 14 ]
  • ในSciPyฟังก์ชัน scipy.optimize.fmin_bfgs จะใช้ BFGS [ 15 ]นอกจากนี้ยังสามารถรัน BFGS โดยใช้ อัลกอริธึม L-BFGS ใดๆ ก็ได้ โดยการตั้งค่าพารามิเตอร์ L ให้เป็นตัวเลขขนาดใหญ่มาก นอกจากนี้ยังเป็นหนึ่งในวิธีการเริ่มต้นที่ใช้เมื่อรัน scipy.optimize.minimize โดยไม่มีข้อจำกัด[ 16 ]
  • ในJuliaแพ็ก เกจ Optim.jlใช้ BFGS และ L-BFGS เป็นตัวเลือกตัวแก้ปัญหาสำหรับฟังก์ชัน optimize() (รวมถึงตัวเลือกอื่นๆ ด้วย) [ 17 ]
  • Stanใช้ BFGS ร่วมกับการหาอนุพันธ์อัตโนมัติเป็นทางเลือกในการแก้ปัญหาการประมาณค่าความน่าจะเป็นสูงสุดและการประมาณค่าความน่าจะเป็นสูงสุดภายหลัง

ตัวอย่างการใช้งานที่เป็นกรรมสิทธิ์ที่โดดเด่น ได้แก่:

  • ซอฟต์แวร์การหาค่าเหมาะสมที่สุดแบบไม่เชิงเส้นขนาดใหญ่Artelys Knitroได้นำอัลกอริทึม BFGS และ L-BFGS มาใช้ด้วยเช่นกัน
  • ใน MATLAB Optimization Toolboxฟังก์ชัน fminunc ใช้ BFGS ร่วมกับการค้นหาเส้นแบบลูกบาศก์เมื่อตั้งค่าขนาดปัญหาเป็น "ขนาดกลาง"
  • Mathematicaมี BFGS รวมอยู่ด้วย
  • LS-DYNA ยังใช้ BFGS ในการแก้ปัญหาแบบอิมพลิซิตอีกด้วย

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • Avriel, Mordecai (2003), การเขียนโปรแกรมเชิงไม่เชิงเส้น: การวิเคราะห์และวิธีการ , สำนักพิมพ์ Dover, ISBN 978-0-486-43227-4
  • Bonnans, J. Frédéric; Gilbert, J. Charles; Lemaréchal, Claude ; Sagastizábal, Claudia A. (2006), "วิธีการแบบนิวตัน", การหาค่าเหมาะสมที่สุดเชิงตัวเลข: แง่มุมทางทฤษฎีและเชิงปฏิบัติ (ฉบับที่สอง), เบอร์ลิน: Springer, หน้า  51–66 , ISBN 3-540-35445-X
  • เฟลตเชอร์, โรเจอร์ (1987), วิธีการปฏิบัติในการเพิ่มประสิทธิภาพ (ฉบับที่ 2), นิวยอร์ก: จอห์น ไวลีย์ แอนด์ ซันส์ , ISBN 978-0-471-91547-8
  • Luenberger, David G. ; Ye, Yinyu (2008), การเขียนโปรแกรมเชิงเส้นและไม่เชิงเส้น , ชุดนานาชาติในการวิจัยปฏิบัติการและวิทยาการจัดการ, เล่มที่ 116 (ฉบับที่สาม), นิวยอร์ก: Springer, หน้า xiv+546, ISBN 978-0-387-74502-2, MR  2423726
  • Kelley, CT (1999), วิธีการวนซ้ำสำหรับการเพิ่มประสิทธิภาพ , ฟิลาเดลเฟีย: สมาคมคณิตศาสตร์อุตสาหกรรมและประยุกต์, หน้า  71–86 , ISBN 0-89871-433-8
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Broyden–Fletcher–Goldfarb–Shanno_algorithm&oldid=1361200151 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อัลกอริทึม Broyden–Fletcher–Goldfarb–Shanno

ในการเพิ่มประสิทธิภาพเชิงตัวเลขอัลกอริทึม Broyden –Fletcher–Goldfarb–Shanno ( BFGS ) เป็นวิธีการวนซ้ำสำหรับการแก้ปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้น ที่ไม่มีข้อจำกัด...

เหตุผล

ปัญหาการหาค่าเหมาะสมที่สุดคือการหาค่าต่ำสุดของ โดยที่เป็นเวกเตอร์ในและเป็นฟังก์ชันสเกลาร์ที่หาอนุพันธ์ได้ ไม่มีข้อจำกัดใดๆ เกี่ยวกับค่าที่สามารถรับได้ เอฟ ( x ) {\displaystyle f(\mathbf {x} )} x {\displaystyle \mathbf {x} } อาร์ n {\displaystyle \mathbb {R}...

อัลกอริทึม

พิจารณาปัญหาการหาค่าเหมาะสมที่สุดแบบไม่มีข้อจำกัดต่อไปนี้ โดยที่เป็นฟังก์ชันเป้าหมาย ที่ไม่เป็นเชิงเส้นและ สามารถหาอนุพันธ์ได้สองครั้ง minimize x ∈ R n f ( x ) , {\displaystyle {\begin{aligned}{\underset {\mathbf {x} \in \mathbb {R}...

ความคืบหน้าเพิ่มเติม

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