रिमेज़ एल्गोरिथम


14

रिमेज़ एल्गोरिथ्म एक बहुप्रतिक्षित पुनरावृत्त दिनचर्या है जो न्यूनतम पॉलिसियों में एक बहुपद द्वारा एक फ़ंक्शन को अनुमानित करता है। लेकिन, निक ट्रेफेथेन के रूप में [1] इसके बारे में कहते हैं:

इनमें से अधिकांश [कार्यान्वयन] कई साल पीछे चले जाते हैं और वास्तव में, उनमें से अधिकांश सामान्य सर्वश्रेष्ठ सन्निकटन समस्या को हल नहीं करते हैं जैसा कि ऊपर प्रस्तुत किया गया है, लेकिन असतत चर या डिजिटल फ़िल्टरिंग वाले वेरिएंट। एक प्रचलन में कुछ अन्य कंप्यूटर प्रोग्राम मिल सकते हैं, लेकिन कुल मिलाकर, ऐसा लगता है कि वर्तमान में सबसे अच्छा अनुमान लगाने के लिए कोई व्यापक रूप से उपयोग किया जाने वाला कार्यक्रम नहीं है।

एक न्यूनतम-वर्ग या उत्तल अनुकूलन को लागू करके भी न्यूनतम समाधान की गणना कर सकते हैं, उदाहरण के लिए, Matlab और फ्री -1 CVX टूलबॉक्स का उपयोग करके रन फ़ंक्शन पर लागू -1, 1]:

m = 101; n = 11;            % 101 points, polynomial of degree 10
xi = linspace(-1, 1, m);    % equidistant points in [-1, 1]
ri = 1 ./ (1+(5*xi).^2);    % Runge function

tic                         % p is the polynomial of degree (n-1)
cvx_begin                   % minimize the distance in all points
    variable p(n);
    minimize( max(abs(polyval(p, xi) - ri)) );
cvx_end
toc                         % 0.17 sec for Matlab, CVX and SeDuMi

चेबीशेव पॉलिनॉमिअल्स के साथ सन्निकटन का न्यूनतम मानदंड है, 0.1090जबकि यहां यह दृष्टिकोण न्यूनतम पर पहुंचता है 0.0654, वही मूल्य जो मैटलैब chebfunटूलबॉक्स में रेमीज एल्गोरिदम के साथ गणना करता है ।

क्या अधिक जटिल रिमेज़ एल्गोरिथ्म को लागू करने में कोई फायदा है अगर आप न्यूनतम समाधान को तेजी से और एक अनुकूलन सॉल्वर के साथ अधिक सटीक गणना कर सकते हैं? क्या कुछ कठिन समस्याओं या परीक्षण मामलों पर इन दोनों दृष्टिकोणों की तुलना करने वाली कोई रिपोर्ट / लेख हैं?

-
[1] आर। पचोन और एलएन ट्रेफेथेन। बीआईटी न्यूमेरिकल मैथमेटिक्स (2008) वॉल्यूम। 46।

जवाबों:


4

"सही" उत्तर दृढ़ता से इस बात पर निर्भर करता है कि आपको अपनी सन्निकट आवश्यकता के लिए क्या चाहिए। क्या आपको वास्तव में कुछ त्रुटि के लिए सबसे अच्छा सन्निकटन की आवश्यकता है? या सिर्फ एक अच्छा सन्निकटन? या माइनमैक्स अर्थ में सिर्फ एक अच्छा सन्निकटन?

निक ट्रेफेथेन ने हाल ही में एक अच्छा उदाहरण दिया, जहां रेमेज़ सन्निकटन एक बुरा विचार है क्योंकि यह पूरे अंतराल पर औसत त्रुटि के बावजूद अधिकतम त्रुटि को कम करता है, जो कि आप नहीं चाहते। बेशक, अधिकतम त्रुटि बड़ी हो सकती है, लेकिन यह चिकनी कार्यों के लिए बाध्य है।

अपडेट करें

नीचे दी गई टिप्पणियों में चर्चा के बाद, मैंने CVX टूलबॉक्स डाउनलोड किया और चेबफुन रिमेज़ एल्गोरिथ्म (अस्वीकरण: मैं Chebfun विकास टीम का हिस्सा हूं) के साथ सीधी तुलना की:

% Do the convex optimization bit.
m = 101; n = 11;            % 101 points, polynomial of degree 10
xi = linspace(-1, 1, m);    % equidistant points in [-1, 1]
ri = 1 ./ (1+(5*xi).^2);    % Runge function

tic                         % p is the polynomial of degree (n-1)
cvx_begin                   % minimize the distance in all points
    variable p(n);
    minimize( max(abs(polyval(p, xi) - ri)) );
cvx_end
toc_or = toc                % 0.17 sec for Matlab, CVX and SeDuMi

% Extract a Chebfun from the result
x = chebfun( [-1,1] );
A = [ chebfun(1) , x ];
for k=3:n, A(:,k) = A(:,k-1).*x; end
or = A * flipud(p)

% Make a chebfun of Runge's function
f = chebfun( @(x) 1 ./ ( 1 + 25*x.^2 ) )

% Get the best approximation using Remez
tic, cr = remez( f , 10 ); toc_cr = toc

% Get the maximum error in each case
fprintf( 'maximum error of convex optimization: %e (%f s)\n' , norm( f - or , inf ) , toc_or );
fprintf( 'maximum error of chebfun remez: %e (%f s)\n' , norm( f - cr , inf ) , toc_cr );

% Plot the two error curves
plot( [ f - cr , f - or ] );
legend( 'chebfun remez' , 'convex optimization' );

बहुत सारे आउटपुट के बाद, मुझे अपने लैपटॉप पर मैटलैब 2012 ए, सीवीएक्स संस्करण 1.22 और चेबफुन के नवीनतम एसवीएन स्नैपशॉट के साथ मिलता है:

maximum error of convex optimization: 6.665479e-02 (0.138933 s)
maximum error of chebfun remez: 6.592293e-02 (0.309443 s)

ध्यान दें कि fत्रुटि को मापने के लिए इस्तेमाल किया जाने वाला चेबफुन 15 अंकों तक सटीक है। तो चेबफुन की रिमेज़ दो बार लंबी होती है, लेकिन एक छोटी वैश्विक त्रुटि होती है। यह बताया जाना चाहिए कि CVX ऑप्टिमाइज़ेशन के लिए संकलित कोड का उपयोग करता है जबकि चेबफुन 100% देशी मैटलैब है। की न्यूनतम त्रुटि 0.00654, 'ग्रिड पर' न्यूनतम त्रुटि है कि ग्रिड से दूर, त्रुटि अप करने के लिए किया जा सकता है 0.00659m = 1001मुझे प्राप्त ग्रिड आकार में वृद्धि

maximum error of convex optimization: 6.594361e-02 (0.272887 s)
maximum error of chebfun remez: 6.592293e-02 (0.319717 s)

यानी लगभग एक ही गति, लेकिन असतत अनुकूलन चौथे दशमलव अंक के रूप में अभी भी बदतर है। अंत में, m = 10001मुझे मिलने वाले ग्रिड आकार को और अधिक बढ़ाना

maximum error of convex optimization: 6.592300e-02 (5.177657 s)
maximum error of chebfun remez: 6.592293e-02 (0.312316 s)

यानी असतत अनुकूलन अब दस गुना से अधिक धीमा है और छठे अंक के रूप में अभी भी बदतर है।

लब्बोलुआब यह है कि रेमेज़ आपको विश्व स्तर पर इष्टतम परिणाम देगा। जबकि असतत एनालॉग छोटे ग्रिड पर तेजी से हो सकता है, यह एक सही परिणाम नहीं देगा।


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

1
@ हंस, मुझे क्षमा करें, मैंने आपके प्रश्न को गलत बताया है। आपका उत्तल सॉल्वर आपको एक ही परिणाम नहीं दे रहा है, कम से कम सभी अंकों को नहीं। यदि मैं आपके उत्तल कोड को सही ढंग से समझता हूं, तो आप अंकों के असतत सेट पर अधिकतम त्रुटि को कम कर रहे हैं। यह एक अच्छा अनुमान है - लेकिन वैश्विक अधिकतम त्रुटि को कम करने के समान नहीं है।
पेड्रो

इस मामले में उत्तल सॉल्वर ने बेहतर परिणाम दिया । इसके बारे में सोचें, रिमेज़ एल्गोरिथ्म एक पुनरावृत्ति प्रक्रिया है, जो एक अनुकूलन दिनचर्या के समान है, और एक सटीक परिणाम भी नहीं लौटाएगा। ऊपर दिए गए ठोस मामले में, अनुकूलन से समाधान बेहतर था, अर्थात इसके पास एक समग्र छोटा अधिकतम मानक था, जो कि सबसे अच्छे रिमेज़ कार्यान्वयन से प्राप्त हुआ था। सवाल अभी भी खुला है
हंस डब्ल्यू।

@HansWerner, आपने उत्तल सॉल्वर के साथ प्राप्त समाधान की अधिकतम त्रुटि कैसे मापी? रिमेज़ एल्गोरिथ्म को chebfunतब तक चलना चाहिए जब तक कि न्यूनतम मशीन परिशुद्धता (एक अर्थ में) को प्राप्त न हो जाए।
पेड्रो

जरुरी नहीं; इसके लिए 'tol' (जो सापेक्ष सहिष्णुता है) या 'maxiter' chebfun/remezजैसे विकल्प हैं, लेकिन सभी प्रकार के ऑप्टिमाइज़ेशन सॉल्वर के समान विकल्प हैं। एक तरह से कह सकते हैं, रिमेज़ एक निश्चित कार्य के लिए एक अनुकूलन दिनचर्या है। और सवाल यह है: क्या सामान्य उद्देश्य सॉल्वरों को पकड़ा गया है और ऐसे विशेष सॉल्वर के लिए अब और कोई आवश्यकता नहीं है? बेशक, मैं गलत हो सकता हूं।
हंस डब्ल्यू।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.