В. В. Стрижов. «Информационное моделирование». Конспект лекций. Сингулярное разложение Сингулярное разложение (Singular Values Decomposition, SVD) является удобным методом при работе с матрицами. Cингулярное разложение показывает геометрическую структуру матрицы и позволяет наглядно представить имеющиеся данные. Сингулярное разложение используется при решении самых разных задач — от приближения методом наименьших квадратов и решения систем уравнений до сжатия и распознавания изображений. Используются разные свойства сингулярного разложения, например, способность показывать ранг матрицы и приближать матрицы данного ранга. Так как вычисления ранга матрицы — задача, которая встречается очень часто, то сингулярное разложение является довольно популярным методом. Определение SVD Теорема 1 (Дж. Форсайт). Для любой вещественной (n × n)-матрицы A существуют две вещественные ортогональные (n × n)-матрицы U и V такие, что U T AV = Λ. Более того, можно выбрать U и V так, чтобы диагональные элементы Λ имели вид λ1 ≥ λ2 ≥ ... ≥ λr > λr+1 = ... = λn = 0, где r — ранг матрицы A. В частности, если A невырождена, то λ1 ≥ λ2 ≥ ... ≥ λn > 0. Индекс r элемента λr есть фактическая размерность собственного пространства матрицы A. Столбцы матриц U и V называются соответственно левыми и правыми сингулярными векторами, а значения диагонали матрицы Λ называются сингулярными значениями. Пусть A — (m × n)-матрица и ей в соответствие поставлен линейный оператор, также обозначаемый A. Формулу сингулярного разложения A = U ΛV T можно переформулировать в геометрических терминах. Линейный оператор, отображающий элементы пространства Rm в элементы пространства Rn представим в виде последовательно выполняемых линейных операций вращения, растяжения и вращения. Число ненулевых элементов на диагонали матрицы Λ есть фактическая размерность матрицы A. Поэтому компоненты сингулярного разложения наглядно показывают геометрические изменения при отображении линейным оператором A множества векторов из одного векторного пространства в другое. 1 Например, матрица A= имеет сингулярное разложение A = U ΛV T = 0.96 1.72 2.28 0.96 0.6 −0.8 0.8 0.6 T 0.8 0.6 3 0 0.6 −0.6 0 1 Легко увидеть, что матрицы U и V ортогональны, U T U = U U T = I, также V T V = V V T = I, и сумма квадратов значений их столбцов равна единице; для каждой из матриц 0.62 + 0.82 = 1. Наивный алгоритм SVD Рассмотрим приближенное линейное описание матрицы A = {aij } вида aij = r X uik λk vkj + cij , (1) k=1 где i = 1, ..., m и j = 1, ..., n. Значения uik , λk , vkj для данного значения k найдены из условия минимума выражения m X n X 2 ε = c2ij , (2) i=1 j=1 при ограничениях нормировки n X j=1 u2ik = m X 2 vkj =1 (3) i=1 и упорядоченности λ1 ≥ λ2 ≥ ... ≥ λr ≥ ... ≥ 0. Выражения (1), (2), (3) запишем в матричных обозначениях: A = U ΛV T + C, ε2 = tr(CC T ) = kCk2 , U T U = V V T = I, где матрицы U = {ukj }, Λ = diag{λk }, V = {vik }. Если значение r достаточно велико, то С=(0). Так будет заведомо при r ≥ min{m, n}. Минимальное значение r, при котором выполнимо равенство A = U ΛV T , равно рангу матрицы A. Один из возможных алгоритмов нахождения сингулярного разложения заключается в следующем. Найдем последовательно векторы uk , vk и сингулярные числа λk 2 для k = 1, ..., r. В качестве этих векторов берутся нормированные значения вектоbk . Векторы ak и bk находятся как ров ak и bk соответственно: uk = kaakk k , vk = kbkk пределы последовательностей векторов {aki } и {bki }, соответственно ak = lim(aki ) и bk = lim(bki ). Сингулярное число λk находится как произведение норм векторов: λk = kak k · kbk k. Процедура нахождения векторов uk , vk начинается с выбора наибольшей по норме строки b11 матрицы A. Для k = 1 формулы нахождения векторов a1i , b1i имеют вид: a1i = AbT1i , b1i bT1i b1i+1 = aT1i A , aT1i a1i i = 1, 2, ... Для вычисления векторов uk , vk при k = 2, ..., r используется вышеприведенная формула, c той разницей, что матрица A заменяется на скорректированную на k-м шаге матрицу Ak+1 = Ak − uk λk vk . TODO: Написать в чем недостаток по сравнению со стандартным разложением, включающем разложение Холесского. Картинка. Сингулярное разложение и собственные значения матрицы Сингулярное разложение обладает свойством, которое связывает задачу отыскания сингулярного разложения и задачу отыскания собственных векторов. (Собственный вектор x матрицы A — такой вектор, при котором выполняется условие Ax = λx, число λ называется собственным числом.) Так как матрицы U и V ортогональные, то есть U T U = V V T = I, (4) где I — единичная матрица размерности r × r, то из (4) следует, что AAT = U ΛV T V ΛU T = U Λ2 U T , AT A = V ΛU T U ΛV T = V Λ2 V T . (5) Умножая оба выражения справа соответственно на U и V получаем AAT U = U Λ2 , AT AV = V Λ2 . (6) Из выражения (6) следует, что столбцы матрицы U являются собственными векторами матрицы AAT , а квадраты сингулярных чисел Λ = diag(λ1 , ..., λr ) ее собственными значениями. Также столбцы матрицы V являются собственными векторами матрицы AT A, а квадраты сингулярных чисел являются ее собственными значениями. Пространства матрицы и SVD Сингулярное разложение позволяет найти ортогональные базисы различных векторных пространств разлагаемой матрицы. В теореме о сингулярном разложении (Форсайт) рассматривается матрица размером (m × m), T A(m×m) = U(m×m) Λ(m×m) V(m×m) . 3 Существует так называемое экономное представление сингулярного разложения матрицы. T A(m×n) = U(m×m) Λ(m×n) V(n×n) Согласно этому представлению при m > n, диагональная матрица Λ имеет пустые строки, а при m < n — пустые столбцы. Поэтому существует еще одно экономное представление T A(m×n) = U(m×r) Λ(r×r) V(r×n) , в котором r = min(m, n). Нуль-пространство матрицы A — набор векторов x, для которого справедливо высказывание Ax = 0. Собственное пространство матрицы A — набор векторов b, при котором уравнение Ax = b имеет ненулевое решение для x. Обозначим uk и vk — T столбцы Pr матриц U и V . ТогдаT разложение A = U ΛV может быть записана в виде: A = k=1 Ak , где Ak = uk λk vk . Если сингулярное значение λk = 0, то Avk = 0 и vk находится в нуль-пространстве матрицы A, а если сингулярное значение λk 6= 0, то вектор uk находятся в собственном пространстве матрицы A. Следовательно, можно сконструировать базисы для различных векторных подпространств, определенных матрицей A. Hабор векторов v1 , . . . , vk в векторном пространстве V формирует базис для V , если любой вектор x из V можно представить в виде линейной комбинации векторов v1 , . . . , vk единственным способом. Пусть V0 будет набором тех столбцов vk , для которых λk 6= 0, а V1 — все остальные столбцы vk . Также, пусть U0 будет набором столбцов uk , для которых λk 6= 0, а U1 — все остальные столбцы uk , включая и те, для которых k > n. Тогда, если r — количество ненулевых сингулярных значений, то имеется r столбцов в наборе V0 и n−r столбцов в наборе V1 и U1 , а также m−n+r столбцов в наборе U0 . Каждый из этих наборов формирует базис векторного пространства матрицы A: V0 — ортонормальный базис для ортогонального комплементарного нуль-пространства A, V1 — ортонормальный базис для нуль-пространства A, U0 — ортонормальный базис для собственного пространства A, U1 — ортонормальный базис для ортогонального комплементарного нуль-пространства A. Сингулярное разложение и нормирование матриц Рассмотрим изменение длины вектора x до и после его умножения справа матрицу A. Евклидова норма вектора определена как kxk22 = xT x. 4 При умножении вектора x на матрицу A справа, длина результирующего вектора Ax изменяется. Если матрица A ортогональна, длина вектора Ax остается неизменной. , можно вычислить, насколько матВ противном случае, с помощью выражения kAxk kxk рица A растянула вектор x. Таким образом, евклидова норма матрицы, есть максимальный коэффициент растяжения вектора. Евклидова норма матрицы определяется так. Пусть x является n-мерным вектором, и A — матрица размерности (m × n). Тогда Евклидова норма матрицы kAxk kAkE = max . kxk=1 kxk Альтернативной Евклидовой норме является норма Фробениуса: v uX n u m X kAkF = t a2ij . i=1 j=1 Если известно сингулярное разложение, то обе эти нормы легко узнать. Пусть U ΛV T — сингулярное разложение (m × n)-матрицы A. Тогда kAkE = λ1 , и v u r uX λ2k . kAkF = t k=1 Сингулярные значения матрицы A — это длины осей эллипсоида, заданного множеством {Ax|1 = kxk2 }. (картинка) Нахождение псевдообратной матрицы с помощью SVD Классическая задача наименьших квадратов ставиться следующим образом. Даны действительная (m×n)-матрица A и действительный (m)-вектор Y . Требуется найти действительный (n)-вектор w, минимизирующий Евклидову длину вектора невязки, kY − Awk2 −→ min . Решение задачи наименьших квадратов — w = (AT A)−1 (AT Y ). Для отыскания решения w требуется обратить матрицу AT A. Рассмотрим более общий случай обращения матриц. 5 Если (m × n)-матрица A является вырожденной или прямоугольной, то обратной матрицы A−1 для нее не существует. Однако, для A может быть найдена псевдообратная матрица A+ — такая матрица, для которой выполняются условия A+ A = I n , AA+ = Im , A+ AA+ = A+ , AA+ A = A. (7) Пусть найдено разложение матрицы A вида A = U ΛV T , где Λ = diag(λ1 , ..., λr ), r = min(m, n) и U T U = Im , V V T = In . Тогда справедлива Теорема 2. Матрица A+ = V T Λ−1 U является для матрицы A псевдообратной. Доказательство. Согласно теореме 1 и определению (7), A+ A = V Λ−1 U T U ΛV T = In , AA+ = U ΛV T V Λ−1 U T = Im . Усеченное обращение матриц Алгоритм обращения матрицы посредством усеченного сингулярного разложения состоит в следующем. Пусть матрица исходных данных A представлена в виде A = U ΛV T . Тогда при нахождении обратной матрицы A+ = V Λ−1 U T в силу ортогональности матриц U и V : U T U = V V T = I, и в силу условия убывания диагональных элементов матрицы Λ = diag(λ1 , ..., λn ), псевдообратная матрица A+ будет более зависеть от тех элементов матрицы Λ, которые имеют меньшие значения, чем от первых сингулярных чисел. Действительно, если, по условию теоремы о сингулярном разложении матрица A имеет сингулярные числа λ1 > λ2 > ... > λn , то сингулярные числа матрицы A+ равны Λ−1 = diag( λ11 , ..., λ1n ) и λ11 6 λ12 ... 6 λ1n . Считая первые r сингулярных чисел определяющими собственное пространство матрицы A, используем при обращении матрицы A первые r сингулярных чисел. Тогда обратная матрица A+ будет найдена T как A+ = V Λ−1 r U . Определим усеченную псевдообратную матрицу A+ r как −1 T A+ r = V Λr U , −1 −1 где Λ−1 r = diag(λ1 , ..., λr , 0, ..., 0) — диагональная матрица размерности n × n. 6 (8)