भंडारण के बारे में जेएम सही है। BFGS को एक अनुमानित हेस्सियन की आवश्यकता होती है, लेकिन आप इसे पहचान मैट्रिक्स के साथ आरंभ कर सकते हैं और फिर आप जिस स्तर तक पहुँच सकते हैं, रैंक-दो अपडेट की गणना अनुमानित हेसियन तक कर सकते हैं, जब तक कि आपके पास ग्रेडिएंट जानकारी उपलब्ध है, अधिमानतः विश्लेषणात्मक रूप से परिमित अंतर की तुलना में। बीएफजीएस एक अर्ध-न्यूटन विधि है, और सीजी की तुलना में कम चरणों में अभिसरण होगी, और "अटक" पाने के लिए थोड़ा कम प्रवृत्ति होती है और प्रत्येक पुनरावृत्ति के लिए महत्वपूर्ण वंश को प्राप्त करने के लिए मामूली एल्गोरिथ्म की आवश्यकता होती है।
इसके विपरीत, सीजी को मैट्रिक्स-वेक्टर उत्पादों की आवश्यकता होती है, जो आपके लिए उपयोगी हो सकते हैं यदि आप दिशात्मक डेरिवेटिव (फिर से, विश्लेषणात्मक रूप से, या परिमित अंतर का उपयोग करके) की गणना कर सकते हैं। एक दिशात्मक व्युत्पन्न की एक परिमित अंतर गणना एक हेसियन की परिमित अंतर गणना की तुलना में बहुत सस्ती होगी, इसलिए यदि आप परिमित अंतर का उपयोग करके अपने एल्गोरिथ्म का निर्माण करना चुनते हैं, तो बस दिशात्मक व्युत्पन्न की गणना करें। यह अवलोकन, हालांकि, वास्तव में बीएफजीएस पर लागू नहीं होता है, जो क्रमिक सूचना के आंतरिक उत्पादों का उपयोग करके अनुमानित हेसियों की गणना करेगा।
nn
यदि आप जानते हैं कि भंडारण एक मुद्दा नहीं होगा, तो मैं आपके आवेदन के लिए एक छोटी सी परीक्षण समस्या पर दो एल्गोरिदम की तुलना करूंगा। आपकी समस्या की विशेष बारीकियों को जाने बिना, मेरा अनुमान है कि बीएफजीएस तेजी से होगा, लेकिन आपको एक बेहतर विचार प्राप्त करने के लिए दो एल्गोरिदम का वास्तव में परीक्षण करना चाहिए, जो बेहतर काम करेगा।
अंत में, स्वचालित भेदभाव के बारे में एक शब्द: फोरट्रान ( DAEPACK ) के लिए एक घर में स्वचालित भेदभाव (AD) सुविधा के साथ कुछ अनुभव होने के बाद , मैं आपको बता सकता हूं कि AD उपकरण अक्सर बारीक होते हैं। वे आवश्यक रूप से उस कोड को अंतर करने में सक्षम नहीं हो सकते हैं जो वे स्वयं उत्पन्न करते हैं। विज्ञापन उपकरण दो प्रकार के होते हैं:
- स्रोत से स्रोत विज्ञापन उपकरण
- ऑपरेटर विज्ञापन उपकरण को ओवरलोड कर रहा है
स्रोत-से-स्रोत उपकरण अनिवार्य रूप से संशोधित संकलक हैं जो आपके द्वारा लिखे गए स्रोत कोड को लेते हैं, इसे पार्स करते हैं, और स्वचालित रूप से नए स्रोत कोड उत्पन्न करते हैं जो आपके स्रोत कोड में कार्यों की ढाल की गणना करता है। एडी टूल को ओवरलोड करने वाले ऑपरेटर को आपके स्रोत कोड में अतिभारित एडी ऑपरेटरों का उपयोग करने की आवश्यकता होती है ताकि डेरिवेटिव की गणना की जा सके, जिसके लिए एडी के साथ विश्लेषणात्मक डेरिवेटिव की गणना करने के लिए आपके हिस्से पर अतिरिक्त प्रयास की आवश्यकता होगी।