लॉगसम में कैटास्ट्रॉफिक रद्दीकरण


18

मैं निम्न फ़ंक्शन को निम्न- सापेक्ष त्रुटि के साथ डबल-सटीक फ़्लोटिंग पॉइंट में लागू करने का प्रयास कर रहा हूं :

एलजीरोंयू(एक्स,y)=लॉग(exp(एक्स)+exp(y))

इसका उपयोग सांख्यिकीय अनुप्रयोगों में बड़े पैमाने पर संभावना या संभावना घनत्व को जोड़ने के लिए किया जाता है जो लॉग स्पेस में दर्शाए जाते हैं। बेशक, या तो exp(एक्स) या exp(y) कर सकता है आसानी से अतिप्रवाह या underflow, जो बुरा होगा क्योंकि लॉग अंतरिक्ष पहली जगह में अधःप्रवाह से बचने के लिए किया जाता है। यह विशिष्ट समाधान है:

एलजीरोंयू(एक्स,y)=एक्स+एलजी1पी(exp(y-एक्स))

से रद्दीकरण y-एक्सहोता है, लेकिन द्वारा कम किया जाता है exp। दूर से भी बुरा तब है जब एक्स और एलजी1पी(exp(y-एक्स)) करीब हैं। यहाँ एक रिश्तेदार त्रुटि की साजिश है:

यहाँ छवि विवरण दर्ज करें

कथानक l o g s u m m ( x , y ) = 0 के आकार पर जोर देने के लिए भूखंड को पर काट दिया जाता है , जिसके बारे में रद्दीकरण होता है। मैंने 10 - 11 तक त्रुटि देखी है और संदेह है कि यह बहुत खराब हो जाता है। (एफडब्ल्यूआईडब्ल्यू, "ग्राउंड ट्रुथ" फ़ंक्शन को एमपीएफआर की मध्यस्थता-सटीक फ़्लोटिंग 128-बिट परिशुद्धता के साथ उपयोग करके लागू किया गया है।)10-14एलजीरोंयू(एक्स,y)=010-1 1

मैंने अन्य सुधारों की कोशिश की है, सभी एक ही परिणाम के साथ। साथ बाहरी अभिव्यक्ति के रूप में, एक ही गलती कुछ का एक लॉग के साथ 1. पास लेने के द्वारा होता है एल जी 1 पी बाहरी अभिव्यक्ति के रूप में रद्द भीतरी अभिव्यक्ति में होता है।लॉगएलजी1पी

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

ऐसा लगता है कि मुझे एक नए दृष्टिकोण की आवश्यकता है। यह क्या हो सकता है?


मैं आपके अंतिम पैराग्राफ को नहीं समझता। "एप्सिलॉन के भीतर" का मेरे लिए कोई मतलब नहीं है। क्या आपका मतलब अंतिम स्थान पर एक इकाई है ? जैसा कि उपयोगकर्ताओं को संभावनाओं में दिलचस्पी है, एक छोटी लॉग संभावना त्रुटि के कारण बड़ी संभावना त्रुटि होगी, इसलिए ऐसा नहीं है।
एरन अहमदिया

जिज्ञासा से बाहर, क्या आपने अपने दो तरीकों में से "सर्वश्रेष्ठ" लेने की कोशिश की है और उस की त्रुटि की साजिश रच रहे हैं? फिर आप सभी को यह पता लगाने के लिए सही तर्क है कि आप किस मामले में हैं (उम्मीद है कि कम लागत या एल्गोरिथ्म की आवश्यक लागत का हिस्सा है), फिर उपयुक्त विधि पर स्विच करें।
एरन अहमदिया

एक्सexp(एक्स)exp()-1एक्सexp(एक्स)

>1

जवाबों:


12

एलजीरोंयू(एक्स,y)=अधिकतम(एक्स,y)+एलजी1पी(exp(-पेट(एक्स-y))
लॉगΣमैंएक्समैं=ξ+लॉगΣमैंएक्समैं-ξ,   ξ=अधिकतममैंएक्समैं

यदि लॉगसम शून्य के बहुत करीब है और आप उच्च सापेक्ष सटीकता चाहते हैं, तो आप संभवतः

एलजीरोंयू(एक्स,y)=अधिकतम(एक्स,y)+एलएक्सपी(एक्स-y)
एलएक्सपी(z): =लॉग(1+-|z|)
z

पूर्ण त्रुटि के संदर्भ में, यह है। सापेक्ष त्रुटि के संदर्भ में, यह भयानक है जब उत्पादन शून्य के पास होता है।
नील टोरंटो

एक्सy

X = -0.775 और y = -0.6175 के लिए, मुझे 62271 ulps त्रुटि और 1.007e-11 सापेक्ष त्रुटि मिलती है।
नील टोरंटो

1
ब्याज की सीमा में अत्यधिक सटीक डेटा बिंदुओं की गणना करें - स्पर्शोन्मुख व्यवहार के कारण कम से कम ttwo विभिन्न श्रेणियों की आवश्यकता होती है। एक शून्य के करीब नहीं z के लिए परिभाषित अभिव्यक्ति का उपयोग कर सकते हैं। असाधारण रेंज के लिए वांछित सटीकता प्राप्त करने के लिए पर्याप्त रूप से उच्च डिग्री के एक तर्कसंगत कार्य को फिट करें। संख्यात्मक स्थिरता के लिए, अंश और हर में बर्नस्टीन बहुपद या टचेबाइचिव बहुपद का उपयोग करें, ब्याज के अंतराल के लिए अनुकूलित। अंत में, एक निरंतर अंश में विस्तार करें और पता लगाएं कि सटीकता को ठीक किए बिना गुणांक को कितना कम कर सकते हैं।
अर्नोल्ड न्यूमैयर

1
इससे एल=एल(z)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.