SVD یک ماتریس را به جهتهایِ دو سمت و مقدارهایِ تکین تجزیه میکند. در مثالِ این صفحه، ماتریسِ۳×۲ را بدونِ مرکزکردن به U، S و Vᵀ میشکنیم و دوباره میسازیم. سپس فقط یک مؤلفه را نگه میداریم تا خطایِ حذفِ مؤلفهٔ دیگر قابلِ محاسبه باشد؛ این تمرین سنجشِ دقتِ مدل نیست.
قبل از محاسبه، شکلِ هر قطعه را بدانیم
برایِ مثالِ حقیقیِ تمامرتبه، از شکلِ کاهشیافته استفاده میکنیم: U سه سطر و دو ستون، S دو مقدارِ۳و۱، و V دو سطر و دو ستون دارد. بازسازی A=U×diag(S)×Vᵀ است. ستونهایِ U در فضایِ سهبعدی و ستونهایِ V در فضایِ دوبعدی واحد و بر هم عمودند. U مربعی نیست؛ بنابراین UᵀU=I₂، اما UUᵀ را I₃ نمینامیم.
ماتریسِ آموزشی و عاملهایِ آن
A از سطرهایِ(۱٫۹۲،۰٫۴۴)، (۱٫۵۶،۱٫۹۲) و(۰،۰) ساخته شده است. کد از AᵀA شروع میکند: سطرهایِ این ماتریس(۶٫۱۲،۳٫۸۴) و(۳٫۸۴،۳٫۸۸) هستند. مقدارهایِ ویژهٔ آن۹و۱اند؛ ریشهٔ مثبتِ آنها مقدارهایِ تکین۳و۱ میشوند. بردارهایِ V از زاویهٔ ماتریسِ متقارنِ دوستونه محاسبه میشوند؛ U را از Avᵢ÷sᵢ میسازیم.
| عامل | سطرهایِ حاصل، با گردکردنِ نمایشی | کنترلِ مستقل |
|---|---|---|
| U | (۰٫۶،−۰٫۸)، (۰٫۸،۰٫۶)، (۰،۰) | UᵀU برابرِ همانیِ۲×۲ |
| S | ۳،۱ | نامنفی و نزولی |
| V | (۰٫۸،−۰٫۶)، (۰٫۶،۰٫۸) | VᵀV برابرِ همانیِ۲×۲ |
فایلِ خروجی همهٔ اعدادِ محاسبهشده را نگه میدارد. برایِ نمونه، خانهٔ اولِ بازسازی برابرِ۰٫۶×۳×۰٫۸+(−۰٫۸)×۱×(−۰٫۶)=۱٫۹۲ است. محاسبه فقط از جدولِ ازپیشنوشتهشده کپی نشده؛ تابع از خودِ A عاملها را به دست میآورد و سپس آزمون میکند.
اگر فقط مؤلفهٔ نخست را نگه داریم چه میشود؟
حاصلِ رتبهٔ یک، سطرهایِ(۱٫۴۴،۱٫۰۸)، (۱٫۹۲،۱٫۴۴) و(۰،۰) دارد. مثلاً خانهٔ نخست از۱٫۹۲به۱٫۴۴ میرود. مجموعِ مربعِ اختلافِ شش خانه۱ است و ریشهٔ آن، نرمِ Frobeniusِ خطا، نیز۱ میشود. بازسازی با هر دو مؤلفه در همین اجرایِ ممیزشناور خطایِ مربعِ کمتر از۱۰بهتوانِ−۲۴ دارد؛ آن را تضمینِ خطایِ صفر در همهٔ محاسبات نمینامیم.
اینجا مؤلفهٔ حذفشده مقدارِ تکین۱ دارد؛ مربعِ آن با مجموعِ مربعِ اختلافها برابر شده است. این مشاهده را با اعدادِ تمرین کنترل میکنیم. هیچ برچسبِ هدف، طبقهبند یا آزمونِ کاربردی وجود ندارد که از این خطا، درصدِ موفقیتِ یک سیستم را نتیجه بگیریم. واحد و مقیاسِ ورودی هم معنایِ اندازهٔ خطا را عوض میکند.
چرا ممکن است علامتِ خروجیِ دو حلکننده فرق کند؟
اگر ستونِ اولِ U و همان ستونِ V هر دو منفی شوند، حاصلضرب تغییر نمیکند؛ کد این حالت را واقعاً میآزماید. بنابراین مقایسهٔ خامِ علامتها معیارِ کافیِ درستبودن نیست. در مقدارهایِ تکینِ برابر، جهتهایِ یک زیرفضا میتوانند انتخابِ متفاوتی داشته باشند. برایِ کنترل، شکل، تعامد و بازسازی را بررسی کنید.
حلکنندهٔ این فایل چه محدودیتی دارد؟
کد فقط ماتریسِ حقیقیِ دوستونه با دستکم دو سطر، اعدادِ متناهی، رتبهٔ کامل و مقدارهایِ تکینِ متمایز را میپذیرد. دو ورودیِ رتبهٔ یک و مقدارهایِ برابر عمداً رد میشوند؛ این به معنیِ نداشتنِ SVD برایِ آنها نیست. آستانهٔ۱۰بهتوانِ−۱۰ قراردادِ همین تمرین است و معیارِ عمومیِ تشخیصِ رتبه نیست.
ساختنِ AᵀA میتواند حساسیتِ عددی را تشدید کند. این روشِ کوچک را جایگزینِ حلکنندهٔ پایدارِ عمومی نگذارید. مستنداتِ NumPy مرجعِ تعریف و قراردادِ عاملهاست؛ در این تمرین NumPy، LAPACK، فشردهسازیِ تصویر یا آموزشِ مدل اجرا نشده است.
فرقِ این تمرین با PCA و LoRA
مثالِ PCA داده را مرکز میکند و سهمِ واریانس و فرافکنی را بررسی میکند؛ اینجا تجزیهٔ دوطرفهٔ خودِ ماتریسِ غیرمرکزشده موضوع است. LoRA دربارهٔ آموزشِ تغییرِ کمرتبهٔ وزن است؛ عاملهایِ آن الزاماً SVD نیستند. برایِ دنبالکردنِ ابعاد، بردار و ماتریس را ببینید. اگر مسئلهٔ عملیِ شما پاسخگوییِ مشتری است، نیاز را در راهکارهایِ اپرا مطرح کنید؛ این آموزش اعلامِ وجودِ سرویسِ SVD در محصول نیست.
فایل تمرین و منبع
حلکنندهٔ محدود و آزمونِ دوطرفِ تجزیه؛ Python · U، مقدارهایِ تکین، V و خطایِ واقعیِ دو بازسازی
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.