Strona główna Matematyka i Analiza Kompresja SVD

🔢 Kompresja SVD

Zachowaj tylko k największych wartości osobliwych obrazu i zobacz, jak niewiele warstw rzędu 1 wystarczy, by zdjęcie znów stało się rozpoznawalne.

Matematyka i Analiza2DŚredni60 FPS
svd-compression ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O kompresji obrazu metodą SVD

Rozkład według wartości osobliwych (SVD) rozkłada dowolną macierz M o wymiarach m×n na M = UΣVᵀ, gdzie U i V są macierzami ortogonalnymi, a Σ jest macierzą diagonalną nieujemnych wartości osobliwych σ₁ ≥ σ₂ ≥ … ≥ 0. Zastosowany do obrazu (traktowanego jako macierz wartości pikseli) rozkład ten pozwala myśleć o wartościach osobliwych jako mierze „ważności” każdej warstwy struktury: pierwsze kilka wartości osobliwych oddaje ogólne kształty i kontrast, podczas gdy późniejsze kodują drobne szczegóły i szum. Zachowanie jedynie k największych wartości osobliwych daje najlepszą możliwą aproksymację rzędu k w sensie minimalizacji normy Frobeniusa błędu — wynik znany jako twierdzenie Eckarta-Younga (1936).

Ta symulacja rozkłada testowy obraz 64×64 na do 64 składowych osobliwych. Przeciągnij suwak rzędu, aby dodać lub usunąć składowe, i obserwuj, jak jakość rekonstrukcji zmienia się w czasie rzeczywistym. Wykres słupkowy poniżej obrazów pokazuje widmo wartości osobliwych — składowe na lewo od linii odcięcia są uwzględnione; te na prawo są odrzucane.

Najczęściej zadawane pytania

Co właściwie oblicza SVD?

SVD rozkłada macierz M na M = UΣVᵀ. Kolumny U to lewe wektory osobliwe (kierunki wyjściowe), kolumny V to prawe wektory osobliwe (kierunki wejściowe), a elementy diagonalne Σ to wartości osobliwe — współczynniki skalujące. Każda macierz ma swoje SVD; w przeciwieństwie do rozkładu na wartości własne działa ono również dla macierzy niekwadratowych i niesymetrycznych.

Dlaczego zachowanie większej liczby wartości osobliwych daje lepszy obraz?

Każda trójka osobliwa (σᵢ, uᵢ, vᵢ) dodaje jedną warstwę rzędu 1 σᵢ·uᵢ·vᵢᵀ do rekonstrukcji. Większe wartości osobliwe wnoszą więcej energii (struktury) do obrazu. Zwiększając rząd k, przechwytujesz więcej całkowitej energii Frobeniusa ∑σᵢ², a błąd aproksymacji ‖M − Mₖ‖² = σₖ₊₁² + … + σᵣ² maleje. Gładkie obrazy potrzebują mniej składowych niż zaszumione lub bardzo szczegółowe.

Czym jest współczynnik kompresji i jak się go oblicza?

Przechowywanie SVD rzędu k dla obrazu m×n wymaga k·(m + n + 1) liczb zamiast m·n. Współczynnik kompresji to zatem k(m+n+1)/(mn). Dla obrazu 64×64 przy k=8 daje to 8×129/4096 ≈ 0,25, czyli przechowujesz jedynie ćwierć oryginalnych danych. Kompromisem jest jakość: bardzo niskie rzędy tracą drobne detale.

Czym jest twierdzenie Eckarta-Younga?

Twierdzenie Eckarta-Younga-Mirsky'ego (1936) mówi, że aproksymacja SVD rzędu k Mₖ = Σᵢ₌₁ᵏ σᵢ uᵢ vᵢᵀ jest najbliższą macierzą rzędu k dla M zarówno w normie Frobeniusa, jak i normie spektralnej. Żadna inna macierz rzędu k nie może być bliższa. To czyni SVD matematycznie optymalną strategią kompresji stratnej dla macierzy.

Jak wartości osobliwe wiążą się z wartościami własnymi?

Wartości osobliwe M to pierwiastki kwadratowe wartości własnych MᵀM (lub MMᵀ). Jeśli M jest symetryczna i dodatnio półokreślona, jej wartości osobliwe równają się jej wartościom własnym. Dla macierzy ogólnej wartości własne mogą być zespolone, podczas gdy wartości osobliwe są zawsze rzeczywiste i nieujemne. Największa wartość osobliwa równa się normie spektralnej (norma macierzowa 2) macierzy M.

Dlaczego obraz szumu kompresuje się słabo?

Losowy szum ma wszystkie wartości osobliwe mniej więcej równe — energia jest rozłożona równomiernie na wszystkie składowe zamiast być skoncentrowana w pierwszych kilku. Nie ma niskowymiarowej struktury do wykorzystania. Naturalne obrazy mają natomiast stromo opadające widmo wartości osobliwych, ponieważ sąsiednie piksele są skorelowane, a gładkie obszary dominują. Dlatego JPEG i inne kodeki obrazu osiągają wysoką kompresję na zdjęciach, ale nie na danych losowych.

Jakie zastosowania w świecie rzeczywistym ma SVD poza obrazami?

SVD jest wszechobecne: jest silnikiem stojącym za PCA w analizie danych, analizą ukrytej semantyki w NLP (odnajdywanie ukrytych tematów w tekście), filtrowaniem kolaboratywnym w systemach rekomendacyjnych (Netflix Prize), obliczaniem pseudoodwrotności w numerycznej algebrze liniowej oraz teorii sterowania (zredukowane modele zbalansowane). W uczeniu maszynowym macierze wag sieci neuronowych czasem aproksymuje się niskim rzędem za pomocą SVD, aby przyspieszyć wnioskowanie.

Jaka jest różnica między SVD a rozkładem na wartości własne?

Rozkład na wartości własne A = PDP⁻¹ wymaga, aby A była kwadratowa i diagonalizowalna, a wektory własne tworzą kolumny P. SVD M = UΣVᵀ działa dla dowolnej macierzy (w tym niekwadratowej), używa dwóch różnych baz ortogonalnych (U i V) i zawsze istnieje. Dla macierzy symetrycznych dodatnio półokreślonych oba rozkłady się pokrywają: U = V = macierz wektorów własnych, a Σ = macierz wartości własnych.

Ile wartości osobliwych ma macierz obrazu m×n?

Macierz m×n ma r = min(m, n) niezerowych wartości osobliwych, gdzie r to jej rząd. Obraz 64×64 ma zatem co najwyżej 64 wartości osobliwe. W praktyce naturalne obrazy mają efektywny rząd numeryczny znacznie poniżej 64, ponieważ wartości osobliwe szybko zanikają do zera — krzywa skumulowanej energii szybko się spłaszcza, co oznacza, że pierwsze ~10–20 składowych przechwytuje ponad 95% całkowitej wariancji.

Czym jest błąd Frobeniusa pokazany w panelu statystyk?

Norma Frobeniusa ‖A‖_F = √(∑ᵢⱼ aᵢⱼ²) mierzy całkowity „rozmiar” macierzy jako pierwiastek z sumy kwadratów wszystkich elementów. Wyświetlany tu błąd Frobeniusa to ‖M − Mₖ‖_F = √(σₖ₊₁² + … + σᵣ²) — pierwiastek z energii zawartej w odrzuconych wartościach osobliwych. Zgodnie z twierdzeniem Eckarta-Younga żadna aproksymacja rzędu k nie może osiągnąć mniejszego błędu Frobeniusa.

Podobne symulacje