ГоловнаСтаттіМатематика

Стиснення SVD: Зображення – Це Сума Рангових Шарів

Розкладання значеньоснов сортує матрицю у шари залежно від зменшення важливості, а збереження лише кількох перших достатньо для розпізнавання обличчя.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Каждая матрица – это сумма простых элементов

Грейсцеле изображение – это просто матрица: одно число на пиксель, расположенное в рядах и столбцах. Разложение по сингулярным значениям (SVD) говорит о том, что любая такая матрица A, любой формы, может быть точно записана как сумма простых элементов ранга 1 — каждый из которых является столбцом вектора умноженным на строку вектор, масштабированному одним числом.

A = U Σ Vᵀ = Σᵢ σᵢ · uᵢ vᵢᵀ νᵢ, vᵢ — i-е столбцы U и V (ортонормальные "направленные" векторы) σᵢ — i-е сингулярное значение, σ1 ≥ σ2 ≥ σ3 ≥ ... ≥ 0 vᵢᵀ · uᵢ — матрица ранга 1: та же форма, что и A, но построенная только из двух векторов Ключевой момент в порядке: сингулярные значения σᵢ всегда отсортированы по убыванию, и каждое из них точно говорит вам, сколько вносит этот конкретный элемент ранга 1 в восстановление A. Первый слой, взвешенный σ1, является наиболее важным шаблоном во всей изображении; второй слой уточняет его; а когда вы спускаетесь среди самых маленьких сингулярных значений, вы добавляете обратно мелкую текстуру, четкие края и — в реальной фотографии — шум датчика.

A = U Σ Vᵀ  =  Σᵢ σᵢ · uᵢ vᵢᵀ

uᵢ, vᵢ   — the i-th columns of U and V (orthonormal "direction" vectors)
σᵢ       — the i-th singular value, σ1 ≥ σ2 ≥ σ3 ≥ ... ≥ 0
uᵢ vᵢᵀ   — a rank-1 matrix: same shape as A, but built from just two vectors
жива демонстрація · пов'язана симуляція● LIVE

The best possible rank-k approximation

Truncating the sum after the first k terms gives a rank-k matrix, and the Eckart-Young theorem guarantees this is not just a reasonable approximation — it is provably the closest rank-k matrix to A in the least-squares sense, better than any other rank-k matrix you could construct by any other method. That guarantee is what makes SVD compression more than a curiosity: for a fixed compression budget, keeping the top k singular values is mathematically the optimal choice.

A_k = Σᵢ₌₁ᵏ σᵢ · uᵢ vᵢᵀ         (rank-k approximation, k terms kept)

reconstruction error:  ||A − A_k||  =  σ(k+1)     (the largest dropped singular value)

Чому природні зображення так добре стискаються

Випадкова матриця, зовсім без структури, розподіляє свою енергію по сингулярних значеннях майже рівномірно, і обрізка її погано знижує реконструкцію з дуже невеликою кількістю збережених термінів. Зображення не схоже на це: сусідні пікселі сильно корельовані — ділянка неба майже однорідна, обличчя має гладкі градієнти світла та тіней — і ця надмірність означає, що сингулярні значення швидко падають, часто майже експоненціально для перших кількох десятків. Перша дошка з кількома шарами рангу 1 вже захоплює грубі форми, загальне освітлення та основні контури; обличчя або пейзаж стають впізнаваними з приблизно 20-го або 40-го рангу аппроксимації зображення, яке може бути 512 пікселів на стороні, задовго до того, як ви збережете будь-які 512 сингулярних значень.

Коли зберігання значень k насправді економить місце

Зберігання повної m × n зображення коштує mn чисел. Зберігання приблизного рангу-k підсумка коштує k стовпців U (кожний з m числами), k власне значень і k рядків Vᵀ (кожний з n числами) — загалом k(m + n + 1) чисел. Це менше, ніж mn лише тоді, коли k достатньо мале:

k(m + n + 1) Це пояснює, чому стиснення SVD є ілюстративним, а не промисловим стандартом для зберігання фотографій: обчислення повної SVD є дорогим для великих зображень, а формати, такі як JPEG, отримують порівнянний або кращий стиск за допомогою набагато дешевшиї дискретної косинусної перетворення на невеликі блоки замість цього. SVD справді блищить там, де дані мають сильний глобальний зв’язок і потребують низького рангу — стискання корельованих датчикових масивів, зменшення розмірності великих числових наборів даних або як основа рекомендаційних систем, де «зображення», яке розкладається, є матрицею уподобань користувачів замість пікселів.

k(m + n + 1)  <  m·n     ⇒     k  <  mn / (m + n)   (roughly)

for a square n×n image:   k  <  n/2   is where compression starts to win

Frequently asked questions

Чому зберігання лише кількох одиничних значень все ще схоже на оригінальне зображення?

Одиничні значення сортуються від найбільшого до найменшого, а за теоремою Еккарта-Юнга верхні k з них утворюють найкращу можливу рангово-k аппроксимацію зображення в дуалізованому сенсі. Більшість природних зображень мають високу кореляцію між рядками та стовпцями, тому навіть невелика кількість лідерів рангу-1 вже відтворює грубі форми та градієнти, а решта, значно менших одиничних значень, лише додають тонку текстуру та шум.

Чи використовується SVD стиснення дійсно в реальних форматах зображень, таких як JPEG?

Ні. JPEG використовує дискретну косинусну трансформацію для невеликих блоків, що набагато дешевше обчислювати, ніж повний SVD, і не потребує зберігання додаткових базисних векторів. SVD стиснення в основному є інструментом для навчання та використовується в деяких наукових та структурованих даних контекстах стиснення, наприклад, для стиснення корельованих даних датчиків або зменшення розмірності великих наборів даних, а не у споживчих фотоформатах.

Коли зберігання k одиничних значень дійсно економить місце?

Зберігання k ранго-1 шарів зображення розміром m x n коштує k(m + n + 1) чисел порівняно з mn для оригінального, тому це економить простір лише тоді, коли k суттєво менше ніж mn/(m+n). Для квадратного зображення цей поріг приблизно дорівнює k < n/2, а якщо відштовхнути k набагато нижче цього значення, SVD стиснення стає справді корисним, а не просто втрачаючою демонстрацією.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте SVD Compression і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію SVD Compression

Що ви знайшли?

Додати кроки відтворення (опційно)