פירוק לערכים סינגולריים

[שמאל|ממוזער|250px|הדגמה חזותית של פירוק SVD של מטריצה ממשית דו-ממדית ''M'' שהיא ''Shear transformation''. תחילה, ניתן לראות את דיסק היחידה, בכחול, ועליו מסומנים שני וקטורי היחידה הקאנוניים. לאחר מכן ניתן לראות את הפעולה של ''M'', שמעתיקה את הדיסק ל[אליפסה. פירוק ה-SVD מפרק את *M* לשלוש העתקות פשוטות: העתקת סיבוב (rotation) *V**, העתקת מתיחה (scaling) *Σ* שמותחת את הנקודות לאורך מערכת הצירים המסובבת והעתקת סיבוב נוספת *U*. הערכים &sigma;1 ו-&sigma;2 של צירי האליפסה הם הערכים הסינגולריים של *M*.]]
**פירוק לערכים סינגולריים** (**Singular value decomposition - SVD**) היא שיטת פירוק באלגברה ליניארית של מטריצה מרוכבת או ממשית. לשיטה זו שימושים רבים באלגברה ליניארית חישובית, בחשבון מטריצות, בעיבוד אותות ובסטטיסטיקה.

פורמלית, פירוק לערכים סינגולריים של מטריצה ממשית או מרוכבת \mathbf{M} בעלת ממדים m \times n הוא פירוק מהצורה:
: \mathbf{M} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^*
כאשר *U* היא מטריצה אוניטרית ממשית או מרוכבת מממד m \times m, \boldsymbol{\Sigma} היא מטריצה אלכסונית מלבנית מממד \mathbf{m \times n} עם ערכים ממשיים לא-שליליים על האלכסון, ו-\mathbf{V}^* = \overline{\mathbf{V}^\top} (הצמודה ההרמיטית של \mathbf{V}) היא מטריצה אוניטרית ממשית או מרוכבת מממד n \times n. ערכי האלכסון של \boldsymbol{\Sigma}, \sigma_i = \boldsymbol{\Sigma}_{i,i}, נקראים **הערכים הסינגולריים** של \mathbf{M} והם מסודרים מהגדול לקטן. כמו כן, *m* העמודות של \mathbf{U} ו-*n* העמודות של \mathbf{V} נקראות **הווקטורים הסינגולריים השמאליים** ו**הווקטורים הסינגולריים הימניים** של \mathbf{M}, בהתאמה.

הפירוק מקיים את התכונות הבאות:
* הווקטורים הסינגולריים השמאליים של \mathbf{M} הם וקטורים עצמיים של \mathbf{M}\mathbf{M}^*.
* הווקטורים הסינגולריים הימניים של \mathbf{M} הם וקטורים עצמיים של \mathbf{M}^* \mathbf{M}.
* הערכים הסינגולריים השונים מאפס של \mathbf{M} (שעל האלכסון של \boldsymbol{\Sigma}) הם שורשים ריבועיים של הערכים עצמיים השונים מאפס הן של \mathbf{M}^* \mathbf{M} והן של \mathbf{M}\mathbf{M}^*.

את הפירוק ניתן לרשום גם כ-\mathbf{M} = \sum_{r=1}^{\operatorname{rank}(\mathbf{M})} \sigma_r \mathbf{U}_{\downarrow r} (\mathbf{V}^*)_{r \rightarrow}
כאשר \operatorname{rank}(\mathbf{M}) \le \min\{ m, n \} היא הדרגה של \mathbf{M}.

## דוגמה

עבור המטריצה

\mathbf{M} = \begin{bmatrix}
  1 & 0 & 0 & 0 & 2 \\
  0 & 0 & 3 & 0 & 0 \\
  0 & 0 & 0 & 0 & 0 \\
  0 & 2 & 0 & 0 & 0
\end{bmatrix}


הפירוק נתון על ידי \mathbf U\mathbf \Sigma \mathbf V^* באשר

\begin{align}
\mathbf{U} &= \begin{bmatrix}
  \color{Green}0 & \color{Blue}-1 & \color{Cyan}0 & \color{Emerald}0 \\
  \color{Green}-1 & \color{Blue}0 & \color{Cyan}0 & \color{Emerald}0 \\
  \color{Green}0 & \color{Blue}0 & \color{Cyan}0 & \color{Emerald}-1 \\
  \color{Green}0 & \color{Blue}0 & \color{Cyan}-1 & \color{Emerald}0
\end{bmatrix} \\[6pt]

\mathbf \Sigma &= \begin{bmatrix}
  3 &       0  &   0 &                    0  & \color{Gray}\mathit{0} \\
  0 & \sqrt{5} &   0 &                    0  & \color{Gray}\mathit{0} \\
  0 &       0  &   2 &                    0  & \color{Gray}\mathit{0} \\
  0 &       0  &   0 & \color{Red}\mathbf{0} & \color{Gray}\mathit{0}
\end{bmatrix} \\[6pt]

 \mathbf{V}^* &= \begin{bmatrix}
   \color{Violet}0        & \color{Violet}0    & \color{Violet}-1  & \color{Violet}0  &\color{Violet}0 \\
   \color{Plum}-\sqrt{0.2}& \color{Plum}0      & \color{Plum}0    & \color{Plum}0    &\color{Plum}-\sqrt{0.8} \\
   \color{Magenta}0       & \color{Magenta}-1  & \color{Magenta}0 & \color{Magenta}0 &\color{Magenta}0 \\
   \color{Orchid}0           & \color{Orchid}0  & \color{Orchid}0  & \color{Orchid}1  &\color{Orchid}0 \\
   \color{Purple} - \sqrt{0.8} & \color{Purple}0 & \color{Purple}0 & \color{Purple}0 & \color{Purple}\sqrt{0.2}
\end{bmatrix}
\end{align}

מטריצת הערכים הסינגולריים \boldsymbol{\Sigma}, שמבצעת מתיחה ושינוי סקלה, מורכבת רק מ-0ים מחוץ לאלכסון הראשי (כאשר העמודה שמחוץ לבלוק הריבועי המקסימלי מסומנת בכתב אפור נטוי) ואילו באלכסון הראשי רק אחד הערכים הסינגולריים הוא 0 (צבוע באדום). מכאן אפשר להסיק שדרגת המטריצה היא 3 (מספר הערכים הסינגולריים שאינם 0). המטריצות \mathbf{U} ו-\mathbf{V}^* הן אוניטריות, ומכיוון שהן ממשיות (כלומר: כל איבריהן הן מספרים ממשיים) הן גם אורתוגונליות. פירוש העובדה שהן אוניטריות היא:
\begin{align}
  \mathbf{U} \mathbf{U}^* &=
  \begin{bmatrix}
    1 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 \\
    0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 1
  \end{bmatrix} = \mathbf{I}_4 \\[6pt]
  \mathbf{V} \mathbf{V}^* &=
  \begin{bmatrix}
    1 & 0 & 0 & 0 & 0 \\
    0 & 1 & 0 & 0 & 0 \\
    0 & 0 & 1 & 0 & 0 \\
    0 & 0 & 0 & 1 & 0 \\
    0 & 0 & 0 & 0 & 1
  \end{bmatrix} = \mathbf{I}_5
\end{align}

## שימושים
ל-SVD שימושים רבים בדיסציפלינות רבות. השימושים הקלאסיים במתמטיקה כוללים:
* מציאת הדרגה (rank) של מטריצה. הדרגה שווה למספר הערכים הסינגולריים הגדולים מאפס.
* מציאת מרחב האפס (null space) ימני או שמאלי, בפתרון מערכת משוואות ליניאריות הומוגנית. מרחב האפס נפרס על ידי הווקטורים הסינגולריים המתאימים לערכים הסינגולרים שהם אפס.
* חישוב פסאודו-הופכי (Pseudo-Inverse) של מטריצה שלא בהכרח הפיכה ואף לא בהכרח ריבועית.
* חישוב PCA מבלי לחשב את מטריצת הקורלציה.
* מציאת קירוב על ידי מטריצה מדרגה נמוכה למטריצה כלשהי (Low Rank Approximation). הקירוב מתבצע על ידי איפוס של הערכים הסינגולרים הקטנים ושמירה של *k* הערכים הסינגולרים הגדולים ביותר. קירוב זה אופטימלי הן במובן הנורמה הספקטרלית והן במובן נורמת Frobenius. 
* הקירוב הטוב ביותר למטריצה כלשהי M בעזרת מטריצה אורתוגנלית תחת נורמת Frobenius. ידועה גם כבעיית "מיטת סדום". הפתרון נתון על ידי הביטוי UV^* , כאשר U ו-V מתקבלים מחישוב ה-SVD של M. שיטה זו משמשת למשל על-מנת למצוא את מטריצת הסיבוב (שהיא כמובן אורתוגונלית) בין שני סטים של נקודות דו-ממדיות.
* Condition number של מטריצה - מספר שאינו קטן מ-1, הקובע את יציבות הבעיה המתמטית ואת שגיאת החישוב המקסימלית העשויה להתקבל במחשב הפועל באריתמטיקה של נקודה צפה. מוגדר כ- \kappa(M)=\frac{\sigma_{\text{max}}}{\sigma_{\text{min}}}. ערך גדול משמעותו שהבעיה היא ill-conditioned. למרות שה- condition number מהווה מדד לשגיאת חישוב אפשרית, זוהי תכונה של המטריצה ולא של האלגוריתם או הייצוג האריתמטי בו משתמשים.

### חישוב Pseudo-Inverse
פירוק SVD יכול לשמש כדי לחשב את ה-Pseudo-Inverse של מטריצה, כאשר עבור *M* שהפירוק שלה הוא \mathbf{M} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^* ניתן למצוא את מטריצת ה-Pseudo-Inverse:
:\mathbf{M}^+ = \mathbf{V} \boldsymbol{\Sigma}^+ \mathbf{U}^*

כאשר Σ+ היא מטריצת ה-Pseudo-Inverse של Σ, המתקבלת על ידי החלפה של כל ערך שאינו אפס על גבי האלכסון בהופכי שלו ושחלוף המטריצה המתקבלת. אחד השימושים למטריצה זו הוא לפתרון בעיות בשיטת הריבועים הפחותים.

### נורמות
בעזרת הערכים הסינגולרים ניתן לחשב בקלות מספר נורמות של מטריצות ואף להגדיר נורמות חדשות:
* הערך הסינגולרי הגדול ביותר הוא נורמה. נורמה זו נקראת הנורמה הספקטרלית והיא שווה לנורמה p המושרית עבור p=2. באופן פורמלי: \sigma_1(M)=\|M\|_2=\sup \frac{\|Mx\|_2}{\|x\|_2}
* נורמת Frobenius, השווה לשורש סכום ריבועי איברי המטריצה, שווה גם לשורש סכום ריבועי הערכים הסינגולריים: \| M \|_F^2 = \sum_i \sum_j \vert m_{ij} \vert^2=\sum_r \sigma_r^2
* נורמת Ky-Fan, השווה לסכום k הערכים הסינגולרים הגדולים ביותר: \| M \|_{(k)} =\sum_{r=1}^k \sigma_r. כאשר סוכמים את כל הערכים הסינגולריים, הנורמה נקראת גם Nuclear Norm. נורמה זו, משמשת לעיתים (בעיקר בבעיות אופטימיזציה) כתחליף ל- rank, כיוון שהיא קמורה (convex) ורציפה. סימון מקובל עבור נורמת ה Nuclear הוא: \| M \|_*.
* נורמת Schatten, שהיא בעצם נורמת p הרגילה לווקטורים מופעלת על הערכים הסינגולריים: \| M \|_p = \left( \sum_r \sigma_r^p \right)^{1/p}. עבור p=2 מתקבלת נורמת Frobenius ועבור p=1 מתקבלת ה Nuclear norm.

## לקריאה נוספת
* Golub, Gene H.; Van Loan, Charles F. (2013), **Matrix Computations** (4th ed.), Johns Hopkins, .

## קישורים חיצוניים
* 
* 

קטגוריה:אלגברה ליניארית
קטגוריה:פירוק מטריצות