एसवीडी को स्थिर बनाने के लिए कितना नियमितीकरण जोड़ना है?


10

मैं Intel MKL के SVD ( dgesvdSciPy के माध्यम से) का उपयोग कर रहा हूं और देखा है कि जब मेरे मैट्रिक्स के बीच सटीक रूप से परिवर्तन होता है float32और float64पूर्ण रैंक नहीं होता है, तो परिणाम काफी भिन्न होते हैं । वहाँ मैं परिणाम के प्रति असंवेदनशील बनाने के लिए जोड़ना चाहिए नियमितीकरण की न्यूनतम राशि पर एक गाइड है float32> - float64परिवर्तन?

विशेष रूप से, कर रहा है A=UDVT, मैं देख रहा हूं कि मान 1 के बीच चलता है, जब मैं बीच में परिशुद्धता बदलता हूं और । का मानदंड और इसमें 784 कुल में से लगभग 200 शून्य eigenvalues ​​हैं।LVTXfloat32float64L2A105

SVD on with करने से अंतर गायब हो गया।λI+Aλ=103


आकार क्या है N का N×N आव्यूह Aउस उदाहरण के लिए (क्या यह एक वर्ग मैट्रिक्स भी है)? 200 शून्य eigenvalues ​​या एकवचन मान? एक फ्रोबेनियस मानदंड||A||Fएक प्रतिनिधि उदाहरण के लिए भी उपयोगी होगा।
एंटोन मेन्शोव

इस मामले में 784 x 784 मैट्रिक्स, लेकिन मैं लैम्ब्डा का अच्छा मूल्य खोजने के लिए सामान्य तकनीक में अधिक दिलचस्पी रखता हूं
यारोस्लाव बुलटोव

तो, अंतर है Vशून्य विलक्षण मानों के अनुरूप केवल अंतिम कॉलम में?
निक अल्जीरिया

2
यदि कई समान विलक्षण मूल्य हैं, तो svd अद्वितीय नहीं है। आपके उदाहरण में, मुझे लगता है कि समस्या कई शून्य विलक्षण मूल्यों से आती है और यह कि एक अलग परिशुद्धता संबंधित विलक्षण स्थान के लिए आधार का एक अलग विकल्प है। मुझे नहीं पता कि जब आप नियमित करते हैं तो यह क्यों बदल जाता है ...
डिर्क

1
...क्या है एक्स?
फेडेरिको पोलोनी

जवाबों:


1

हालाँकि इस सवाल का एक बड़ा जवाब है, यहाँ छोटे विलक्षण मूल्यों के लिए एक नियम है, एक कथानक के साथ।

यदि एक विलक्षण मान नॉनजेरो है, लेकिन बहुत छोटा है, तो आपको इसके पारस्परिक को शून्य होना चाहिए, क्योंकि इसका स्पष्ट मान संभवतः राउंडऑफ़ त्रुटि की एक विरूपण साक्ष्य है, न कि एक सार्थक संख्या। प्रश्न का एक प्रशंसनीय उत्तर "कितना छोटा है?" इस शैली में सभी विलक्षण मूल्यों को संपादित करना है जिसका अनुपात सबसे बड़ा हैएन मशीन सटीक समय ε

- संख्यात्मक व्यंजनों p। 795

जोड़ा गया: निम्न जोड़ी लाइनें इस नियम-अंगूठे की गणना करती हैं।

#!/usr/bin/env python2

from __future__ import division
import numpy as np
from scipy.sparse.linalg import svds  # sparse, dense or LinOp

#...............................................................................
def howsmall( A, singmax=None ):
    """ singular values < N float_eps sing_max  may be iffy, questionable
        "How small is small ?"
        [Numerical Recipes p. 795](http://apps.nrbook.com/empanel/index.html?pg=795)
    """
        # print "%d singular values are small, iffy" % (sing < howsmall(A)).sum()
        # small |eigenvalues| too ?
    if singmax is None:
        singmax = svds( A, 1, return_singular_vectors=False )[0]  # v0=random

    return max( A.shape ) * np.finfo( A.dtype ).eps * singmax


हिल्बर्ट मैट्रिक्स को व्यापक रूप से राउंडऑफ़ त्रुटि के लिए एक परीक्षण मामले के रूप में उपयोग किया जाता है:

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

यहाँ हिल्बर्ट मैट्रिक्स के मन्तीस में निम्न-क्रम बिट्स को शून्य किया जाता है A.astype(np.float__).astype(np.float64), फिर अंदर np.linalg.svdचलाया जाता है float64। ( svdसभी के साथ परिणाम float32एक ही हैं।)

float32ट्रेन / परीक्षण वर्गीकरण के लिए उच्च-आयामी डेटा को दर्शाने के लिए बस ट्रंकटिंग भी उपयोगी हो सकती है।

वास्तविक परीक्षण मामलों का स्वागत किया जाएगा।


btw, scipy float32 के लिए 1e3 और float64 के लिए 1e6 का एक कारक जोड़ने के लिए लगता है, जिज्ञासु जहां से ये आए थे
यारोस्लाव Bulatov

@Yaroslav Bulatov, numpyऔर scipy.linalg.svdकॉल LAPACK gesdd , पैरामीटर देखने JOBRमें dgejsv: "निर्दिष्ट करता है कि विलक्षण मूल्यों के लिए सीमा मुद्दे शून्य छोटे सकारात्मक विलक्षण मूल्यों के लिए सेट करने के लिए लाइसेंस अगर वे बाहर रहे हैं ...।" ( scipy.sparse.linalg.svdsARPACK लपेटता है और एक पैरामीटर है tol, सहिष्णुता एकवचन मानों के लिए।)
डेनिस

13

एक सममित मैट्रिक्स के लिए एकवचन मूल्य अपघटन =टी एक और अपने विहित eigendecomposition के रूप में ही है (यानी एक orthonormal मैट्रिक्स-के-eigenvectors के साथ), जबकि एक nonsymmetric मैट्रिक्स के लिए एक ही बात =यूΣवीटी सममित मैट्रिक्स के लिए विहित eigenvalue अपघटन है

एच=[0टी0]=[यू00वी][0ΣΣ0][यू00वी]टी
इसलिए, सामान्यता की हानि के बिना, आइए हम एक निकट से संबंधित प्रश्न पर विचार करें: यदि दो सममित मैट्रिक लगभग समान हैं, तो क्या हमें उम्मीद है कि उनके विहित सिद्घांत भी लगभग समान हो सकते हैं?

इसका उत्तर आश्चर्यजनक है। चलोε>0 छोटे बनो, और दो मैट्रिसेस पर विचार करो

ε=[1εε1]=वीΛεवीटी,बीε=[1+ε001-ε]=यूΛεयूटी
जिनमें से दोनों के पास स्वदेशी गुण हैं Λε=मैंजी(1+ε,1-ε), लेकिन किसके eigenvectors हैं
वी=12[111-1],यू=[1001]
जबकि मेट्रिक्स εबीε लगभग समान हैं, उनके मैट्रिक्स-ऑफ-ईजेनवेक्टर हैं वी तथा यूबहुत अलग हैं। दरअसल, चूंकि eigendecompositions अद्वितीय हैंε>0, वास्तव में कोई विकल्प नहीं है यू,वी ऐसा है कि यूवी

अब, इस अंतर्दृष्टि को परिमित परिशुद्धता के तहत एसवीडी पर वापस लागू करना, हमें लिखना चाहिए 0=यू0Σ0वी0टीfloat64 परिशुद्धता में अपने मैट्रिक्स के रूप में , औरε=यूεΣεवीεटीfloat32परिशुद्धता में एक ही मैट्रिक्स के रूप में । यदि हम मान लेते हैं कि एसवीडी स्वयं सटीक हैं, तो एकवचन मानΣ0,Σε के एक छोटे से स्थिर कारक से अधिक नहीं द्वारा अलग होना चाहिए ε10-7, लेकिन विलक्षण वैक्टर यू0,यूε तथा वी0,वीε अनियंत्रित रूप से बड़ी मात्रा में भिन्न हो सकते हैं। इसलिए, जैसा कि दिखाया गया है, एसवीडी को विलक्षण वैक्टर के अर्थ में "स्थिर" बनाने का कोई तरीका नहीं है।


क्या यह उदाहरण है: users.math.msu.edu/users/markiwen/Teaching/MTH995/Papers/… ?
Memming

1
यह एक महान संदर्भ है। मुझे नहीं पता, मैंने इस विशेष उदाहरण को गणित वर्ग में कई साल पहले सीखा था :-)
रिचर्ड जांग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.