ฉันจะเริ่มต้นด้วยคำพูดทั่วไป: ข้อมูลการสั่งซื้อครั้งแรก (เช่นการใช้การไล่ระดับสีเพียงอย่างเดียวซึ่งการเข้ารหัสลาดชัน) สามารถให้ข้อมูลทิศทางคุณเท่านั้น: มันสามารถบอกคุณได้ว่าค่าฟังก์ชั่นลดลงในทิศทางการค้นหา . ในการตัดสินใจว่าจะไปตามทิศทางการค้นหานานแค่ไหนคุณต้องการข้อมูลเพิ่มเติม (การไล่ระดับสีด้วยความยาวขั้นตอนคงที่อาจล้มเหลวแม้จะเกิดปัญหาสมการกำลังสองนูน) สำหรับเรื่องนี้คุณมีสองทางเลือก:
- ใช้ข้อมูลลำดับที่สอง (ซึ่งเข้ารหัสความโค้ง) ตัวอย่างเช่นโดยใช้วิธีของนิวตันแทนการไล่ระดับสีแบบไล่ระดับ (ซึ่งคุณสามารถใช้ความยาวขั้นตอนที่ใกล้เพียงพอกับตัวลดขนาดได้เสมอ)1
- การทดลองและข้อผิดพลาด (ซึ่งแน่นอนว่าฉันหมายถึงการใช้การค้นหาบรรทัดที่เหมาะสมเช่น Armijo)
ถ้าในขณะที่คุณเขียนคุณไม่สามารถเข้าถึงอนุพันธ์อันดับสองและการประเมินฟังก์ชั่น obejctive นั้นมีราคาแพงมากความหวังเดียวของคุณคือการประนีประนอม: ใช้ข้อมูลลำดับที่สองโดยประมาณที่เพียงพอเพื่อให้ได้ความยาวขั้นตอนที่เหมาะสม การค้นหาต้องการเพียงการประเมิน (เช่นอย่างน้อยที่สุดคงที่หลายเท่าของความพยายามที่คุณต้องประเมินการไล่ระดับสี)O(1)
ความเป็นไปได้อย่างหนึ่งคือการใช้Barzilai - Borwein step length (ดูเช่น Fletcher: บนวิธี Barzilai-Borwein การปรับให้เหมาะสมและควบคุมด้วยแอปพลิเคชัน 235–256, Appl. Optimized, 96, Springer, New York, 2005 ) แนวคิดคือใช้การประมาณความแตกต่างอัน จำกัด ของความโค้งตามทิศทางการค้นหาเพื่อให้ได้ขนาดโดยประมาณ โดยเฉพาะให้เลือกα0> 0 โดยพลการตั้ง ก.0: = ∇ f(x0) แล้วสำหรับ k = 0 , . .:
- ชุด sk= -α- 1kก.k และ xk + 1=xk+sk
- ประเมินผล ก.k + 1= ∇ f(xk + 1) และตั้งค่า Yk=ก.k + 1-ก.k
- ชุด αk + 1=(Yk)TYk(Yk)Tsk
ตัวเลือกนี้สามารถแสดงให้เห็นว่ามาบรรจบกัน (ในทางปฏิบัติอย่างรวดเร็ว) สำหรับฟังก์ชั่นสมการกำลังสอง แต่คอนเวอร์เจนซ์ไม่ได้เป็นเสียงเดียว (เช่นค่าฟังก์ชันฉ(xk + 1) สามารถมีขนาดใหญ่กว่า ฉ(xk)แต่เพียงครั้งเดียว ดูพล็อตหน้า 10 ในกระดาษของลูกธนู สำหรับฟังก์ชั่นที่ไม่ใช่สมการกำลังสองคุณจะต้องรวมสิ่งนี้เข้ากับการค้นหาสายซึ่งจำเป็นต้องได้รับการแก้ไขเพื่อจัดการกับความไม่เป็นโมโนโพนิค ความเป็นไปได้อย่างหนึ่งคือการเลือกσk∈ ( 0 ,α- 1k) (เช่นโดยการย้อนรอย) เช่นนั้น
ฉ(xk-σkก.k) ≤สูงสุดสูงสุด( k - M, 1 ) ≤ j ≤ kฉ(xJ) - γσk(ก.k)Tก.k,
ที่ไหน
γ∈ ( 0 , 1 ) เป็นพารามิเตอร์ Armijo ทั่วไปและ
M ควบคุมระดับของความน่าเบื่อ (เช่น
M= 10) นอกจากนี้ยังมีตัวแปรที่ใช้ค่าการไล่ระดับสีแทนค่าฟังก์ชั่น แต่ในกรณีของคุณการไล่ระดับสีนั้นมีราคาแพงกว่าในการประเมินมากกว่าฟังก์ชั่นดังนั้นจึงไม่สมเหตุสมผล (หมายเหตุ: แน่นอนคุณสามารถลองยอมรับขั้นตอน BB ยาว ๆ และเชื่อในโชคของคุณได้ แต่ถ้าคุณต้องการความทนทานแบบใด ๆ - ตามที่คุณเขียนไว้ในความคิดเห็นของคุณ - นั่นเป็นความคิดที่แย่จริงๆ)
ทางเลือกอื่น (และในความคิดของฉันวิธีที่ดีกว่ามาก) จะใช้การประมาณผลต่างอัน จำกัด นี้แล้วในการคำนวณทิศทางการค้นหา นี้เรียกว่าวิธีการกึ่งนิวตัน ความคิดคือการสร้างการประมาณของ Hessian ทีละน้อย∇2ฉ(xk)โดยใช้ความแตกต่างของการไล่ระดับสี ตัวอย่างเช่นคุณสามารถรับH0= ฉันd (เมทริกซ์เอกลักษณ์) และสำหรับ k = 0 , ... แก้
Hksk= -ก.k,(1)
และตั้งค่า
Hk + 1=Hk+(Yk-Hksk)T(sk)T(sk)Tsk
กับ
Yk ดังกล่าวข้างต้นและ
xk + 1=xk+sk. (นี่เรียกว่าการ
ปรับปรุง Broydenและไม่ค่อยได้ใช้ในทางปฏิบัติการปรับปรุงที่ดีกว่า แต่ซับซ้อนกว่าเล็กน้อยคือการ
อัพเดท BFGSซึ่ง - และข้อมูลเพิ่มเติม - ฉันอ้างถึงการ
เพิ่มประสิทธิภาพเชิงตัวเลขของหนังสือของ Nocedal และ Wright ) ข้อเสียคือ ) สิ่งนี้จะต้องมีการแก้ไขระบบเชิงเส้นในแต่ละขั้นตอน (แต่มีเพียงขนาดที่ไม่รู้จักซึ่งในกรณีของคุณเป็นเงื่อนไขเริ่มต้นดังนั้นความพยายามควรถูกครอบงำโดยการแก้ PDE เพื่อให้ได้ระดับความชัน; การประมาณค่าของ
inverse Hessian ซึ่งต้องการเพียงการคำนวณผลิตภัณฑ์ matrix-vector เดียว) และ b) คุณยังต้องการการค้นหาบรรทัดเพื่อรับประกันการบรรจบกัน ...
โชคดีที่ในบริบทนี้มีวิธีการทางเลือกที่ใช้ประโยชน์จากการประเมินทุกฟังก์ชั่น ความคิดคือสำหรับHk สมมาตรและแน่นอนแน่นอน (ซึ่งรับประกันสำหรับการอัพเดต BFGS) การแก้ไข (1) เทียบเท่ากับการลดขนาดกำลังสองของโมเดล
Qk( s ) =12sTHks +sTก.k.
ใน
วิธีการภูมิภาคที่เชื่อถือได้คุณจะทำได้โดยมีข้อ จำกัด เพิ่มเติมที่
∥ s ∥ ≤Δkที่ไหน
Δk เป็นรัศมีภูมิภาคที่เชื่อถือได้ที่เลือกอย่างเหมาะสม (ซึ่งเล่นบทบาทของความยาวขั้นตอน
σk) แนวคิดหลักในขณะนี้คือการเลือกรัศมีนี้แบบปรับตามขั้นตอนที่คำนวณ โดยเฉพาะอย่างยิ่งคุณดูอัตราส่วน
ρk: =ฉ(xk) - f(xk+sk)ฉ(xk) -Qk(sk)
ของการลดลงตามจริงและที่คาดการณ์ไว้ในค่าฟังก์ชัน ถ้า
ρk มีขนาดเล็กมากแบบจำลองของคุณไม่ดีและคุณละทิ้ง
sk และลองอีกครั้งด้วย
Δk + 1<Δk. ถ้า
ρk อยู่ใกล้กับ
1แบบของคุณดีและคุณตั้งค่า
xk + 1=xk+sk และเพิ่มขึ้น
Δk + 1>Δk. มิฉะนั้นคุณเพิ่งตั้ง
xk + 1=xk+sk และออกจาก
Δkคนเดียว เพื่อคำนวณ minimizer จริง
sk ของ
นาที∥ s ∥ ≤ΔkQk( s )มีกลยุทธ์หลายอย่างที่จะหลีกเลี่ยงไม่ให้แก้ปัญหาการเพิ่มประสิทธิภาพที่ จำกัด อย่างเต็มที่; ที่ชื่นชอบคือตัดทอนวิธีการกำกับดูแลกิจการของ
Steihaug สำหรับรายละเอียดเพิ่มเติมฉันอ้างอิง Nocedal และ Wright อีกครั้ง