เพิ่มประสิทธิภาพฟังก์ชั่นที่ไม่รู้จักซึ่งสามารถประเมินได้เท่านั้น?


11

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

ปัญหาในการค้นหาตัวย่อของคืออะไร? มีวิธีการอะไรบ้าง?f

ปัญหาในการค้นหาวิธีแก้ปัญหาสำหรับสมการคืออะไร? มีวิธีการอะไรบ้าง?f(x)=0

ในสองปัญหาข้างต้นเป็นความคิดที่ดีที่จะทำการสอดแทรกหรือเหมาะสมกับการประเมินของ f:โดยใช้ฟังก์ชั่นมีรูปแบบและพารามิเตอร์ที่รู้จักจะถูกกำหนดแล้วลดหรือหารากของมัน?กรัมθ θ กรัมθ(xi,f(xi)),i=1,,ngθθgθ

ขอบคุณและขอแสดงความนับถือ!


1
คุณสามารถประเมินการไล่ระดับสีที่จุดที่กำหนดได้หรือไม่?
chaohuang

@chaohuang: มีสองกรณี: คุณอาจจะหรืออาจไม่ประเมินการไล่ระดับสีของมันขึ้นอยู่กับสมมติฐาน
ทิม

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

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

2
คุณรู้หรือไม่ว่าฟังก์ชั่นนั้นราบรื่น (แม้ว่าคุณจะไม่สามารถประเมินการไล่ระดับสีได้)? คุณรู้หรือไม่ว่าฟังก์ชั่นนูนออกมา? หากไม่นูนคุณรู้หรือไม่ว่าอย่างน้อยก็ต่อเนื่อง Lipschitz? หากฟังก์ชั่นนั้นสมบูรณ์แบบโดยทั่วไปนี่เป็นปัญหาที่สิ้นหวัง
Brian Borchers

คำตอบ:


13

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

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

1
ฉันสามารถเพิ่ม "ตัวแทนจำลอง" ลงในรายการนั้นได้หรือไม่? มีประโยชน์อย่างมากสำหรับการปรับให้เหมาะสมกับกล่องดำโดยเฉพาะอย่างยิ่งหากฟังก์ชั่นมีค่าใช้จ่ายสูงในการประเมิน
OscarB

ใช่คุณสามารถ :-) นอกจากนี้ได้อย่างยอดเยี่ยม
Wolfgang Bangerth

เราสามารถใช้วิธี Nelder-Mead ได้หากทราบการประมาณค่าที่เหมาะสมของ optima
JM

ใช่คุณสามารถใช้ Nelder-Mead ได้ แต่มันเป็นอัลกอริธึมที่แย่มากเมื่อเทียบกับส่วนอื่น ๆ
Wolfgang Bangerth

1
@WolfgangBangerth: ความคิดเห็นของคุณใน Nelder-Mead นั้นมีผลเฉพาะในมิติ d> 2 ในสองมิติมันเป็นเกี่ยวกับปัญหามากมายที่ยอดเยี่ยมและมากยากที่จะชนะวิธี
Arnold Neumaier

2

ฉันคิดว่าคุณควรเริ่มต้นด้วย: GECCO Workshop เกี่ยวกับการเปรียบเทียบการเพิ่มประสิทธิภาพพารามิเตอร์แบบ Real-Parameter (BBOB 2016) http://numbbo.github.io/workshops/index.html

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

จนกระทั่งเมื่อไม่นานมานี้มันเป็นเรื่องตรงไปตรงมาเป็นสถานการณ์ที่น่าอับอายและมีอำนาจทั้งหมดเพื่อ INRIA, GECCO และอื่น ๆ อีกมากมายสำหรับความพยายามที่พวกเขาได้ทำในการกำหนดกรอบการเปรียบเทียบเหตุผล


-1

ฉันต้องการเพียงแค่เพิ่มว่าหนึ่งในกุญแจนี่คือความสามารถในวิธีการเพิ่มประสิทธิภาพขนาดในแบบมัลติคอร์ซีพียู หากคุณสามารถทำการประเมินฟังก์ชั่นหลาย ๆ ตัวพร้อมกันมันจะทำให้คุณมีความเร็วเพิ่มขึ้นเท่ากับจำนวนแกนที่เกี่ยวข้อง เปรียบเทียบสิ่งนี้กับการใช้รูปแบบการตอบสนองที่แม่นยำกว่าเดิมเล็กน้อยซึ่งทำให้คุณมีประสิทธิภาพมากขึ้น 10%

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


1
คำตอบนี้สั้นเกินไปที่จะมีประโยชน์ (และยังคงมีประโยชน์เนื่องจากลิงก์อาจหายไปในทุกจุด) นอกจากนี้โปรดระบุว่าคุณเป็นผู้เขียนซอฟต์แวร์นี้
Christian Clason
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.