แรงจูงใจที่ใช้งานง่ายสำหรับการอัพเดต BFGS


15

ฉันกำลังสอนชั้นสำรวจการวิเคราะห์เชิงตัวเลขและกำลังมองหาแรงจูงใจสำหรับวิธีการ BFGS สำหรับนักเรียนที่มีพื้นฐาน / สัญชาตญาณ จำกัด ในการเพิ่มประสิทธิภาพ!

ในขณะที่ฉันไม่มีเวลาพิสูจน์อย่างจริงจังว่าทุกอย่างมาบรรจบกันฉันกำลังมองหาแรงจูงใจที่สมเหตุสมผลว่าทำไมการอัปเดตของ BFGS Hessian จึงอาจปรากฏขึ้น วิธีการค้นพบของ Broyden (การเขียนของฉันอยู่ที่นี่ ) สามารถกระตุ้นได้โดยขอให้การประมาณของคุณในปัจจุบันของ Jacobian ลดความแตกต่างกับ Jacobian เก่าภายใต้ข้อ จำกัด ที่คำนึงถึงเซคแคนต์ล่าสุด: J_k (\ vec x_k- \ vec x_ {k-1}) = f (\ vec x_k) -f (\ vec x_ {k-1 }) J k ( → x k - → x k - 1 )=F( → x k )-เอฟ( → x k - 1 )‖Jk−Jk−1‖Fro2Jk(x→k−x→k−1)=f(x→k)−f(x→k−1)

อนุพันธ์ของการอัพเดต BFGS ดูเหมือนจะเกี่ยวข้องและมืดมนกว่ามาก! โดยเฉพาะอย่างยิ่งผมอยากได้ที่จะสรุปเบื้องต้นว่าการปรับปรุงควรจะเป็นอันดับที่ 2 หรือใช้รูปแบบเฉพาะ มีแรงจูงใจในการมองสั้น ๆ สำหรับการอัพเดท BFGS Hessian เช่นเดียวกับ Broyden หรือไม่?


4
หากคุณอนุญาตการอัปเดตตามอำเภอใจคุณสามารถใช้ Hessian แบบเต็มในวิธีของนิวตัน ข้อดีอย่างหนึ่งของการคำนวณที่สำคัญของการอัปเดตอันดับต่ำคือช่วยให้คุณสามารถปรับปรุงการแยกตัวประกอบของ Hessian โดยประมาณได้อย่างรวดเร็ว
— Brian Borchers

คำตอบ:


12

การได้มาของ BFGS นั้นง่ายกว่าเมื่อมีการพิจารณาฟังก์ชั่นการคิดต้นทุน (อย่างเคร่งครัด):

แต่บาง พื้นหลัง ข้อมูลเป็นสิ่งที่จำเป็น: สมมติหนึ่งต้องการที่จะลดนูนทำงาน บอกว่ามีวิธีการแก้ปัญหาโดยประมาณx_kจากนั้นหนึ่งประมาณค่าต่ำสุดของโดยค่าต่ำสุดของการขยายเทย์เลอร์ที่ถูกตัดทอน นั่นคือหนึ่งในรูปลักษณ์สำหรับเช่นว่ามีน้อยและชุดP การคำนวณความชันของ - "ด้วยความเคารพต่อ " - และการตั้งค่าเป็นศูนย์จะให้ความสัมพันธ์ x k f f ( x k + p ) ≈ f ( x k ) + ∇ f ( x k ) T p + 1

ฉ(x)→นาทีx∈Rn.
xkฉp ( ∗ ) x k + 1 : = x k + p ( ∗ ) p H ( x k ) [ x k + 1 - x k ] = ∇ f ( x k + 1 ) - ∇ f ( x k ) , H
ฉ(xk+พี)≈ฉ(xk)+∇ฉ(xk)Tพี+12พีTH(xk)พี.(* * * *)
พี(* * * *)xk+1=xk+พี(* * * *)พี
H(xk)[xk+1-xk]=∇ฉ(xk+1)-∇ฉ(xk),
ที่คือ 'Jacobian of the gradient' หรือเมทริกซ์ของ HessianH

เนื่องจากการคำนวณและการผกผันของ Hessian มีราคาแพง ...


... คำตอบสั้น ๆ

(cf. การอัปเดตของ Broyden) อาจเป็นได้ว่าการอัพเดต BFGSย่อเล็กสุด ในเกณฑ์ Frobenius ที่ถ่วงน้ำหนักอย่างชาญฉลาด ภายใต้ ‖ H - 1 k - H - 1 ‖ WHk+1-1

‖Hk-1-H-1‖W
  1. H[xk+1-xk]=∇ฉ(xk+1)-∇ฉ(xk) - นี่คือสิ่งที่เราต้องการ - และ
  2. HT=Hเนื่องจาก Hessian มีความสมมาตร

ดังนั้นทางเลือกของน้ำหนักในเป็นค่าผกผันของ Hessian เฉลี่ย , cf ที่นี่สำหรับคำสั่ง แต่ไม่มีหลักฐานให้สูตรการปรับปรุง BFGS (ด้วย )W‖H‖W=‖W1/2HW1/2‖F G=∫01H(xk+τพี)dταk=1

ประเด็นสำคัญคือ:

  • หนึ่งพยายามประมาณโซลูชันสำหรับต้นทุนจริงโดยโซลูชันสำหรับการประมาณกำลังสอง
  • การคำนวณของ Hessian และสิ่งที่ตรงกันข้ามมันมีราคาแพง หนึ่งคนชอบการอัพเดทง่ายๆ
  • การอัปเดตจะถูกเลือกให้เหมาะสมที่สุดสำหรับการกลับด้านแทนที่จะเป็น Hessian จริง
  • นั่นคือการอัปเดตอันดับ 2 เป็นผลมาจากตัวเลือกเฉพาะของน้ำหนักในบรรทัดฐาน Frobenius

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


ขอบคุณมากนี่เป็นสิ่งที่ยอดเยี่ยม (และมากกว่าหรือน้อยกว่าที่ฉันคาดไว้จากการอภิปรายใน Nocedal & Wright) คำถามที่เหลืออีกข้อหนึ่งที่ฉันมีคือ: ทำไมเราถึงเลือกและบรรทัดฐานในขณะที่เราทำ ฉันเข้าใจว่ามันเกี่ยวกับหน่วยต่างๆ แต่มีทางเลือกมากมายที่เป็นไปได้ของและบรรทัดฐานที่ทำสิ่งนี้ WW
— Justin Solomon

ใช่จริง ฉันก็ไม่รู้ คำตอบเดียวคือมันให้สูตรการคำนวณที่ง่ายและทำงานได้ดี ในอดีตวิธีการนี้ในการอัปเดต - การลดความแตกต่างในการอัปเดตให้น้อยที่สุดคือวิธีที่ Shanno ใช้ มันเป็นผู้ตัดสิน (Goldfarb) ที่พบว่าการเลือกที่เฉพาะเจาะจงของน้ำหนักนำไปสู่สูตรของ Broyden และ Fletcher ดูวิทยานิพนธ์ปริญญาเอกนี้การพัฒนาที่ผ่านมาของวิธีการตัดแกน BFGS ...สำหรับการหยั่งรู้ของนักพัฒนาของ BFGS อย่างไรก็ตามทั้งสามวิธีนั้นค่อนข้างเป็นนามธรรม
— Jan

1
น่าสนใจขอบคุณสำหรับคำแนะนำ! การเขียนปัจจุบันของฉัน (มีข้อผิดพลาดทางคณิตศาสตร์ที่ต้องการความช่วยเหลือ) อยู่ที่นี่: graphics.stanford.edu/courses/cs205a-13-fall/assets/notes/ … (ถ้าคุณต้องการเครดิตสำหรับความช่วยเหลือของคุณฉันยินดีที่จะให้มัน - โปรดส่งอีเมลถึงฉันพร้อมข้อมูลติดต่อที่เหมาะสม)
— Justin Solomon

@jan ทำไมคุณถึงสมการและไม่ใช่ ไม่ได้เป็นเงื่อนไขที่กำหนดโดย secantที่f_k ขอบคุณ!
H(xk)[xk+1-xk]=∇ฉ(xk+1)-∇ฉ(xk)
H(xk+1)[xk+1-xk]=∇ฉ(xk+1)-∇ฉ(xk)?
Hk+1sk=Yksk=xk+1-xk,Yk=∇ฉk+1-∇ฉk
— Jeff Faraci
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.