Singulärvärdesuppdelning

Inom linjär algebra är singulärvärdesuppdelning (SVD), ibland kallat singulärvärdesfaktorisering eller singulärvärdesdekomposition, en sorts matrisfaktorisering. Alla reella och komplexa matriser kan singulärvärdefaktoriseras.

Definition

För en matris A av storlek m × n {\displaystyle m\times n} är singulärvärdesuppdelningen

A = U Σ V {\displaystyle A=U\Sigma V^{*}\,}

där U är en kvadratisk unitär m × m {\displaystyle m\times m} -matris, Σ {\displaystyle \Sigma } en är en diagonal och icke-negativ m × n {\displaystyle m\times n} -matris och V {\displaystyle V^{*}} betecknar det hermiteska konjugatet till V, som är en unitär n × n {\displaystyle n\times n} -matris. Matrisen Σ {\displaystyle \Sigma } har singulärvärdena till A {\displaystyle A} i sin diagonal, och vanlig praxis är att dessa singulärvärden ordnas i storleksordning med det största singulärvärdet först vänsterifrån i Σ {\displaystyle \Sigma } .

Singulärvärdesuppdelning är inte entydig. Exempelvis är U K ( m , m ) Σ ( V K ( n , n ) ) {\displaystyle UK_{(m,m)}\Sigma (VK_{(n,n)})^{*}} också en giltig uppdelning, där K ( m , m ) {\displaystyle K_{(m,m)}} och K ( n , n ) {\displaystyle K_{(n,n)}} är diagonalmatriser med e i θ {\displaystyle e^{i\theta }} i diagonalen, för godtyckligt värde på θ {\displaystyle \theta } .

Singulärvärdesuppdelning på summaform

Man kan skriva om singulärvärdesuppdelningen A = U Σ V {\displaystyle A=U\Sigma V^{*}} , där matrisen A har rang r, som en summa med r stycken matriser, så att varje matris i summan får rang 1, enligt nedan.

A = i = 1 r σ i u i v i rang r = σ 1 u 1 v 1 rang 1 + + σ r u r v r rang 1 {\displaystyle A=\underbrace {\sum _{i=1}^{r}\sigma _{i}{\boldsymbol {u}}_{i}{\boldsymbol {v}}_{i}^{*}} _{\mbox{rang r}}=\underbrace {\sigma _{1}{\boldsymbol {u}}_{1}{\boldsymbol {v}}_{1}^{*}} _{\mbox{rang 1}}+\ldots +\underbrace {\sigma _{r}{\boldsymbol {u}}_{r}{\boldsymbol {v}}_{r}^{*}} _{\mbox{rang 1}}}

Här är σ i {\displaystyle \sigma _{i}} singulärvärde nummer i {\displaystyle i} till A, u i {\displaystyle {\boldsymbol {u}}_{i}} kolonnvektor i {\displaystyle i} i U och v i {\displaystyle {\boldsymbol {v}}_{i}^{*}} radvektor i {\displaystyle i} i V.

Tunn singulärvärdesuppdelning

Tunn singulärvärdesuppdelning fås genom att enbart beräkna de n vektorer i U som korresponderar med radvektorer i V {\displaystyle V^{*}} . Övriga kolumnvektorer i U beräknas inte, och därmed går det mycket snabbare att beräkna en tunn singulärvärdesuppdelning jämfört med en vanlig singulärvärdesuppdelning.

A = U n Σ n V {\displaystyle A=U_{n}\Sigma _{n}V^{*}\,}

Matrisen U n {\displaystyle U_{n}} blir då en m × n {\displaystyle m\times n} -matris, Σ n {\displaystyle \Sigma _{n}} en n × n {\displaystyle n\times n} -matris och V en n × n {\displaystyle n\times n} -matris.

Tunn singulärvärdesuppdelning är i synnerhet mer beräkningseffektiv än vanlig singulärvärdesuppdelning om n m {\displaystyle n\ll m} .

Kompakt singulärvärdesuppdelning

Kompakt singulärvärdesuppdelning fås genom att enbart beräkna de r kolumnerna i U och de r raderna i V {\displaystyle V^{*}} som korresponderar mot nollskilda singulärvärden. Då fås:

A = U r Σ r V r {\displaystyle A=U_{r}\Sigma _{r}V_{r}^{*}}

Här är U r {\displaystyle U_{r}} en m × r {\displaystyle m\times r} -matris, Σ r {\displaystyle \Sigma _{r}} en diagonal r × r {\displaystyle r\times r} -matris och V r {\displaystyle V_{r}^{*}} en r × n {\displaystyle r\times n} -matris.

Kompakt singulärvärdesuppdelning är mer beräkningseffektiv än tunn singulärvärdesuppdelning om r n {\displaystyle r\ll n} .

Beräkning

Metod anpassad för beräkning utförd av människor

För en m × n {\displaystyle m\times n} -matris A fås singulärvärdesuppdelningen i ett fåtal steg. Man börjar med att beräkna den kvadratiska matrisen A A {\displaystyle A^{*}A} . Varför man gör detta syns tydligare om man skriver om A {\displaystyle A} med singulärvärdesuppdelning:

A A = ( U Σ V ) U Σ V = V Σ U U = I Σ V = V Σ Σ V   = V ( | σ 1 | 2 | σ 2 | 2 | σ k | 2 ) Σ ~ V , {\displaystyle A^{*}A=(U\Sigma V^{*})^{*}U\Sigma V^{*}=V\Sigma ^{*}\underbrace {U^{*}U} _{=I}\Sigma V^{*}=V\Sigma ^{*}\Sigma V^{*}\ =V\underbrace {\begin{pmatrix}|\sigma _{1}|^{2}&&&\\&|\sigma _{2}|^{2}&&\\&&\ddots &&\\&&&|\sigma _{k}|^{2}\end{pmatrix}} _{\tilde {\Sigma }}V^{*},}

Spektralsatsen för hermiteska matriser säger att alla hermiteska matriser M kan skrivas som M = W Λ W {\displaystyle M=W\Lambda W^{*}} , där Λ {\displaystyle \Lambda } är en diagonal matris med egenvärdena till matrisen M i diagonalen. Kolonnvektorerna till W utgörs av egenvektorerna till matrisen M , som i sin tur utgör en ortonormerad bas. Notera att eftersom M är en hermitesk matris har den enbart reella egenvärden.

Eftersom A A {\displaystyle A^{*}A} är en hermitesk matris ( ( A A ) = A A = A A {\displaystyle (A^{*}A)^{*}=A^{*}A^{**}=A^{*}A} ) har vi alltså likheten

V Σ ~ V = W Λ W {\displaystyle V{\tilde {\Sigma }}V^{*}=W\Lambda W^{*}\,}

Eftersom singulärvärdena till A är positiva (alltså är | σ i | = σ i {\displaystyle |\sigma _{i}|=\sigma _{i}} ) ser man att dessa fås genom att ta roten ur egenvärdena till A A {\displaystyle A^{*}A} , dessutom ser man att V fås genom att beräkna egenvektorer till matrisen A A {\displaystyle A^{*}A} .

Med A {\displaystyle A} , V {\displaystyle V} och Σ {\displaystyle \Sigma } kända beräknas U {\displaystyle U} enkelt genom att ställa upp A V = U Σ {\displaystyle AV=U\Sigma } . Eftersom Σ {\displaystyle \Sigma } är en diagonal matris är det enkelt att beräkna likheten. Ifall, för m × n {\displaystyle m\times n} -matrisen A, m n {\displaystyle m\neq n} eller ifall matrisen A inte har full rang kommer några kolonner inte att fås i detta steg, eftersom de multipliceras med 0. Dessa kolonnvektorer väljs då med fördel så att matrisen U blir unitär.

Alternativt kan man beräkna U genom att ställa upp A A {\displaystyle AA^{*}} , då har man istället V som obekant och V kan beräknas som förklaras ovan. Man kan även beräkna U samt V separat genom att ställa upp A A {\displaystyle A^{*}A} och A A {\displaystyle AA^{*}} , denna metod innebär dock oftast mer arbete då man måste beräkna egenvektorer till två matriser.

Exempel

A = ( 1 0 0 1 1 2 ) , m = 3 , n = 2 , reellt ( A = A T ) {\displaystyle A={\begin{pmatrix}1&0\\0&1\\-1&2\end{pmatrix}}\;,\;m=3\;,\;n=2\;,\;{\mbox{reellt}}(A^{*}=A^{T})}

Man börjar med att beräkna A A {\displaystyle A^{*}A} .

A A = ( 1 0 1 0 1 2 ) ( 1 0 0 1 1 2 ) = ( 2 2 2 5 ) {\displaystyle A^{*}A={\begin{pmatrix}1&0&-1\\0&1&2\end{pmatrix}}{\begin{pmatrix}1&0\\0&1\\-1&2\end{pmatrix}}={\begin{pmatrix}2&-2\\-2&5\end{pmatrix}}}

Nu beräknar man egenvärden och egenvektorer till A A {\displaystyle A^{*}A} genom att ställa upp det karakteristiska polynomet, för exempel på detta se artikeln om egenvärden och egenvektorer. Vi får egenvärdena till λ 1 = 6 , λ 2 = 1 {\displaystyle \lambda _{1}=6,\,\lambda _{2}=1} , och därmed blir singulärvärdena σ 1 = 6 , σ 2 = 1 {\displaystyle \sigma _{1}={\sqrt {6}},\,\sigma _{2}=1} . Vi får egenvektorerna (normerade) enligt nedan:

v 1 = 1 5 ( 1 2 ) , v 2 = 1 5 ( 2 1 ) V = 1 5 ( 1 2 2 1 ) {\displaystyle {\boldsymbol {v}}_{1}={\frac {1}{\sqrt {5}}}{\begin{pmatrix}1\\-2\end{pmatrix}},{\boldsymbol {v}}_{2}={\frac {1}{\sqrt {5}}}{\begin{pmatrix}2\\1\end{pmatrix}}\Rightarrow V={\frac {1}{\sqrt {5}}}{\begin{pmatrix}1&2\\-2&1\end{pmatrix}}}

Nu beräknar man U med hjälp av sambandet A V = U Σ {\displaystyle AV=U\Sigma }

A V = 1 5 ( 1 2 2 1 5 0 ) = ( | | | u 1 u 2 u 3 | | | ) ( 6 0 0 1 0 0 ) = U Σ {\displaystyle AV={\frac {1}{\sqrt {5}}}{\begin{pmatrix}1&2\\-2&1\\-5&0\end{pmatrix}}={\begin{pmatrix}|&|&|\\{\boldsymbol {u}}_{1}&{\boldsymbol {u}}_{2}&{\boldsymbol {u}}_{3}\\|&|&|\end{pmatrix}}{\begin{pmatrix}{\sqrt {6}}&0\\0&1\\0&0\end{pmatrix}}=U\Sigma \,}

Man ser att u 1 {\displaystyle {\boldsymbol {u}}_{1}} kommer multipliceras med 6 {\displaystyle {\sqrt {6}}} , att u 2 {\displaystyle {\boldsymbol {u}}_{2}} kommer multipliceras med 1 och att u 3 {\displaystyle {\boldsymbol {u}}_{3}} kommer multipliceras med 0. Nu väljer man u 1 {\displaystyle {\boldsymbol {u}}_{1}} och u 2 {\displaystyle {\boldsymbol {u}}_{2}} så att likheten A V = U Σ {\displaystyle AV=U\Sigma } gäller, u 3 {\displaystyle {\boldsymbol {u}}_{3}} väljs ortogonal mot u 1 {\displaystyle {\boldsymbol {u}}_{1}} och u 2 {\displaystyle {\boldsymbol {u}}_{2}} .

u 1 = 1 30 ( 1 2 5 ) , u 2 = 1 5 ( 2 1 0 ) , u 3 = 1 6 ( 1 2 1 ) U = ( 1 30 2 5 1 6 2 30 1 5 2 6 5 30 0 1 6 ) {\displaystyle {\boldsymbol {u}}_{1}={\frac {1}{\sqrt {30}}}{\begin{pmatrix}1\\-2\\-5\end{pmatrix}},{\boldsymbol {u}}_{2}={\frac {1}{\sqrt {5}}}{\begin{pmatrix}2\\1\\0\end{pmatrix}},{\boldsymbol {u}}_{3}={\frac {1}{\sqrt {6}}}{\begin{pmatrix}1\\-2\\1\end{pmatrix}}\Rightarrow U={\begin{pmatrix}{\frac {1}{\sqrt {30}}}&{\frac {2}{\sqrt {5}}}&{\frac {1}{\sqrt {6}}}\\{\frac {-2}{\sqrt {30}}}&{\frac {1}{\sqrt {5}}}&{\frac {-2}{\sqrt {6}}}\\{\frac {-5}{\sqrt {30}}}&0&{\frac {1}{\sqrt {6}}}\end{pmatrix}}\,}

Alltså har vi vår singulärvärdesuppdelning enligt nedan.

Singulärvärdesuppdelningen på vanlig form:

( 1 0 0 1 1 2 ) A = ( 1 30 2 5 1 6 2 30 1 5 2 6 5 30 0 1 6 ) U ( 6 0 0 1 0 0 ) Σ ( 1 5 2 5 2 5 1 5 ) V {\displaystyle \underbrace {\begin{pmatrix}1&0\\0&1\\-1&2\end{pmatrix}} _{A}=\underbrace {\begin{pmatrix}{\frac {1}{\sqrt {30}}}&{\frac {2}{\sqrt {5}}}&{\frac {1}{\sqrt {6}}}\\{\frac {-2}{\sqrt {30}}}&{\frac {1}{\sqrt {5}}}&{\frac {-2}{\sqrt {6}}}\\{\frac {-5}{\sqrt {30}}}&0&{\frac {1}{\sqrt {6}}}\end{pmatrix}} _{U}\underbrace {\begin{pmatrix}{\sqrt {6}}&0\\0&1\\0&0\end{pmatrix}} _{\Sigma }\underbrace {\begin{pmatrix}{\frac {1}{\sqrt {5}}}&{\frac {-2}{\sqrt {5}}}\\{\frac {2}{\sqrt {5}}}&{\frac {1}{\sqrt {5}}}\end{pmatrix}} _{V^{*}}}

Singulärvärdesuppdelningen på summaform:

( 1 0 0 1 1 2 ) A = 6 σ 1 ( 1 30 2 30 5 30 ) u 1 ( 1 5 2 5 ) v 1 + 1 σ 2 ( 2 5 1 5 0 ) u 2 ( 2 5 1 5 ) v 2 {\displaystyle \underbrace {\begin{pmatrix}1&0\\0&1\\-1&2\end{pmatrix}} _{A}=\underbrace {\sqrt {6}} _{\sigma _{1}}\underbrace {\begin{pmatrix}{\frac {1}{\sqrt {30}}}\\{\frac {-2}{\sqrt {30}}}\\{\frac {-5}{\sqrt {30}}}\end{pmatrix}} _{{\boldsymbol {u}}_{1}}\underbrace {\begin{pmatrix}{\frac {1}{\sqrt {5}}}&{\frac {-2}{\sqrt {5}}}\end{pmatrix}} _{{\boldsymbol {v}}_{1}^{*}}+\underbrace {1} _{\sigma _{2}}\underbrace {\begin{pmatrix}{\frac {2}{\sqrt {5}}}\\{\frac {1}{\sqrt {5}}}\\0\end{pmatrix}} _{{\boldsymbol {u}}_{2}}\underbrace {\begin{pmatrix}{\frac {2}{\sqrt {5}}}&{\frac {1}{\sqrt {5}}}\end{pmatrix}} _{{\boldsymbol {v}}_{2}^{*}}}

Singulärvärdesuppdelningen på tunn form:

( 1 0 0 1 1 2 ) A = ( 1 30 2 5 2 30 1 5 5 30 0 ) U 2 ( 6 0 0 1 ) Σ 2 ( 1 5 2 5 2 5 1 5 ) V {\displaystyle \underbrace {\begin{pmatrix}1&0\\0&1\\-1&2\end{pmatrix}} _{A}=\underbrace {\begin{pmatrix}{\frac {1}{\sqrt {30}}}&{\frac {2}{\sqrt {5}}}\\{\frac {-2}{\sqrt {30}}}&{\frac {1}{\sqrt {5}}}\\{\frac {-5}{\sqrt {30}}}&0\end{pmatrix}} _{U_{2}}\underbrace {\begin{pmatrix}{\sqrt {6}}&0\\0&1\end{pmatrix}} _{\Sigma _{2}}\underbrace {\begin{pmatrix}{\frac {1}{\sqrt {5}}}&{\frac {-2}{\sqrt {5}}}\\{\frac {2}{\sqrt {5}}}&{\frac {1}{\sqrt {5}}}\end{pmatrix}} _{V^{*}}}

Numerisk beräkningsmetod

Singulärvärdesuppdelningen till en matris A beräknas typiskt i två steg. I det första steget reduceras A till en bidiagonal matris. Detta tar O ( m n 2 ) {\displaystyle O(mn^{2})} flyttalsoperationer, om m n {\displaystyle m\geq n} .

Det andra steget går ut på att beräkna singulärvärdesuppdelningen till denna bidiagonala matris. Detta steg beräknas iterativt med en bestämd precision. Om denna precision antas konstant tar det andra steget O ( n ) {\displaystyle O(n)} iterationer, som var kostar O ( n ) {\displaystyle O(n)} flyttalsoperationer. Därmed är det första steget det dyrare, och den totala kostnaden är O ( m n 2 ) {\displaystyle O(mn^{2})} flyttalsoperationer.

Tillämpningar

Beräkning av pseudoinvers

Man kan enkelt beräkna Moore-Penrose pseudoinvers, betecknat {\displaystyle \dagger } nedan, till en matris A med hjälp av singulärvärdesuppdelning. Om A har singulärvärdesuppdelning enligt A = U Σ V {\displaystyle A=U\Sigma V^{*}} fås Moore-Penrose pseudoinvers till A enligt nedan.

A = V Σ U {\displaystyle A^{\dagger }=V\Sigma ^{\dagger }U^{*}\,}

Här beräknar man Σ genom att först ta inversen av varje nollskillt singulärvärde i Σ, de singulärvärden som var 0 i Σ förblir 0 i Σ, och sedan transponerar man resultatet. Moore-Penrose pseudoinvers används bland annat för att lösa linjära minstakvadratproblem.

Bestämning av de fyra fundamentala underrummen samt rang

Man kan enkelt bestämma rang samt de fyra fundamentala underrummen (värderummet och nollrummet till en given matris och matrisens hermiteska konjugat) till en matris A genom att titta på matrisens singulärvärdesuppdelning. Antag en singulärvärdesuppdelning enligt nedan, där σ 1 {\displaystyle \sigma _{1}} till σ r {\displaystyle \sigma _{r}} är samtliga nollskillda singulärvärden.

A ( m , n ) = ( | | | | u 1 u r u r + 1 u m | | | | ) m × m ( σ 1 σ 2 σ r ) m × n ( v ¯ 1 v ¯ r v ¯ r + 1 v ¯ n ) n × n {\displaystyle A_{(m,n)}=\underbrace {\begin{pmatrix}|&&|&|&&|\\u_{1}&\cdots &u_{r}&u_{r+1}&\cdots &u_{m}\\|&&|&|&&|\end{pmatrix}} _{m\times m}\underbrace {\begin{pmatrix}\sigma _{1}&&&&&\\&\sigma _{2}&&&&\\&&\ddots &&&\\&&&\sigma _{r}&&\\&&&&&\end{pmatrix}} _{m\times n}\underbrace {\begin{pmatrix}-&{\bar {v}}_{1}&-\\-&\vdots &-\\-&{\bar {v}}_{r}&-\\-&{\bar {v}}_{r+1}&-\\&\vdots &\\-&{\bar {v}}_{n}&-\end{pmatrix}} _{n\times n}\,}

Då fås följande:

rank A = dim ( V ( A ) ) = r {\displaystyle \operatorname {rank} \,A=\dim(V(A))=r\,}
V ( A ) = N ( A ) = [ ( | u 1 | ) , , ( | u r | ) ] C m {\displaystyle V(A)=N(A^{*})^{\perp }=\left[{\begin{pmatrix}|\\u_{1}\\|\end{pmatrix}},\,{\begin{matrix}\\\cdots \\\end{matrix}}\,,{\begin{pmatrix}|\\u_{r}\\|\end{pmatrix}}\right]\,\subset \,\mathbb {C} ^{m}}
V ( A ) = N ( A ) = [ ( | v 1 | ) , , ( | v r | ) ] C n {\displaystyle V(A^{*})=N(A)^{\perp }=\left[{\begin{pmatrix}|\\v_{1}\\|\end{pmatrix}},\,{\begin{matrix}\\\cdots \\\end{matrix}}\,,{\begin{pmatrix}|\\v_{r}\\|\end{pmatrix}}\right]\,\subset \,\mathbb {C} ^{n}}
N ( A ) = V ( A ) = [ ( | v r + 1 | ) , , ( | v n | ) ] C n {\displaystyle N(A)=V(A^{*})^{\perp }=\left[{\begin{pmatrix}|\\v_{r+1}\\|\end{pmatrix}},\,{\begin{matrix}\\\cdots \\\end{matrix}}\,,{\begin{pmatrix}|\\v_{n}\\|\end{pmatrix}}\right]\,\subset \,\mathbb {C} ^{n}}
N ( A ) = V ( A ) = [ ( | u r + 1 | ) , , ( | u m | ) ] C m {\displaystyle N(A^{*})=V(A)^{\perp }=\left[{\begin{pmatrix}|\\u_{r+1}\\|\end{pmatrix}},\,{\begin{matrix}\\\cdots \\\end{matrix}}\,,{\begin{pmatrix}|\\u_{m}\\|\end{pmatrix}}\right]\,\subset \,\mathbb {C} ^{m}}

Approximation med matris av lägre rang

En vanlig tillämpning av singulärvärdesuppdelning är att approximera en given matris med en annan liknande matris av lägre rang. Om man vill approximera en matris A {\displaystyle A} av rang r med en matris A ~ {\displaystyle {\tilde {A}}} , som har rang R {\displaystyle R} , där R < r {\displaystyle R<r} , fås A ~ {\displaystyle {\tilde {A}}} med hjälp av singulärvärdesuppdelningen på summaform enligt nedan:

A A ~ = i = 1 R σ i u i v i {\displaystyle A\approx {\tilde {A}}=\sum _{i=1}^{R}\sigma _{i}{\boldsymbol {u}}_{i}{\boldsymbol {v}}_{i}^{*}\,}

I de flesta tillämpningar är felet viktigt, vi betecknar felet B enligt följande.

B = A A ~ = A i = 1 R σ i u i v i {\displaystyle B=A-{\tilde {A}}=A-\sum _{i=1}^{R}\sigma _{i}{\boldsymbol {u}}_{i}{\boldsymbol {v}}_{i}^{*}\,}

Genom operatornorm eller frobeniusnorm av B fås felet vid approximationen A A ~ {\displaystyle A\approx {\tilde {A}}} , dessa normer kan enkelt beräknas med hjälp av singulärvärdena enligt vad som visas nedan. Vilken av normerna som är bäst lämpad för feluppskattningen beror på tillämpning.

| | B | | O P = σ R + 1 {\displaystyle ||B||_{OP}=\sigma _{R+1}\,}
| | B | | F = σ R + 1 2 + + σ r 2 {\displaystyle ||B||_{F}={\sqrt {\sigma _{R+1}^{2}+\ldots +\sigma _{r}^{2}}}\,}

Denna metod för approximation används inom många tillämpningar, bland annat inom signalbehandlning. Om man till exempel har brus av storleksordningen σ R + 1 {\displaystyle \sigma _{R+1}} så kan man slänga bort termer som är små jämfört med bruset så att A ~ {\displaystyle {\tilde {A}}} ger en förbättrad signal.

Andra vanliga användningsområden

Se även

Referenser

  • Treil, Sergei. Linear Algebra Done Wrong, 2004, Brown University. Tillgänglig: http://www.math.brown.edu/~treil/index.html


v  r
Linjär algebra
Grundläggande begrepp
Skalär · Vektor · Noll · Ortogonalitet · Ekvationssystem · Rum · Linjärkombination · Inre produkt · Oberoende · Bas · Radrum · Kolonnrum · Nollrum · Gram-Schimdt · Egenvärde · Hölje · Linjäritet
Bild på euklidiska rummet
Vektoralgebra
Matriser
Elementär · Block · Enhet · Determinant · Norm · Rang · Transformation · Rotation · Invers · Cramers regel · Trappstegsform · Spår · Transponat · Gausselimination · Symmetri · Addition
Multilinjär algebra
Geometrisk algebra · Yttre algebra · Bivektor · Multivektor · Tensor
Konstruktioner
Delrum · Dualrum · Funktionsrum · Kvotrum · Tensorprodukt
Numerik
Kategori Kategori