Bayesian अनुकूलन के लिए GP प्रतिगमन में बीमार-वातानुकूलित सहसंयोजक मैट्रिक्स


12

पृष्ठभूमि और समस्या

मैं प्रतिगमन और बाद में बायेसियन अनुकूलन (बीओ) के लिए गॉसियन प्रोसेस (जीपी) का उपयोग कर रहा हूं। प्रतिगमन के लिए मैं कई कस्टम-निर्मित संशोधनों के साथ MATLAB के लिए gpml पैकेज का उपयोग करता हूं , लेकिन समस्या सामान्य है।

यह एक सर्वविदित तथ्य है कि जब दो प्रशिक्षण इनपुट इनपुट स्पेस में बहुत करीब होते हैं, तो सहसंयोजक मैट्रिक्स पॉजिटिव निश्चित नहीं हो सकता है (इस साइट पर इसके बारे में कई सवाल हैं)। परिणामस्वरूप, जीपी की विभिन्न संगणनाओं के लिए आवश्यक सहसंयोजक मैट्रिक्स का कोलेस्की अपघटन संख्यात्मक त्रुटि के कारण विफल हो सकता है। यह मेरे साथ कई मामलों में हुआ था जब मैं उपयोग किए जा रहे उद्देश्य कार्यों के साथ बीओ प्रदर्शन कर रहा था, और मैं इसे ठीक करना चाहूंगा।

प्रस्तावित हल

AFAIK, बीमार कंडीशनिंग को कम करने के लिए मानक समाधान कोविरियस मैट्रिक्स के विकर्ण के लिए एक रिज या नग को जोड़ना है। जीपी रिग्रेशन के लिए, यह मात्रा (या बढ़ रही है, अगर पहले से मौजूद है) अवलोकन शोर।

अब तक सब ठीक है। मैंने gpml के सटीक निष्कासन के लिए कोड को संशोधित किया ताकि जब भी चोल्स्की अपघटन विफल हो जाए, मैं फ्रोबेनियस मानदंड में निकटतम सममित सकारात्मक निश्चित (SPD) मैट्रिक्स के लिए सहसंयोजक मैट्रिक्स को ठीक करने का प्रयास करता हूं, जो जॉन डी-एरिको द्वारा इस MATLAB कोड से प्रेरित है । तर्क मूल मैट्रिक्स पर हस्तक्षेप को कम करने के लिए है।

यह वर्कअराउंड काम करता है, लेकिन मैंने देखा कि बीओ का प्रदर्शन कुछ कार्यों के लिए काफी हद तक कम हो गया है - संभवतः जब भी एल्गोरिदम को कुछ क्षेत्र में ज़ूम-इन करने की आवश्यकता होगी (जैसे, क्योंकि यह न्यूनतम के करीब हो रहा है, या क्योंकि लंबाई तराजू है समस्या गैर-समान रूप से छोटी हो जाती है)। जब भी मैं दो इनपुट अंक बहुत करीब आ जाता हूं, तब से यह व्यवहार समझ में आता है, लेकिन निश्चित रूप से यह आदर्श नहीं है। वैकल्पिक रूप से, मैं सिर्फ समस्याग्रस्त बिंदुओं को हटा सकता था, लेकिन फिर से, कभी-कभी मुझे पास होने के लिए इनपुट बिंदुओं की आवश्यकता होती है।

सवाल

मुझे नहीं लगता कि जीपी के सहसंयोजक मैट्रिस के चोल्स्की कारक के साथ संख्यात्मक मुद्दे एक उपन्यास समस्या है, लेकिन मेरे आश्चर्य के लिए मुझे अब तक कई समाधान नहीं मिल पाए हैं, एक तरफ शोर बढ़ाने या बिंदुओं को हटाने जो एक-दूसरे के बहुत करीब हैं। दूसरी ओर, यह सच है कि मेरे कुछ कार्य बहुत खराब व्यवहार वाले हैं, इसलिए शायद मेरी स्थिति इतनी विशिष्ट नहीं है।

कोई सुझाव / संदर्भ जो यहाँ उपयोगी हो सकता है?


आप कोविर्सियस मैट्रिक्स की प्रविष्टियाँ बनाने के साथ-साथ उच्च सटीकता में, उदाहरण के लिए, क्वाड प्रिसिजन या इससे भी उच्च परिशुद्धता में, अपने चोल्स्की फैक्टराइज़ेशन की गणना या अद्यतन कर सकते हैं। परेशानी के अलावा, गणना परिमाण धीमे के आदेश हो सकते हैं। MATLAB के लिए मनमाने ढंग से सटीक ऐड-ऑन हैं। मैं यह नहीं कह रहा हूं कि यह आदर्श है, लेकिन यह एक विकल्प हो सकता है। मुझे नहीं पता कि वे gpml के साथ कितना अच्छा खेलते हैं, लेकिन अगर आप gpml स्रोत कोड (m फाइल) को बदल सकते हैं, तो शायद आप ऐसा कर सकते हैं।
मार्क एल। स्टोन

क्या आपने सहसंयोजक मैट्रिक्स के विकर्ण में एक छोटा सा घबराना जोड़ने की कोशिश की?
झेन

@ MarkL.Stone सुझाव के लिए धन्यवाद। दुर्भाग्य से मुझे प्रशिक्षण कोड को तेज़ करने की आवश्यकता है, इसलिए उच्च-सटीक संख्यात्मकता शायद मेरे आवेदन के लिए एक अच्छा विकल्प नहीं है।
लकेरबी

2
यह सवाल वाकई दिलचस्प है। जब इस तरह के रूप में अपने covaraince मैट्रिक्स को डला प्रभाव जोड़ने आप अपनी संभावना में सिग्मा का अनुकूलन, या करना σ दिया। मैंने देखा है कि सोने की डली प्रभाव को अनुकूलित करने से माप शोर को पकड़ लेता है और वह गॉसियन प्रक्रिया में मदद करता हैσ2Iσ
Wis

1
मैं आमतौर पर अनुकूलन करता हूं। कुछ मामलों में मैंने इस पर हाशिए पर जाने की कोशिश की, लेकिन सुधार के लिए बहुत कुछ नहीं मिला। (मुझे लगता है कि पोस्टीरियर बहुत संकीर्ण था)।
लैकेबी

जवाबों:


7

एक अन्य विकल्प अनिवार्य रूप से उत्पन्न होने वाले बिंदुओं को औसत करने के लिए है - उदाहरण के लिए यदि आपके पास 1000 अंक और 50 कारण मुद्दे हैं, तो आप पहले 950 eigenvalues ​​/ vectors का उपयोग करके इष्टतम कम रैंक सन्निकटन ले सकते हैं। हालाँकि, यह उन डाटापॉइंट्स को एक साथ बंद करने से दूर नहीं है, जो आपने कहा था कि आप ऐसा नहीं करेंगे। कृपया ध्यान रखें कि जब आप घबराना जोड़ते हैं तो आप स्वतंत्रता की डिग्री को कम करते हैं - यानी प्रत्येक बिंदु आपकी भविष्यवाणी को कम प्रभावित करता है, इसलिए यह कम अंकों का उपयोग करने से भी बदतर हो सकता है।

एक अन्य विकल्प (जो मुझे व्यक्तिगत रूप से साफ-सुथरा लगता है) है, दो बिंदुओं को एक छोटे से तरीके से संयोजित करना। आप उदाहरण के लिए 2 अंक ले सकते हैं और उन्हें एक में जोड़ सकते हैं, लेकिन उन्हें ढाल के लिए भी एक अनुमान लगाने के लिए उपयोग कर सकते हैं। ढाल जानकारी शामिल करने के लिए आप सभी अपने गिरी से की जरूरत को मिल रहा है और एक्स डी एक्स ' कश्मीर ( एक्स , एक्स ' ) । आम तौर पर डेरिवेटिव्स का उनके अवलोकन के साथ कोई संबंध नहीं होता है ताकि आप कंडीशनिंग मुद्दों पर न चलें और स्थानीय जानकारी को बनाए रखें।dxk(x,x)dxdxk(x,x)

संपादित करें:

टिप्पणियों के आधार पर मुझे लगा कि मैं व्युत्पन्न टिप्पणियों को शामिल करके जो कुछ भी था, उसका विस्तार से वर्णन करूंगा। यदि हम एक गाऊसी कर्नेल का उपयोग करते हैं (उदाहरण के लिए),

kx,x=k(x,x)=σexp((xx)2l2)

इसके व्युत्पन्न हैं,

kdx,x=dk(x,x)dx=2(xx)l2σexp((xx)2l2)

एक्स,एक्स'=2(एक्स,एक्स')एक्सएक्स'=2एल2-2(एक्स-एक्स')एल4σexp(-(एक्स-एक्स')2एल2)

{एक्समैं,yमैं;मैं=1,,n}एक्स11

Y=[1,y1,...,yn]

=(एक्स0,एक्स0एक्स0,एक्स0...एक्स0,एक्सnएक्स0,एक्स0एक्स0,एक्स0...एक्स0,एक्सnएक्स0,एक्सnएक्स0,एक्सn...एक्सn,एक्सn)

बाकी जीपी हमेशा की तरह ही है।


क्या आप अनुमानित ढाल जानकारी के अपने प्रस्तावित उपयोग के विवरण का विस्तार करना चाहेंगे?
मार्क एल स्टोन

@ जे थैंक्स - मैंने सोचा था कि लो-रैंक सन्निकटन करूं, मैं इसे एक कोशिश दे सकता हूं (इसे अब तक टाल दिया क्योंकि मुझे कोड के बड़े हिस्से को फिर से लिखना पड़ सकता है)। दो बिंदुओं को एक में संयोजित करने के बारे में, मैंने इसे पिछले प्रश्न में प्रस्तावित किया था , लेकिन मैंने व्युत्पन्न जानकारी प्राप्त करने के बारे में नहीं सोचा था। सिद्धांत रूप में यह साफ-सुथरा लगता है, लेकिन मुझे यकीन नहीं है कि मैं इसका उपयोग कैसे करूंगा क्योंकि मेरे पास केवल इनपुट आयाम प्रति एक जीपी जोड़ने के बोझ के साथ कुछ व्युत्पन्न अवलोकन (विलय किए गए बिंदुओं के अनुरूप) होंगे।
लैकरबी lac

@ अतिरिक्त स्पष्टीकरण के लिए धन्यवाद। यह वास्तव में बहुत साफ दिखता है। क्या आपके पास इस दृष्टिकोण (या कुछ इसी तरह का पर्याप्त) के लिए संदर्भ हैं?
लकेरबी

2
माइक ओसबोर्न की थीसिस पेज 67 ( robots.ox.ac.uk/~mosb/public/pdf/136/full_thesis.pdf ) देखें - वह व्युत्पन्न और अभिन्न टिप्पणियों का परिचय देता है। आशा है कि यह मदद करता है :)
j__

4

एक समाधान जिसे हमने कार्यालय में चारों ओर घुमाया है, वह है केवल परेशानी वाले बिंदुओं को बदलना। यह सीधे-अप हटाने या कुछ और अधिक परिष्कृत रूप ले सकता है। अनिवार्य रूप से, अवलोकन यह है कि करीबी बिंदु अत्यधिक बेमानी हैं: वास्तव में, इतने निरर्थक कि वे कोवरियन मैट्रिक्स की रैंक को कम करते हैं। एक ही टोकन के द्वारा, एक बिंदु वैसे भी हाथ में समस्या के लिए थोड़ी सी जानकारी का योगदान दे रहा है, इसलिए एक या दूसरे को हटा दें (या कुछ और करें, जैसे कि उन्हें औसत या "उछलकर" एक बिंदु को दूसरे से कुछ न्यूनतम स्वीकार्य दूरी तक ले जाएगा) वास्तव में अपने समाधान को इतना सब न बदलें।

मुझे यकीन नहीं है कि कैसे दो बिंदुओं पर न्याय करने के लिए "बहुत करीब" हो जाते हैं। शायद यह उपयोगकर्ता के लिए एक ट्यूनिंग विकल्प हो सकता है।

(उफ़! मैंने इसे पोस्ट करने के बाद, मैंने आपका प्रश्न यहां पाया, जो इस उत्तर को और अधिक विस्तृत समाधान के लिए आगे बढ़ाता है। मुझे आशा है कि मेरे उत्तर से इसे जोड़कर, मैं एसईओ के साथ मदद करूंगा ...)


यह काफी मददगार है, क्या आप अगर संभव हो तो इस पर कुछ प्रकाश डाल सकते हैं ।
जनरल-लेवर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.