การปรับให้เหมาะสมเมื่อฟังก์ชันต้นทุนช้าเพื่อประเมิน


59

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

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

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

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


5
คุณเคยได้ยินเรื่องการไล่ระดับสีสุ่ม สำหรับเครือข่ายนิวรัลลึกที่ใช้กับชุดฝึกอบรมขนาดใหญ่คุณมีปัญหาที่คล้ายกัน (แต่สามารถ Eval gradient analytically) และโซลูชันมาตรฐานคือการทำให้การไล่ระดับสีแบบไล่ลงบนพื้นฐานของตัวอย่างเดียว (สุ่ม) เทียบกับกลุ่มทั้งหมด (ชุด)
seanv507

3
ฉันคุ้นเคยกับพื้นที่อย่างคลุมเครือเท่านั้นดังนั้นนี่จึงเป็นความคิดเห็นมากกว่าคำตอบ แต่สิ่งที่คุณจะคุยเสียงมากเช่นเรื่องของความไม่แน่นอนของปริมาณที่มักจะต้องเผชิญโดยวิศวกรที่การประเมินผลเดียวของฟังก์ชั่นเป้าหมายทำใช้เวลาหลายสัปดาห์ในการประเมิน (อย่างน้อยในปัญหาที่ต้องเผชิญกับเพื่อนร่วมงานวิศวกรรมของฉัน) ความเข้าใจที่ จำกัด มากของฉันเกี่ยวกับวิธีการจัดการนี้คือการประมาณตัวแทนที่ง่ายกว่าในการประเมินตามการประเมินที่ผ่านมาและแบบจำลองทางวิศวกรรมที่ง่ายขึ้นแล้วใช้แบบจำลองตัวแทนเหล่านี้เพื่อเลือกการประเมินต่อไป ...
Cliff AB

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

1
@ seanv507 ใช่ขอบคุณ แต่ฉันหลีกเลี่ยงด้วยเหตุผลที่คล้ายกัน ใช้เวลาประมาณ 30 วินาทีถึงหนึ่งนาทีในการรันหนึ่งตัวอย่าง หากฉันมี 15 พารามิเตอร์ฉันกำลังดูการคำนวณการไล่ระดับสีเกือบ 8 นาทีต่อครั้งแม้ว่าฉันจะใช้เพียงตัวอย่างเดียวเท่านั้น หากพื้นที่มีขนาดใหญ่อาจใช้เวลานานมาก โปรดแก้ไขฉันถ้าคุณมีความคิดอื่น ๆ ในใจ
Jared Becksfort

5
"สิ่งที่ดูเหมือนว่าฉันจะเป็นสถานการณ์ที่ผิดปกติการประเมินฟังก์ชั่นค่าใช้จ่ายของฉันแต่ละครั้งมีราคาแพง" นี่ไม่ใช่สถานการณ์ที่ผิดปกติโดยทั่วไป มันแสดงให้เห็นทุกที่เช่นเมื่อฟังก์ชั่นต้นทุนของคุณมาจากการจำลองสถานการณ์ (เช่นในเอกสารนี้: white.ucc.asn.au/publications/White2015PsoTransistorSizing.pdfเราจำลองวงจรใน SPICE ที่ใช้เวลา 10 วินาที) ในทางวิทยาศาสตร์การทดลองการประเมินอาจใช้เวลานานขึ้น หนึ่งในโปรเจคของเพื่อนฉันคือการปรับพารามิเตอร์ให้เหมาะสม 5 ค่าเพื่อหาวิธีที่ดีที่สุดในการแทรก DNA การประเมินแต่ละครั้งจะใช้เวลา 24 ชั่วโมง
Lyndon White

คำตอบ:


59

TL; DR

ฉันแนะนำให้ใช้ LIPO มันถูกต้องและสามารถพิสูจน์ได้ดีกว่าการค้นหาแบบสุ่มบริสุทธิ์ (PRS) นอกจากนี้ยังเป็นเรื่องง่ายมากที่จะใช้และไม่มีพารามิเตอร์ ฉันไม่ได้ทำการวิเคราะห์ที่เปรียบเทียบ LIPO กับ BO แต่ความคาดหวังของฉันคือความเรียบง่ายและมีประสิทธิภาพของ LIPO แสดงให้เห็นว่ามันจะทำผลงานได้ดีกว่า BO

(ดูเพิ่มเติมที่: ข้อเสียของการเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์เบย์คืออะไร )

การปรับให้เหมาะสมแบบเบส์

วิธีการเพิ่มประสิทธิภาพแบบเบย์สร้างแบบจำลองตัวแทนแบบเกาส์กระบวนการเพื่อสำรวจพื้นที่พารามิเตอร์ แนวคิดหลักคือพารามิเตอร์ tuples ที่อยู่ใกล้กันจะมีค่าฟังก์ชั่นที่คล้ายกันดังนั้นสมมติฐานของโครงสร้างความแปรปรวนร่วมระหว่างจุดทำให้อัลกอริทึมทำการคาดเดาที่มีการศึกษาเกี่ยวกับสิ่งที่พารามิเตอร์ tuple ที่ดีที่สุด กลยุทธ์นี้ช่วยลดจำนวนการประเมินฟังก์ชัน ในความเป็นจริงแรงจูงใจของวิธีการ BO คือการทำให้จำนวนการประเมินฟังก์ชั่นต่ำที่สุดเท่าที่จะเป็นไปได้ในขณะที่ "ใช้ควายทั้งหมด" เพื่อคาดเดาที่ดีเกี่ยวกับสิ่งที่จะทดสอบต่อไป มีตัวเลขของการทำบุญที่แตกต่างกัน (การปรับปรุงที่คาดไว้การปรับปรุงที่คาดหวังความน่าจะเป็นของการปรับปรุง ... ) ซึ่งใช้ในการเปรียบเทียบคะแนนเพื่อเข้าชมต่อไป

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

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

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

เอกสารที่อ้างถึงอย่างกว้างขวางในหัวข้อคือJones และคณะ , "ประสิทธิภาพการเพิ่มประสิทธิภาพระดับโลกของฟังก์ชั่นกล่องดำราคาแพง" แต่ความคิดนี้มีหลายรูปแบบ

ค้นหาแบบสุ่ม

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

สมมติว่า quantile ของคุณคือและคุณต้องการความน่าจะเป็นที่ผลลัพธ์ของแบบจำลองนั้นอยู่ในเปอร์เซ็นต์ของ tuples hyperparameter ทั้งหมด ความน่าจะเป็นที่tuples ที่พยายามทั้งหมดไม่ได้อยู่ในหน้าต่างนั้นคือ (เพราะพวกมันถูกสุ่มเลือกจากการแจกแจงแบบเดียวกัน) ดังนั้นความน่าจะเป็นที่ tuple อย่างน้อยหนึ่งตัวอยู่ในภูมิภาคนั้นคือ n เรารวบรวมทุกอย่างเข้าด้วยกันq=0.95p=0.95100×(1q)=5nqn=0.95n10.95n

1qnpnlog(1p)log(q)

ซึ่งอัตราผลตอบแทนในกรณีเฉพาะของเรา59n59

ผลที่ได้นี้คือเหตุผลที่คนส่วนใหญ่แนะนำให้ tuples พยายามสำหรับการค้นหาแบบสุ่ม เป็นที่น่าสังเกตว่านั้นเปรียบได้กับจำนวนการทดลองที่ต้องใช้เพื่อให้ได้ผลลัพธ์ที่ดีด้วยวิธีการที่ใช้กระบวนการแบบเกาส์เซียนเมื่อมีพารามิเตอร์จำนวนปานกลาง ซึ่งแตกต่างจากกระบวนการแบบเกาส์, จำนวนการค้นหา tuples ไม่เปลี่ยนแปลงด้วยจำนวนของพารามิเตอร์ในการค้นหามากกว่า; อันที่จริงแล้วสำหรับพารามิเตอร์จำนวนมากจำนวนมากวิธีการแบบอิงกระบวนการแบบเกาส์เซียนสามารถใช้การวนซ้ำหลายครั้งเพื่อทำให้เกิดความคืบหน้าn = 60n=60n=60

เนื่องจากคุณมีการรับประกันความน่าจะเป็นของผลลัพธ์ที่ดีมันอาจเป็นเครื่องมือโน้มน้าวใจที่โน้มน้าวใจเจ้านายของคุณว่าไม่จำเป็นต้องทำการทดลองเพิ่มเติม

LIPO และตัวแปร

นี่คือการเดินทางมาถึงที่น่าตื่นเต้นซึ่งถ้ามันไม่ได้เป็นใหม่เป็นแน่นอนใหม่ให้ฉัน มันดำเนินการโดยการสลับระหว่างการวางขอบเขตข้อมูลบนฟังก์ชันและการสุ่มตัวอย่างจากขอบเขตที่ดีที่สุดและใช้การประมาณกำลังสอง ฉันยังคงทำงานต่อไปในรายละเอียดทั้งหมด แต่ฉันคิดว่านี่เป็นสิ่งที่ดีมาก นี่เป็นบทความเขียนบล็อกที่ดีและบทความนี้ก็คือCédric Malherbe และ Nicolas Vayatis " การเพิ่มประสิทธิภาพระดับโลกของฟังก์ชั่น Lipschitz "


1
ดูเหมือนว่าจะแตกต่างจากวิธีการตอบสนองพื้นผิวที่ทันสมัย!
kjetil b halvorsen

1
จริงๆแล้วการค้นหาแบบสุ่มสามารถทำงานได้ดีอย่างน่าทึ่ง: argmin.net/2016/06/20/hypertuning
ทิม

1
@Tim ใช่จุดของคุณเป็นอย่างดี ฉันไม่ต้องการที่จะ "ตัดสินใจ" ปัญหาที่ดีกว่าในโพสต์นี้เนื่องจากมีการเรียงสับเปลี่ยนที่ไม่มีที่สิ้นสุดใน BO แต่ละคนอ้างว่าเป็น "กล่องดำที่ดีที่สุด" เครื่องมือเพิ่มประสิทธิภาพ - ทำให้มันเป็นไปไม่ได้แน่นอน ฉันยอมรับว่าการค้นหาแบบสุ่มสามารถทำงานได้ค่อนข้างดี แต่ฉันอยากจะแนะนำ LIPO ผ่านทาง PRS LIPO นั้นถูกต้องและถูกต้องอย่างยิ่งและมีประสิทธิภาพสูง PRS (โดยเฉลี่ย) ในการทดลองทั้งหมดของฉัน LIPO ยังมีค่าใช้จ่ายในการประมาณการน้อยที่สุด: ถ้าคุณสามารถลด QP ให้น้อยลงคุณสามารถใช้ LIPO ได้และ LIPO จะมีศูนย์พารามิเตอร์ (ศูนย์ตรงกันข้ามกับ BO)
Reinstate Monica

ฉันดีใจที่ฉันตรวจสอบคำถามนี้อีกครั้ง LIPO ดูดีมาก
Jared Becksfort

LIPO ดีมาก เมื่อฉันมีเวลาสักครู่ฉันจะขยายคำตอบของฉันเพื่อให้การบัญชี LIPO ดีขึ้น
Reinstate Monica

40

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

ฉันจะบอกว่ามาตรฐานทองคำในปัจจุบันสำหรับการประเมินฟังก์ชั่นกล่องดำที่มีราคาแพง (คือ) การเพิ่มประสิทธิภาพแบบเบย์ (ทั่วโลก) (BO) Sycoraxได้อธิบายคุณสมบัติบางอย่างของ BO ไว้แล้วดังนั้นฉันแค่เพิ่มข้อมูลที่อาจมีประโยชน์

เป็นจุดเริ่มต้นคุณอาจต้องการที่จะอ่านนี้กระดาษภาพรวม 1 นอกจากนี้ยังมีอีกอันหนึ่ง [2]

การเพิ่มประสิทธิภาพแบบเบย์ได้รับการพัฒนาอย่างต่อเนื่องในฐานะสนามในช่วงไม่กี่ปีที่ผ่านมาด้วยชุดของการฝึกอบรมเฉพาะทาง (เช่นBayesOptและดูวิดีโอเหล่านี้จากการประชุมเชิงปฏิบัติการ Sheffield บน BO) เนื่องจากมีการใช้งานจริงในการเรียนรู้ สำหรับการเพิ่มประสิทธิภาพ Hyper-พารามิเตอร์ของอัลกอริทึม ML - ดูเช่นกระดาษนี้ [3] และกล่องเครื่องมือที่เกี่ยวข้องกับพืชชนิดหนึ่ง มีแพ็คเกจอื่น ๆ ในภาษาต่างๆที่ใช้อัลกอริธึมการปรับให้เหมาะสมแบบเบย์หลายประเภท

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

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

สุดท้ายคุณมีความสนใจใน BO สำหรับฟังก์ชั่นเป้าหมายที่มีทั้งค่าใช้จ่ายและมีเสียงดังให้ดูคำตอบของฉันคำถามนี้


อ้างอิง:

1 Brochu et al., "การสอนเกี่ยวกับการเพิ่มประสิทธิภาพฟังก์ชั่นแบบเบย์ที่มีราคาแพงด้วยการประยุกต์ใช้กับแบบจำลองผู้ใช้ที่ใช้งานอยู่และการเรียนรู้การเสริมแรงแบบลำดับชั้น" (2010)

[2] Shahriari et al., "นำมนุษย์ออกจากวง: การทบทวนการเพิ่มประสิทธิภาพแบบเบย์" (2015)

[3] Snoek et al., "การเพิ่มประสิทธิภาพเบย์เซียนเชิงปฏิบัติของอัลกอริทึมการเรียนรู้ของเครื่อง", NIPS (2012)

[4] Rios และ Sahinidis, "การเพิ่มประสิทธิภาพที่ปราศจากอนุพันธ์: การทบทวนขั้นตอนวิธีและการเปรียบเทียบการใช้งานซอฟต์แวร์", วารสารการเพิ่มประสิทธิภาพระดับโลก (2013)


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

เอกสารการเพิ่มประสิทธิภาพแบบเบย์มีประโยชน์มาก ขอบคุณสำหรับการตอบ
Jared Becksfort

1
@ user777: จุดดี เพิ่มรายการอ้างอิงที่ชัดเจนในตอนท้ายซึ่งน่าจะเพียงพอสำหรับการกู้คืนเอกสาร
lacerbi

6

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

ตัวอย่างเช่นลองดูที่บทความนี้ (Björkman, M. & Holmström, K. "การเพิ่มประสิทธิภาพระดับโลกของฟังก์ชั่น Nonconvex ราคาแพงโดยใช้ฟังก์ชัน Radial Basis" การเพิ่มประสิทธิภาพและวิศวกรรม (2000) 1: 373 ดอย: 10.1023 / A: 1011584207202 ซึ่งบทคัดย่อดูเหมือนว่าจะบ่งบอกว่านี่คือสิ่งที่คุณต้องการ:

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


2
โปรดรวมข้อมูลการอ้างอิงแบบเต็มสำหรับเอกสารที่เชื่อมโยงและแหล่งข้อมูลอื่น ๆ เราต้องการสร้างที่เก็บข้อมูลที่ทนทานและลิงค์ต่างๆมักจะไม่ดีเมื่อเวลาผ่านไป
Reinstate Monica

Björkman, M. & Holmström, K. "การเพิ่มประสิทธิภาพระดับโลกของฟังก์ชั่น Nonconvex ราคาแพงโดยใช้ฟังก์ชั่น Radial Basis" การเพิ่มประสิทธิภาพและวิศวกรรม (2000) 1: 373 ดอย: 10.1023 / A: 1011584207202
jkdev

4

คุณไม่ได้อยู่คนเดียว

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

  • Efficient Global Optimization (EGO) [1] อัลกอริทึม EGO ได้รับการกล่าวถึงข้างต้นและอาจเป็นอัลกอริทึมการเพิ่มประสิทธิภาพตัวแทนที่มีชื่อเสียงที่สุด มันขึ้นอยู่กับรุ่น Kriging และเกณฑ์ infill ที่เรียกว่าฟังก์ชั่นการปรับปรุงที่คาดหวัง (EI) แพ็คเกจ R รวมถึงอัลกอริทึม EGO ได้แก่ DiceOptim และ DiceKriging
  • โหมดการเก็บตัวอย่าง (MPS) วิธี [2] อัลกอริทึม MPS สร้างขึ้นบนโมเดล RBF และใช้กลยุทธ์การสุ่มตัวอย่างแบบ adptive เพื่อรับคะแนนผู้สมัคร รหัส MATLAB เป็น publised โดยผู้เขียนที่http://www.sfu.ca/~gwa5/software.html อัลกอริทึม MPS อาจต้องมีการประเมินเพิ่มเติมเพื่อให้ได้ประสิทธิภาพสูงสุด แต่สามารถรับมือกับโพรบที่ซับซ้อนกว่าอัลกอริทึม EGO จากประสบการณ์ส่วนตัวของฉัน
  • ทั้งมวลตัวแทนจำลองโดย Juliane Müller [3] เธอใช้ตัวแทนเสมือนหลายคนเพื่อเพิ่มความสามารถในการค้นหา MATLAB กล่องเครื่องมือ Matsumoto เป็น avaiable ที่https://github.com/Piiloblondie/MATSuMoTo

ในช่วงฤดูร้อนอัลกอริธึมการเพิ่มประสิทธิภาพที่ใช้ตัวแทนเสมือนพยายามค้นหาปัญหาที่เหมาะสมที่สุดทั่วโลกโดยใช้การประเมินน้อยที่สุดเท่าที่จะทำได้ นี่คือความสำเร็จโดยการใช้ประโยชน์จากข้อมูลที่ตัวแทน (ตัวแทน) ให้ ความคิดเห็นเกี่ยวกับการเพิ่มประสิทธิภาพของปัญหาราคาแพงอยู่ใน [4-6]


อ้างอิง:

  1. DR Jones, M. Schonlau และ WJ Welch "การเพิ่มประสิทธิภาพระดับโลกอย่างมีประสิทธิภาพของฟังก์ชั่นกล่องดำราคาแพง" วารสารการเพิ่มประสิทธิภาพระดับโลกฉบับที่ 5 13, pp. 455-492, 1998
  2. L. Wang, S. Shan, และ GG Wang "วิธีการสุ่มตัวอย่างตามโหมดสำหรับการเพิ่มประสิทธิภาพระดับโลกสำหรับฟังก์ชั่นกล่องดำราคาแพง" 36, pp. 419-438, 2004
  3. J. Müller "อัลกอริธึมแบบจำลองตัวแทนสำหรับปัญหาการเพิ่มประสิทธิภาพกล่องดำทั่วโลกที่คำนวณค่าใช้จ่ายแพง" มหาวิทยาลัยเทคโนโลยีตัมเปเร, 2012
  4. GG Wang และ S. Shan, "การทบทวนเทคนิคการเปลี่ยนแปลงในการสนับสนุนการเพิ่มประสิทธิภาพการออกแบบวิศวกรรม" วารสารการออกแบบเครื่องจักรกล, ฉบับที่ 5 129, pp. 370-380, 2007
  5. AI Forrester และ AJ Keane "ความก้าวหน้าล่าสุดในการเพิ่มประสิทธิภาพโดยใช้ตัวแทน" ความคืบหน้าของวิทยาศาสตร์การบินและอวกาศฉบับที่ 5 45, pp. 50-79, 2009
  6. FAC Viana, TW Simpson, V. Balabanov และ V. Toropov, "การเปลี่ยนแปลงในการเพิ่มประสิทธิภาพการออกแบบสหวิทยาการ: เรามาไกลแค่ไหนจริง ๆ ?" วารสาร AIAA, ฉบับที่ 52, pp. 670-690, 2014/04/01 2014

3

กลยุทธ์ง่ายๆสองข้อที่ฉันเคยประสบความสำเร็จในการใช้ในอดีตคือ:

  1. ถ้าเป็นไปได้ลองหาฟังก์ชั่นตัวแทนเสมือนที่ใกล้เคียงกับการประเมินฟังก์ชั่นค่าใช้จ่ายทั้งหมดของคุณ ปรับฟังก์ชั่นที่ง่ายขึ้นนี้ให้เหมาะสม จากนั้นตรวจสอบและปรับแก้ปัญหาผลลัพธ์ด้วยฟังก์ชันต้นทุนที่แน่นอนของคุณ
  2. ถ้าเป็นไปได้พยายามที่จะหาวิธีที่จะประเมินผลการศึกษาอีกด้วยแน่นอน "เดลต้าต้นทุน" ฟังก์ชั่น - แน่นอนเมื่อเทียบกับการเป็นประมาณจากการใช้การไล่ระดับสี นั่นคือจากจุดเริ่มต้น 15 มิติที่คุณประเมินราคาแบบเต็มแล้วหาวิธีที่จะได้มาซึ่งวิธีการที่ต้นทุนจะเปลี่ยนแปลงโดยทำการเปลี่ยนแปลงเพียงเล็กน้อยกับองค์ประกอบหนึ่ง (หรือหลาย) จาก 15 จุดในปัจจุบันของคุณ คุณจะต้องใช้ประโยชน์จากคุณสมบัติการโลคัลไลเซชั่นของการก่อกวนเล็กน้อยในกรณีของคุณโดยเฉพาะและคุณอาจต้องกำหนดแคชและอัปเดตตัวแปรสถานะภายในไปพร้อมกัน

กลยุทธ์เหล่านั้นมีความเฉพาะเจาะจงมากฉันไม่ทราบว่าสามารถนำไปใช้ในกรณีของคุณได้หรือไม่ขออภัยหากไม่ใช่ ทั้งสองอย่างสามารถใช้งานได้ (เหมือนในกรณีการใช้งานของฉัน): ใช้กลยุทธ์ "ต้นทุนเดลต้า" กับโมเดลการวิเคราะห์ที่ง่ายกว่า - ประสิทธิภาพอาจเพิ่มขึ้นตามลำดับความสำคัญหลายประการ

กลยุทธ์หนึ่งที่จะใช้วิธีการลำดับที่สองที่มักจะมีแนวโน้มที่จะลดจำนวนของการทำซ้ำ ( แต่แต่ละซ้ำมีความซับซ้อนมากขึ้น) - เช่นอัลกอริทึม Levenberg-Marquardt แต่การพิจารณาว่าคุณไม่มีวิธีประเมินความลาดชันโดยตรงและมีประสิทธิภาพนี่อาจไม่ใช่ตัวเลือกที่ใช้การได้ในกรณีนี้


3

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

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


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

ฉันไม่ได้บอกว่าแบบจำลองที่ใช้นั้นดีกว่า ฉันแค่บอกว่าคนมีความกังวลเกี่ยวกับคุณภาพของแบบจำลองและบางครั้งลืมเกี่ยวกับการขนานซึ่งอาจเป็นเรื่องใหญ่เมื่อมีแกนจำนวนมากที่เกี่ยวข้อง ..
Paul

โปรดรวมข้อมูลการอ้างอิงแบบเต็มสำหรับเอกสารที่เชื่อมโยงและแหล่งข้อมูลอื่น ๆ เราต้องการสร้างที่เก็บข้อมูลที่ทนทานและลิงค์ต่างๆมักจะไม่ดีเมื่อเวลาผ่านไป
Reinstate Monica

2
ฉันไม่แน่ใจว่าคำศัพท์แตกต่างกันไปตามชุมชน แต่ฉันมักจะใช้คำตอบที่นี่เป็นคำพ้องสำหรับ "แบบจำลองพหุนามพหุนาม" (โดยทั่วไปคือกำลังสอง) ดังนั้นฉันมักจะคิดว่าการสร้างแบบจำลองตัวแทนเป็นแบบจำลองการสร้างแบบจำลองพื้นผิวตอบสนอง (สิ่งนี้อาจไม่ถูกต้อง)
GeoMatt22

0

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

คำตอบของฉันในบทความทั้งสองนี้อภิปรายว่าทำไมโคตรลาดแบบลาดชันทำงานอย่างไรสัญชาตญาณด้านหลังคือประมาณการไล่ระดับสีโดยใช้ชุดย่อยของข้อมูล

โคตรการไล่ระดับสีแบบสุ่มสามารถประหยัดเวลาได้อย่างไรเมื่อเปรียบเทียบกับการไล่ระดับสีแบบมาตรฐาน

วิธีการรันการถดถอยเชิงเส้นในแบบคู่ขนาน / กระจายสำหรับการตั้งค่าข้อมูลขนาดใหญ่?

เคล็ดลับเดียวกันนี้ใช้กับฟังก์ชันวัตถุประสงค์

Let 's ยังคงใช้การถดถอยเชิงเส้นเป็นตัวอย่าง: สมมติว่าเป้าหมายการทำงานเป็น 2 หากมีขนาดใหญ่ให้บอกล้านล้านแถวการประเมินครั้งเดียวจะใช้เวลานานมาก เราสามารถใช้ชุดย่อยของและเพื่อประมาณฟังก์ชันวัตถุประสงค์ซึ่งเป็นการสูญเสียกำลังสองของชุดย่อยของข้อมูลAxb2AAb

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