Восполнение матриц с дополнительной информацией: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Строка 30: | Строка 30: | ||
<tr> | <tr> | ||
<td align="center" width="90%"><math>Z_{t+1} = \mathcal{P}_r(Z_{t} - \eta_t \nabla f(Z_{t})) = \mathcal{P}_r(Z_{t} - \eta_t \mathcal{A^*}(\mathcal{A}(Z_{t}) - b)), </math></td> | <td align="center" width="90%"><math>Z_{t+1} = \mathcal{P}_r(Z_{t} - \eta_t \nabla f(Z_{t})) = \mathcal{P}_r(Z_{t} - \eta_t \mathcal{A^*}(\mathcal{A}(Z_{t}) - b)), </math></td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | Найдя формулу сопряженного оператора: <math>\mathcal{A^*}(X) = A^T \, \cP_{\Omega}(X)B </math> получим алгоритм: | ||
+ | <table style="width:100%"> | ||
+ | <tr> | ||
+ | <td align="center" width="90%"><math>Z_{t+1} = \mathcal{P}_r(Z_{t} - \eta_t A^T\mathcal{P}_{\Omega}(AZB^T - X)B, </math></td> | ||
</tr> | </tr> | ||
</table> | </table> |
Версия 23:16, 26 октября 2021
Восстановление матриц | |
Последовательный алгоритм | |
Последовательная сложность | $O(n^3)$ |
Объём входных данных | \frac{n (n + 1)}{2} |
Объём выходных данных | \frac{n (n + 1)}{2} |
Параллельный алгоритм | |
Высота ярусно-параллельной формы | O(n) |
Ширина ярусно-параллельной формы | O(n^2) |
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Макроструктура алгоритма
- 1.4 Схема реализации последовательного алгоритма
- 1.5 Последовательная сложность алгоритма
- 1.6 Информационный граф
- 1.7 Ресурс параллелизма алгоритма
- 1.8 Входные и выходные данные алгоритма
- 1.9 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Пусть X \in \mathbb{R}^{n_1 \times n_2} - неизвестная малоранговая матрица. Нашей целью является восполнение матрицы X, то есть нахождение всех её элементов, по некоторому малому набору и дополнительной информации. Под дополнительной информацией понимаются линейные пространства L_A и L_B, содержащие столбцы и строки матрицы X соответственно. Если L_A и L_B тривиальные (то есть совпадают с \mathbb{R}^{n_1} и \mathbb{R}^{n_2}), то задача сводиться к задаче обычного восполнения матриц.
Для решения этой задачи применяется итеративный метод SVPWS, который является глубокой модификацией метода SVP. На каждой итерации мы будем делать градиентный шаг и проектироваться обратно на множество матриц малого ранга (с помощью SVD), получая тем самым очередное приближение к исходной неизвестной матрице X.
1.2 Математическое описание алгоритма
Нам известно, что Im(X) \subset L_A, \ Im(X^T) \subset L_B . Пусть dim(L_A) = s_1, \ dim (L_B) = s_2. Зададим ортонормированные матрицы A \in \mathbb{R}^{n_1 \times s_1} и B \in \mathbb{R}^{n_2 \times s_2} - базисы этих пространств, соответственно. Тогда X = AZB^T, Z \in \mathbb{R}^{s_1 \times s_2}. Матрицы X и Z имеют взаимно однозначное соответствие, а матрица Z имеет существенно меньшие размеры, поэтому мы будет решать некоторую оптимизационную задачу для матрицы Z, а именно:
\min_{Z} f(Z) = \frac{1}{2} ||\mathcal{P}_{\Omega}(AZB^T - X)||^2_2, \; \; rank(Z) \leq r, \text{ где } |
\Omega \subset [n_1] \times [n_2] - множество известных нам индексов, а \mathcal{P}_{\Omega}(X) = 1[(i, j) \in \Omega] \circ X - проектор на это множество.
Пусть решением этой задачи является матрица \tilde Z. Тогда построим матрицу \tilde X = A \tilde ZB^T. Матрица \tilde X и будем задачи матричного восполнения. Минимизировать этот функционал будет с помощью алгоритма SVP с оператором \mathcal{P}_\Omega(AZB^T).
Z_{t+1} = \mathcal{P}_r(Z_{t} - \eta_t \nabla f(Z_{t})) = \mathcal{P}_r(Z_{t} - \eta_t \mathcal{A^*}(\mathcal{A}(Z_{t}) - b)), |
Найдя формулу сопряженного оператора: \mathcal{A^*}(X) = A^T \, \cP_{\Omega}(X)B получим алгоритм:
Z_{t+1} = \mathcal{P}_r(Z_{t} - \eta_t A^T\mathcal{P}_{\Omega}(AZB^T - X)B, |
1.3 Макроструктура алгоритма
1.4 Схема реализации последовательного алгоритма
1.5 Последовательная сложность алгоритма
1.6 Информационный граф
1.7 Ресурс параллелизма алгоритма
1.8 Входные и выходные данные алгоритма
1.9 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.2.1 Локальность реализации алгоритма
2.2.1.1 Структура обращений в память и качественная оценка локальности
2.2.1.2 Количественная оценка локальности
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.4.1 Масштабируемость алгоритма
2.4.2 Масштабируемость реализации алгоритма
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
[1] Guaranteed Rank Minimization via Singular Value Projection.Raghu Meka, Prateek Jain, Inderjit S. Dhillon // arXiv:0909.5457
[2] Low-rank matrix completion by Riemannian optimization. Bart Vandereycken // arXiv:0909.5457