मैं एक सामान्य टिप्पणी के साथ शुरू करूंगा: प्रथम-क्रम की जानकारी (अर्थात, केवल ग्रेडिएंट, जो ढलान का उपयोग करता है) आपको केवल दिशात्मक जानकारी दे सकता है: यह आपको बता सकता है कि खोज दिशा में फ़ंक्शन मान कम हो जाता है, लेकिन कितनी देर तक नहीं । यह तय करने के लिए कि खोज की दिशा में कितनी दूर जाना है, आपको अतिरिक्त जानकारी की आवश्यकता है (निरंतर कदम लंबाई के साथ ढाल वंश उत्तल द्विघात समस्याओं के लिए भी विफल हो सकता है)। इसके लिए, आपके पास मूल रूप से दो विकल्प हैं:
- दूसरे क्रम की जानकारी का उपयोग करें (जो वक्रता को कूटबद्ध करता है), उदाहरण के लिए ढाल वंश के बजाय न्यूटन की विधि का उपयोग करके (जिसके लिए आप हमेशा चरण लंबाई का उपयोग कर सकते हैं1 न्यूनतम करने के लिए पर्याप्त रूप से बंद)।
- परीक्षण और त्रुटि (बेशक, जिसका अर्थ है कि मैं एक उचित लाइन खोज का उपयोग कर रहा हूं जैसे कि आर्मिजो)।
यदि, जैसा कि आप लिखते हैं, आपके पास दूसरे डेरिवेटिव तक पहुंच नहीं है, और ऑब्जेक्टिव फ़ंक्शन का मूल्यांकन करना बहुत महंगा है, तो आपकी एकमात्र उम्मीद है कि समझौता करें: एक अच्छा उम्मीदवार कदम की लंबाई प्राप्त करने के लिए पर्याप्त अनुमानित दूसरे क्रम की जानकारी का उपयोग करें जैसे कि एक लाइन खोज की जरूरत है ही O(1) मूल्यांकन (यानी, सबसे अधिक (छोटे) निरंतर प्रयास के कई आप अपने ढाल का मूल्यांकन करने की जरूरत है)।
एक संभावना यह है कि बरज़िलाई - बोरवेइन स्टेप लेंथ (देखें, उदाहरण के लिए, फ्लेचर: बरज़िलाई-बोरवेइन पद्धति पर । अनुप्रयोगों के साथ अनुकूलन और नियंत्रण, 235–256, Appl। ऑप्टिमाइज़। ऑप्टिमाइज़ेशन, 96, स्प्रिंगर, न्यू यॉर्क, 2005 )। यह विचार कदम के आकार का अनुमान पाने के लिए खोज दिशा के साथ वक्रता के परिमित अंतर का उपयोग करने के लिए है। विशेष रूप से, चुनेंα0>0 मनमाना, सेट g0:=∇f(x0) और फिर के लिए k=0,...:
- सेट sk=−α−1kgk तथा xk+1=xk+sk
- मूल्यांकन करना gk+1=∇f(xk+1) और सेट करें yk=gk+1−gk
- सेट αk+1=(yk)Tyk(yk)Tsk
यह विकल्प द्विघात कार्यों के लिए अभिसरण करने के लिए (बहुत जल्दी अभ्यास में) दिखाया जा सकता है, लेकिन अभिसरण मोनोटोन नहीं है (यानी, फ़ंक्शन मानf(xk+1) से बड़ा हो सकता है f(xk), लेकिन केवल एक बार थोड़ी देर में; फ्लेचर के पेपर में पृष्ठ 10 पर प्लॉट देखें)। गैर-द्विघात कार्यों के लिए, आपको इसे एक पंक्ति खोज के साथ जोड़ना होगा, जिसे गैर-अखंडता से निपटने के लिए संशोधित करने की आवश्यकता है। एक संभावना चुन रहा हैσk∈(0,α−1k) (जैसे, पीछे करके) ऐसा
f(xk−σkgk)≤maxmax(k−M,1)≤j≤kf(xj)−γσk(gk)Tgk,
जहां विशिष्ट आर्मिजो पैरामीटर है और एकरसता की डिग्री को नियंत्रित करता है (जैसे, )। एक ऐसा संस्करण भी है जो फ़ंक्शन मानों के बजाय ढाल मूल्यों का उपयोग करता है, लेकिन आपके मामले में ग्रेडिएंट फ़ंक्शन की तुलना में मूल्यांकन करने के लिए और भी अधिक महंगा है, ताकि यहां समझ में न आए। (नोट: आप निश्चित रूप से बीबी चरण की लंबाई को नेत्रहीन रूप से स्वीकार करने और अपनी किस्मत पर भरोसा करने की कोशिश कर सकते हैं, लेकिन अगर आपको किसी भी प्रकार की मजबूती की आवश्यकता है - जैसा कि आपने अपनी टिप्पणियों में लिखा है - यह वास्तव में बुरा विचार होगा।)
γ∈(0,1)MM=10
एक वैकल्पिक (और, मेरी राय में, बहुत बेहतर) दृष्टिकोण खोज दिशा की गणना में पहले से ही इस परिमित अंतर सन्निकटन का उपयोग करना होगा; इसे अर्ध-न्यूटन विधि कहा जाता है । यह विचार है कि ग्रेडिएंट्स के अंतर का उपयोग करके Hessian का अनुमानित रूप से वर्धमान रूप से निर्माण किया जाए। उदाहरण के लिए, आप (पहचान मैट्रिक्स) ले सकते हैं और हल कर
और
साथ सेट करें ऊपर और । (इसे Broyden अपडेट कहा जाता है∇2f(xk)H0=Idk=0,…
Hksk=−gk,(1)
Hk+1=Hk+(yk−Hksk)T(sk)T(sk)Tsk
ykxk+1=xk+skऔर शायद ही कभी अभ्यास में उपयोग किया जाता है; एक बेहतर लेकिन थोड़ा अधिक जटिल अपडेट
BFGS अपडेट है , जिसके लिए - और अधिक जानकारी - मैं नोकेडल और राइट की पुस्तक
न्यूमेरिकल ऑप्टिमाइज़ेशन का संदर्भ देता हूं ।) नकारात्मक पक्ष यह है कि ए) को प्रत्येक चरण में एक रैखिक प्रणाली को हल करने की आवश्यकता होगी (लेकिन केवल अज्ञात का आकार जो आपके मामले में एक प्रारंभिक स्थिति है, इसलिए ग्रेडिएंट प्राप्त करने के लिए पीडीई को हल करके प्रयास को हावी किया जाना चाहिए। इसके अलावा,
उलटा हेसियन के अनुमानों के लिए अद्यतन नियम मौजूद हैं , जिसमें केवल एक ही मैट्रिक्स की गणना की आवश्यकता होती है -vector उत्पाद) और बी) आपको अभी भी अभिसरण की गारंटी के लिए एक लाइन खोज की आवश्यकता है ...
सौभाग्य से, इस संदर्भ में एक वैकल्पिक दृष्टिकोण मौजूद है जो प्रत्येक फ़ंक्शन मूल्यांकन का उपयोग करता है। यह विचार है कि सममित और सकारात्मक निश्चितता (जिसे BFGS अपडेट के लिए गारंटी दी गई है) के लिए, को हल करना क्वाड्रेटिक मॉडल को कम करने के बराबर है।
एक विश्वास क्षेत्र विधि में , आप अतिरिक्त बाधा के साथ ऐसा करेंगे कि , जहां एक उचित रूप से चुना गया विश्वास क्षेत्र त्रिज्या है (जो कि स्टेप लेंथ की भूमिका निभाता है )। मुख्य विचार अब गणना चरण के आधार पर इस त्रिज्या को अनुकूल रूप से चुनना है। विशेष रूप से, आप अनुपात को देखते हैं
Hk(1)
qk(s)=12sTHks+sTgk.
∥s∥≤ΔkΔkσkρk:=f(xk)−f(xk+sk)f(xk)−qk(sk)
वास्तविक और अनुमानित मूल्य में कमी। यदि बहुत छोटा है, तो आपका मॉडल खराब था, और आप छोड़ देते हैं और साथ पुन: प्रयास करते हैं । यदि करीब है , तो आपका मॉडल अच्छा है, और आप और । अन्यथा आप बस और अकेले छोड़ हैं। वास्तविक minimizer गणना करने के लिए की
ρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskmin∥s∥≤Δkqk(s), पूर्ण विवश अनुकूलन समस्या को हल करने से बचने के लिए कई रणनीतियाँ मौजूद हैं; मेरा पसंदीदा
Steihaug का छोटा सीजी तरीका है । अधिक विवरण के लिए, मैं फिर से नोकेडल और राइट का संदर्भ देता हूं।