ความเป็นมาและปัญหา
ฉันใช้กระบวนการแบบเกาส์ (GP) สำหรับการถดถอยและการปรับให้เหมาะสมแบบเบย์ (BO) ในภายหลัง สำหรับการถดถอยฉันใช้แพ็คเกจgpmlสำหรับ MATLAB ที่มีการแก้ไขที่กำหนดเองหลายอย่าง แต่ปัญหาเป็นเรื่องทั่วไป
มันเป็นความจริงที่รู้จักกันดีว่าเมื่ออินพุตการฝึกอบรมสองอันอยู่ใกล้กับพื้นที่อินพุตมากเกินไปเมทริกซ์ความแปรปรวนร่วมอาจไม่แน่นอนแน่นอน (มีคำถามหลายข้อเกี่ยวกับมันในเว็บไซต์นี้) เป็นผลให้การสลายตัว Cholesky ของเมทริกซ์ความแปรปรวนร่วมที่จำเป็นสำหรับการคำนวณ GP ต่างๆอาจล้มเหลวเนื่องจากข้อผิดพลาดเชิงตัวเลข เรื่องนี้เกิดขึ้นกับฉันในหลายกรณีเมื่อดำเนินการ BO พร้อมกับฟังก์ชั่นวัตถุประสงค์ที่ฉันใช้และฉันต้องการแก้ไข
โซลูชันที่เสนอ
AFAIK โซลูชันมาตรฐานเพื่อบรรเทาอาการป่วยไข้คือการเพิ่มสันเขาหรือนักเก็ตในแนวทแยงของเมทริกซ์ความแปรปรวนร่วม สำหรับการถดถอย GP จำนวนเสียงนี้จะเพิ่ม (หรือเพิ่มขึ้นหากมีอยู่) เสียงการสังเกต
จนถึงตอนนี้ดีมาก ฉันปรับเปลี่ยนรหัสสำหรับการอนุมานที่แน่นอนของgpmlดังนั้นเมื่อใดก็ตามที่การสลายตัวของ Cholesky ล้มเหลวฉันพยายามที่จะแก้ไขเมทริกซ์ความแปรปรวนร่วมกับเมทริกซ์สมการเชิงบวกสมมาตร (SPD) ที่ใกล้เคียงที่สุดในบรรทัดฐาน Frobenius แรงบันดาลใจจากรหัส MATLABโดย John d'Errico เหตุผลคือเพื่อลดการแทรกแซงในเมทริกซ์เดิม
วิธีแก้ปัญหานี้ทำงานได้ แต่ฉันสังเกตเห็นว่าประสิทธิภาพของ BO ลดลงอย่างมากสำหรับบางฟังก์ชั่น - อาจเป็นได้ทุกครั้งที่อัลกอริทึมจำเป็นต้องซูมเข้าในบางพื้นที่ (เช่นเนื่องจากใกล้เข้าใกล้ระดับต่ำสุด ปัญหามีขนาดเล็กไม่สม่ำเสมอ) พฤติกรรมนี้เหมาะสมเมื่อฉันเพิ่มสัญญาณรบกวนอย่างมีประสิทธิภาพเมื่อใดก็ตามที่จุดอินพุตสองจุดเข้าใกล้เกินไป แต่แน่นอนว่ามันไม่เหมาะ อีกทางหนึ่งฉันสามารถลบจุดที่เป็นปัญหาได้ แต่อีกครั้งบางครั้งฉันต้องการจุดเข้าให้ปิด
คำถาม
ฉันไม่คิดว่าปัญหาเชิงตัวเลขของ Cholesky ในการแปลงเมทริกซ์ความแปรปรวนร่วมของ GP เป็นปัญหาที่แปลกใหม่ แต่ที่แปลกใจของฉันฉันไม่พบวิธีแก้ไขปัญหามากมายนอกเหนือจากการเพิ่มจุดรบกวนหรือลบจุดที่อยู่ใกล้กันเกินไป ในทางตรงกันข้ามมันเป็นความจริงที่ว่าฟังก์ชั่นบางอย่างของฉันนั้นค่อนข้างประพฤติตัวไม่ดีดังนั้นบางทีสถานการณ์ของฉันก็ไม่ได้เป็นแบบนั้น
ข้อเสนอแนะ / การอ้างอิงใด ๆ ที่อาจมีประโยชน์ที่นี่?