এসভিডি স্থিতিশীল করতে কতগুলি নিয়মিতকরণ যুক্ত করা যায়?


10

আমি (ইন্টেল MKL এর SVD ব্যবহার করছি dgesvdSciPy মাধ্যমে) এবং খেয়াল যখন আমি মধ্যে স্পষ্টতা পরিবর্তন যে ফলাফল উল্লেখযোগ্যভাবে ভিন্ন হয় float32এবং float64যখন আমার ম্যাট্রিক্স খারাপভাবে নিয়ন্ত্রিত হয় / না পূর্ণ ক্রম। float32-> float64পরিবর্তনের প্রতি সংবেদনশীল হওয়ার জন্য ন্যূনতম পরিমাণে নিয়মিতকরণের জন্য আমার কোনও গাইড থাকতে হবে?

বিশেষত, করছেন A=UDVT, আমি ওইটা দেখছি L এর আদর্শ VTXযখন আমি float32এবং এর মধ্যে স্পষ্টতা পরিবর্তন করি তখন প্রায় 1 দ্বারা সরানো হয় float64L2 এর আদর্শ A হয় 105 এবং এটির মোট of of৪ টির মধ্যে প্রায় 200 শূন্য ইগন্যালিউস রয়েছে।

এসভিডি চালু করছেন λI+A সঙ্গে λ=103 পার্থক্য বিলুপ্ত।


আকার কি N একটি N×N জরায়ু Aউদাহরণস্বরূপ (এটি কি একটি বর্গ ম্যাট্রিক্স)? 200 শূন্য ইগ্যালভ্যালু বা একক মান? একটি ফ্রোবিনিয়াস নিয়ম||A||Fএকটি প্রতিনিধি উদাহরণ জন্য সহায়ক হবে।
আন্তন মেনশভ

এক্ষেত্রে 784 x 784 ম্যাট্রিক্স, তবে
ল্যাম্বদার

সুতরাং, মধ্যে পার্থক্য Vশুধুমাত্র শেষ কলামগুলিতে শূন্য একক মানগুলির সাথে মিল রেখে?
নিক

2
যদি বেশ কয়েকটি সমান একক মান থাকে তবে এসভিডিটি অনন্য নয়। আপনার উদাহরণে, আমি অনুমান করি যে সমস্যাটি একাধিক শূন্য একক মান থেকে আসে এবং একটি পৃথক নির্ভুলতা সম্পর্কিত একক স্থানের জন্য ভিত্তির ভিন্ন পছন্দ বাড়ে। আপনি নিয়মিত করার সময় কেন সেই পরিবর্তন হয় তা আমি জানি না ...
ডার্ক

উত্তর:


1

যদিও প্রশ্নের দুর্দান্ত উত্তর রয়েছে, তবে এখানে ছোট ছোট একক মানগুলির জন্য একটি প্লট রয়েছে thumb

যদি একটি একক মান মান ননজারো তবে খুব সামান্য হয় তবে আপনার এর পারস্পরিক মূল্য শূন্য হিসাবে সংজ্ঞায়িত করা উচিত, যেহেতু এর স্পষ্ট মানটি সম্ভবত রাউন্ডঅফ ত্রুটির একটি নিদর্শন, অর্থবোধক সংখ্যা নয়। "ছোট কত ছোট?" এই প্রশ্নের উত্তর দেওয়া যায় না? এই ফ্যাশনে সম্পাদনা করার জন্য সমস্ত একক মান রয়েছে যার অনুপাত সবচেয়ে কম largestN বার মেশিন নির্ভুলতা ϵ

- সংখ্যার রেসিপি পি। 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উচ্চ-মাত্রিক ডেটা যেমন, ট্রেন / পরীক্ষার শ্রেণিবিন্যাসের জন্য তাত্পর্যপূর্ণ হতে পারে তেমনি কার্যকর হতে পারে।

বাস্তব পরীক্ষার কেস স্বাগত জানানো হবে।


বিটিডব্লিউ, স্কিপি ফ্লোট 32 এর জন্য 1e3 এবং ফ্লোট 64 এর 1e6 একটি ফ্যাক্টর যুক্ত করবে, কৌতূহল যেগুলি থেকে এসেছে
ইয়ারোস্লাভ বুলাটোভ

@Yaroslav Bulatov, numpyএবং scipy.linalg.svdকল LAPACK gesdd , প্যারামিটার দেখুন JOBRমধ্যে dgejsv: "নির্দিষ্ট করে একবচন মানের জন্য শ্রেণিটি সমস্যা শূন্য ছোট ইতিবাচক একবচন মান সেট লাইসেন্স যদি তারা বাইরে ...।" ( scipy.sparse.linalg.svdsARPACK গোপন করে এবং একটি প্যারামিটার রয়েছে tol, সহনশীলতার একবচন মান জন্য)।
ডেনিস

13

একটি প্রতিসম ম্যাট্রিক্সের জন্য একক মানের পচন omp A=AT এটির ক্যানোনিকাল ইয়েজেনডিকোপজেশন (যেমন অর্গনরমাল ম্যাট্রিক্স-অফ-ইগেনভেেক্টর সহ) একই এবং একই সাথে ননসিমেট্রিক ম্যাট্রিক্সের জন্য একই জিনিস M=UΣVT প্রতিসম ম্যাট্রিক্সের জন্য কেবল ক্যানোনিকাল ইগেনুয়ালু পচন

H=[0MMT0]=[U00V][0ΣΣ0][U00V]T
সুতরাং, সাধারণতার ক্ষতি ছাড়াই, আসুন আমরা একটি ঘনিষ্ঠভাবে সম্পর্কিত প্রশ্নটি বিবেচনা করি: যদি দুটি প্রতিসাম্য ম্যাট্রিকগুলি প্রায় একই হয়, তবে আমরা কি তাদের আধ্যাত্মিক আইজেন্ডেকম্পোশনগুলিও প্রায় একইরকম আশা করতে পারি?

উত্তরটি একটি আশ্চর্যজনক নম্বর। দিনϵ>0 ছোট হোন, এবং দুটি ম্যাট্রিক বিবেচনা করুন

Aϵ=[1ϵϵ1]=VΛϵVT,Bϵ=[1+ϵ001ϵ]=UΛϵUT
যার উভয়েরই আইগেনুয়ালু রয়েছে Λϵ=diag(1+ϵ,1ϵ), তবে যার ইগেনভেেক্টর
V=12[1111],U=[1001].
ম্যাট্রিক্সের সময় AϵBϵ প্রায় একই, তাদের ম্যাট্রিক্স-অফ-ইগেনভেেক্টর V এবং Uখুব আলাদা। প্রকৃতপক্ষে, যেহেতু আইজেন্ডেকম্পেশনগুলি অনন্য uniqueϵ>0সত্যিই এর কোন বিকল্প নেই U,V যেমন যে UV

সীমাবদ্ধ নির্ভুলতার অধীনে এসভিডি-তে ফিরে এই অন্তর্দৃষ্টি প্রয়োগ করা যাক, আসুন আমরা লিখি M0=U0Σ0V0Tfloat64 যথার্থ হিসাবে আপনার ম্যাট্রিক্স হিসাবে এবংMϵ=UϵΣϵVϵTfloat32যথার্থ হিসাবে একই ম্যাট্রিক্স হিসাবে । যদি আমরা ধরে নিই যে এসভিডিগুলি নিজেরাই সঠিক, তবে একক মানগুলি valuesΣ0,Σϵ এর একটি ছোট ধ্রুবক ফ্যাক্টর ছাড়া আর আলাদা হওয়া উচিত ϵ107, কিন্তু একক ভেক্টর U0,Uϵ এবং V0,Vϵ একটি ইচ্ছামত বড় পরিমাণে দ্বারা পৃথক হতে পারে। সুতরাং, যেমন দেখানো হয়েছে, একক ভেক্টর অর্থে এসভিডিটিকে "স্থিতিশীল" করার কোনও উপায় নেই।



1
এটি একটি দুর্দান্ত রেফারেন্স। আমি জানি না, আমি এই বিশেষ উদাহরণটি বহু বছর আগে গণিত ক্লাসে শিখেছিলাম :-)
রিচার্ড জাং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.