Який сучасний стан техніки щодо алгоритмів розкладання сингулярного значення?


12

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

Я роблю двофазну декомпозицію, бідіагоналізацію з подальшим обчисленням сингулярного значення. Зараз я використовую метод домогосподарства для бідіагоналізації (я вважаю, що LAPACK також використовує це), і я думаю, що це приблизно так само добре, як і в даний час (якщо хтось не знає алгоритм для нього..). O(N2)

Наступне в моєму списку - обчислення сингулярних значень, і я дещо вийшов із циклу щодо загальних алгоритмів для цього. Я прочитав тут, що дослідження спрямовувалося на метод зворотної ітерації, що гарантує ортогональність зі складною . Мені було б цікаво почути про той чи інший прогрес.O(N)


чи є документ для вашої матричної матриці (окрім .h)? Також додайте тег "svd".
denis

Відповіді:


7

"Рандомізовані алгоритми" останнім часом стали досить популярними для часткових svds. Тут можна завантажити лише заголовок: http://code.google.com/p/redsvd/

Огляд сучасних методів можна знайти тут: http://arxiv.org/abs/0909.4061

Для повних svds я не впевнений, чи зможете ви зробити краще, ніж Householder.


Це звучить дуже цікаво, мені доведеться поглянути на цей опитувальний документ, дякую!
gct

ОП цікавляться алгоритмами щільних матриць. Я не думаю, що рандомізовані алгоритми є конкурентоспроможними в цьому налаштуванні, якщо вони взагалі працюють.
Федеріко Полоні

У цьому дописі вказано, що рандомізовані методи спрацьовують на щільних матрицях research.facebook.com/blog/294071574113354/fast-randomized-svd
dranxo

@dranxo На цій посаді взагалі немає точності порівняння, і результати часу виглядають не дуже прискіпливо. Також рандомізовані алгоритми засновані на прогнозуванні + точному вирішенні маломасштабної задачі. Це означає, що ОП у будь-якому разі потребує впровадження «стандартного методу» для виникаючої маломасштабної проблеми.
Федеріко Полоні

Справедливо. Хоча я трохи розгублений, чому ми повинні думати, що ці методи працюють лише на розріджених матрицях. Прямо конспект статті Джоела Троппа: "Для щільної вхідної матриці для рандомізованих алгоритмів потрібні операції з плаваючою точкою (flops) O (mn log (k)) на відміну від O (mnk) для класичних алгоритмів." arxiv.org/pdf/0909.4061v2.pdf
dranxo

4

O(N)

(Я хотів зробити декілька коментарів, оскільки у мене немає часу, щоб виписати деталі, але це стало досить великим для поля коментарів.)

LDLUDU

Частина "сингулярного значення" алгоритму, з іншого боку, походить від алгоритму (зміщеного) диференціального коефіцієнта різниці (dqd (s)) , який є кульмінацією попередньої роботи Фернандо, Парлетта , Деммеля і Кахана (з натхненням від Хайнца Рутісхаузера).

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

Я розумію, що я скупився з деталями; Я спробую детальніше розібратися з цією відповіддю, як тільки матиму доступ до своєї бібліотеки ...


Матриця до дводіагональної форми, зробіть стовпчик, потім рядок, повторіть діагональ: скористайтеся даними або домочадцем, щоб нульовий стовпець був до діагоналі, потім зробіть те ж саме для рядка до супердіагоналі.
adam W

UAVUU=IVV=I

0

2
Тут плакат запитує алгоритми, а не бібліотеки; Ви могли б замість цього поговорити про алгоритми, які використовуються в цих бібліотеках, їх складність у обчисленні, і чому ці бібліотеки є сучасними?
Джефф Оксберрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.