Алгоритм Ланцоша - Lanczos algorithm

Алгоритм Ланцош является прямой алгоритм разработан Ланцош , что является адаптацией силовых методов , чтобы найти «самый полезный» (тенденцию к крайности высокие / низкие) собственных значений и собственных векторов из с эрмитовой матрицей , где часто , но не обязательно намного меньше , чем . Несмотря на то, что метод, в принципе, эффективен с точки зрения вычислений, изначально сформулированный метод не был полезен из-за его численной нестабильности .

В 1970 году Оялво и Ньюман показали, как сделать метод численно устойчивым, и применили его к решению очень больших инженерных сооружений, подвергающихся динамической нагрузке. Это было достигнуто с использованием метода очистки векторов Ланцоша (то есть путем многократной реортогонализации каждого вновь созданного вектора со всеми ранее созданными) с любой степенью точности, которая, если не выполнялась, давала серию векторов, сильно загрязненных теми, которые связаны с самые низкие собственные частоты.

В своей первоначальной работе эти авторы также предложили, как выбрать начальный вектор (т. Е. Использовать генератор случайных чисел для выбора каждого элемента начального вектора), и предложили эмпирически определенный метод определения уменьшенного числа векторов (т. Е. Он должен должно быть выбрано примерно в 1,5 раза больше желаемого точного числа собственных значений). Вскоре после этого за их работой последовала Пейдж, которая также представила анализ ошибок. В 1988 году Оялво представил более подробную историю этого алгоритма и эффективный тест на ошибку собственных значений.

Алгоритм

Входной эрмитова матрица размера , и , необязательно, число итераций (по умолчанию, пусть ).
  • Строго говоря, алгоритму не нужен доступ к явной матрице, а только функция, которая вычисляет произведение матрицы на произвольный вектор. Эта функция вызывается чаще всего .
Выход матрица с ортонормирован- колоннами и трехдиагональная вещественная симметричная матрица размера . Если , то есть унитарным , и .
Предупреждение Итерация Ланцоша подвержена численной нестабильности. При выполнении неточной арифметики необходимо принять дополнительные меры (как описано в следующих разделах) для обеспечения достоверности результатов.
  1. Позвольте быть произвольным вектором с евклидовой нормой .
  2. Сокращенный этап начальной итерации:
    1. Пусть .
    2. Пусть .
    3. Пусть .
  3. Для делать:
    1. Пусть (также евклидова норма ).
    2. Если , то пусть ,
      иначе выберите произвольный вектор с евклидовой нормой , ортогональный всем из .
    3. Пусть .
    4. Пусть .
    5. Пусть .
  4. Позвольте быть матрица со столбцами . Пусть .
Примечание для .

В принципе, существует четыре способа написать итерационную процедуру. Пейдж и другие работы показывают, что вышеуказанный порядок операций является наиболее численно устойчивым. На практике начальный вектор может быть взят как еще один аргумент процедуры, а индикаторы числовой неточности включены в качестве дополнительных условий завершения цикла.

Не считая умножения матрицы на вектор, каждая итерация выполняет арифметические операции. Умножение матрицы на вектор может выполняться арифметическими операциями, где - среднее количество ненулевых элементов в строке. Таким образом , общая сложность или если ; алгоритм Ланцоша может быть очень быстрым для разреженных матриц. Схемы для улучшения числовой стабильности обычно оцениваются по этой высокой производительности.

Векторы называются векторами Ланцоша . Вектор не используется после вычисления, и вектор не используется после вычисления. Следовательно, можно использовать одно и то же хранилище для всех трех. Точно так же, если ищется только трехдиагональная матрица , тогда необработанная итерация не требуется после вычисления , хотя некоторым схемам для улучшения численной стабильности она понадобится позже. Иногда последующие векторы Ланцоша пересчитываются, когда это необходимо.

Приложение к задаче о собственных значениях

Алгоритм Ланцоша чаще всего упоминается в контексте поиска собственных значений и собственных векторов матрицы, но в то время как обычная диагонализация матрицы сделала бы собственные векторы и собственные значения очевидными при проверке, то же самое нельзя сказать о трехдиагонализации, выполненной методом Ланцоша. алгоритм; Для вычисления даже одного собственного значения или собственного вектора необходимы нетривиальные дополнительные шаги. Тем не менее, применение алгоритма Ланцоша часто является значительным шагом вперед в вычислении собственного разложения. Если является собственным значением , и если ( является собственным вектором ), то является соответствующим собственным вектором (поскольку ). Таким образом, алгоритм Ланцоша преобразует задачу разложения на собственные числа для в задачу разложения на собственные числа для .

  1. Для трехдиагональных матриц существует ряд специализированных алгоритмов, часто с большей вычислительной сложностью, чем алгоритмы общего назначения. Например, если это трехдиагональная симметричная матрица, то:
  2. Известно, что некоторые общие алгоритмы разложения на собственные числа, в частности QR-алгоритм , сходятся быстрее для трехдиагональных матриц, чем для общих матриц. Асимптотическая сложность трехдиагонального QR такая же, как и для алгоритма «разделяй и властвуй» (хотя постоянный коэффициент может быть другим); так как собственные векторы вместе имеют элементы, это асимптотически оптимально.
  3. Даже алгоритмы, скорость сходимости которых не зависит от унитарных преобразований, таких как степенной метод и обратная итерация , могут обладать низкими преимуществами производительности от применения к трехдиагональной матрице, а не к исходной матрице . Поскольку в нем очень мало всех ненулевых элементов в хорошо предсказуемых позициях, он обеспечивает компактное хранилище с превосходной производительностью по сравнению с кэшированием . Аналогично, это вещественная матрица со всеми собственными векторами и собственными значениями, действительными, тогда как в общем случае может иметь комплексные элементы и собственные векторы, поэтому вещественной арифметики достаточно для нахождения собственных векторов и собственных значений .
  4. Если очень большое, то уменьшение до приемлемого размера все же позволит найти более экстремальные собственные значения и собственные векторы ; в этой области алгоритм Ланцоша можно рассматривать как схему сжатия с потерями для эрмитовых матриц, которая подчеркивает сохранение крайних собственных значений.

Сочетание хорошей производительности для разреженных матриц и способности вычислять несколько (без вычисления всех) собственных значений являются основными причинами использования алгоритма Ланцоша.

Приложение к тридиагонализации

Хотя проблема собственных значений часто является мотивацией для применения алгоритма Ланцоша, операция, которую в первую очередь выполняет алгоритм, представляет собой трехдиагонализацию матрицы, для которой численно стабильные преобразования Хаусхолдера предпочитаются с 1950-х годов. В 1960-е годы алгоритм Ланцоша не принимался во внимание. Интерес к нему был возрожден теорией сходимости Каниэля – Пейджа и разработкой методов предотвращения числовой нестабильности, но алгоритм Ланцоша остается альтернативным алгоритмом, который можно попробовать только в том случае, если Хаусхолдер не удовлетворителен.

Аспекты, в которых различаются два алгоритма, включают:

  • Ланцош пользуется преимуществом разреженной матрицы, в то время как Хаусхолдер этого не делает и генерирует заполнение .
  • Ланцош полностью работает с исходной матрицей (и не имеет проблем с тем, что она известна только неявно), тогда как необработанный Хаусхолдер хочет изменить матрицу во время вычисления (хотя этого можно избежать).
  • Каждая итерация алгоритма Ланцоша производит еще один столбец конечной матрицы преобразования , в то время как итерация Хаусхолдер производит еще один фактор в унитарном профакторизованное из . Однако каждый фактор определяется одним вектором, поэтому требования к хранилищу одинаковы для обоих алгоритмов и могут быть вычислены во времени.
  • Домохозяин численно стабилен, тогда как сырой Ланцош - нет.
  • Ланцош очень параллелен, только с точками синхронизации (вычисления и ). Хаусхолдер менее параллелен, имея последовательность вычисленных скалярных величин, каждая из которых зависит от предыдущей величины в последовательности.

Вывод алгоритма

Есть несколько аргументов, которые приводят к алгоритму Ланцоша.

Более предусмотрительный метод силы

Степенной метод нахождения собственного значения наибольшей величины и соответствующего собственного вектора матрицы примерно равен

  1. Выберите случайный вектор .
  2. Ибо (пока направление не сойдется) выполните:
    1. Позволять
    2. Позволять
  • В большом пределе приближается к нормированному собственному вектору, соответствующему собственному значению наибольшей величины.

Этот метод можно подвергнуть критике за то, что он расточителен: он тратит много работы (произведение матрица-вектор на шаге 2.1) на извлечение информации из матрицы , но обращает внимание только на самый последний результат; реализации обычно используют одну и ту же переменную для всех векторов , при этом каждая новая итерация перезаписывает результаты предыдущей. Что, если вместо этого мы сохраним все промежуточные результаты и систематизируем их данные?

Одна часть информации, которую тривиально можно получить из векторов, - это цепочка подпространств Крылова . Один из способов заявить, что, не вводя наборы в алгоритм, - это заявить, что он вычисляет

подмножество базиса такого, что для всех без исключения

это тривиально выполняется до тех пор, пока линейно не зависит от (и в случае, если есть такая зависимость, можно продолжить последовательность, выбирая как произвольный вектор, линейно независимый от ). Однако базис, содержащий векторы, скорее всего, будет численно плохо обусловлен , поскольку эта последовательность векторов по замыслу должна сходиться к собственному вектору . Чтобы избежать этого, можно объединить степенную итерацию с процессом Грама – Шмидта , чтобы вместо этого получить ортонормированный базис этих подпространств Крылова.

  1. Выберите случайный вектор евклидовой нормы . Пусть .
  2. Для делать:
    1. Пусть .
    2. Для всех пусть . (Это координаты относительно базисных векторов .)
    3. Пусть . (Отмените компонент, который находится внутри .)
    4. Если тогда пусть и ,
      в противном случае выберите произвольный вектор евклидовой нормы , ортогональный всем из .

Связь между векторами степенных итераций и ортогональными векторами такова, что

.

Здесь можно заметить, что нам на самом деле не нужны векторы для их вычисления , потому что и, следовательно, разница между и находится в пределах , которая компенсируется процессом ортогонализации. Таким образом, тот же базис для цепочки подпространств Крылова вычисляется с помощью

  1. Выберите случайный вектор евклидовой нормы .
  2. Для делать:
    1. Пусть .
    2. Для всех пусть .
    3. Пусть .
    4. Пусть .
    5. Если тогда пусть ,
      в противном случае выберите произвольный вектор евклидовой нормы , ортогональный всем из .

Коэффициенты априори удовлетворяют

для всех ;

определение может показаться немного странным, но оно соответствует общей схеме, поскольку

Поскольку векторы степенной итерации, которые были исключены из этой рекурсии, удовлетворяют требованиям, что векторы и коэффициенты содержат достаточно информации, из которой все можно вычислить, поэтому при переключении векторов ничего не было потеряно. (Действительно, оказывается, что собранные здесь данные дают значительно лучшее приближение к наибольшему собственному значению, чем получается при равном количестве итераций в степенном методе, хотя на данный момент это не обязательно очевидно.)

Эта последняя процедура - итерация Арнольди . Алгоритм Ланцоша затем возникает как упрощение, которое можно получить за счет исключения этапов вычисления, которые оказываются тривиальными, когда он эрмитов, - в частности, большинство коэффициентов оказываются равными нулю.

Элементарно, если эрмитово, то

Поскольку мы знаем это , и поскольку по построению ортогонален этому подпространству, этот скалярный продукт должен быть равен нулю. (Это, по существу также причина , почему последовательности ортогональных многочленов всегда можно дать три перспективы рекуррентное соотношение .) Для один получает

поскольку последний реален в силу того, что является нормой вектора. Для одного получает

это значит, что это тоже реально.

Говоря более абстрактно, если это матрица со столбцами, то числа могут быть идентифицированы как элементы матрицы , а для матрицы - верхний Хессенберг . С

матрица эрмитова. Это означает, что это также нижний уровень Гессенберга, поэтому на самом деле он должен быть трехъядерным. Поскольку его главная диагональ является эрмитовой, она действительна, и поскольку ее первая поддиагональ реальна по построению, то же самое верно и для ее первой наддиагонали. Следовательно, это действительная симметричная матрица - матрица спецификации алгоритма Ланцоша.

Одновременное приближение крайних собственных значений

Один из способов характеризации собственных векторов эрмитовой матрицы как стационарные точки в частном Рэлеи

В частности, наибольшее собственное значение - это глобальный максимум, а наименьшее собственное значение - это глобальный минимум .

В низкоразмерном подпространстве в нем может быть возможным , чтобы найти максимум и минимум из . Повторение этого для возрастающей цепи дает две последовательности векторов: и такие, что и

Тогда возникает вопрос, как выбрать подпространства, чтобы эти последовательности сходились с оптимальной скоростью.

От оптимального направления для поиска больших значений является направление градиента , и аналогичным образом от оптимального направления для поиска меньших значений является направление отрицательного градиента . В общем

поэтому направления интереса легко достаточно для вычисления в матричных арифметиках, но если кто -то хочет улучшить как и тогда есть два новые направление , чтобы принять во внимание: и так и может быть линейно независимыми векторы (действительно, близко к ортогональному) , нельзя вообще ожидать и быть параллельным. Следовательно, необходимо ли увеличивать размер by на каждом шаге? Нет, если они считаются подпространствами Крылова, потому что тогда для всех, в частности, для обоих и .

Другими словами, мы можем начать с некоторого произвольного начального вектора, построить векторные пространства

а затем искать такое, что

Поскольку итерация метода мощности th принадлежит ему, следует, что итерация для получения и не может сходиться медленнее, чем итерация метода мощности, и будет достигать большего, аппроксимируя оба крайних значения собственных значений. Для подзадачи оптимизации для некоторых удобно иметь ортонормированный базис для этого векторного пространства. Таким образом, мы снова приходим к проблеме итеративного вычисления такого базиса для последовательности подпространств Крылова.

Конвергенция и другая динамика

При анализе динамики алгоритма удобно принимать собственные значения и собственные векторы как заданные, даже если они явно не известны пользователю. Чтобы зафиксировать обозначения, позвольте быть собственными значениями (они известны всем, что они действительны, и, следовательно, их можно упорядочить), и пусть будет ортонормированный набор собственных векторов, такой что для всех .

Также удобно зафиксировать обозначения для коэффициентов исходного вектора Ланцоша относительно этого собственного базиса; пусть для всех , так что . Начальный вектор, лишенный некоторого собственного значения, будет задерживать сходимость к соответствующему собственному значению, и хотя это просто оказывается постоянным множителем в границах ошибки, истощение остается нежелательным. Один из распространенных методов, позволяющих избежать постоянных ударов, заключается в том, чтобы выбрать , сначала отрисовывая элементы случайным образом в соответствии с одним и тем же нормальным распределением со средним значением, а затем масштабируя вектор до нормы . До масштабирования это приводит к тому, что коэффициенты также являются независимыми нормально распределенными стохастическими переменными из того же нормального распределения (поскольку изменение координат является унитарным), а после масштабирования вектор будет иметь равномерное распределение на единичной сфере в . Это позволяет, например, ограничить вероятность того, что .

Тот факт, что алгоритм Ланцоша не зависит от координат (операции смотрят только на внутренние произведения векторов, а не на отдельные элементы векторов), упрощает построение примеров с известной собственной структурой для запуска алгоритма: создание диагональной матрицы с желаемыми собственными значениями по диагонали; до тех пор, пока начальный вектор имеет достаточно ненулевых элементов, алгоритм будет выводить общую трехдиагональную симметричную матрицу как .

Теория сходимости Кэниела – Пейджа

После шагов итераций алгоритма Ланцоша является вещественной симметричной матрицей, которая, как и вышеупомянутая, имеет собственные значения. Под сходимостью в первую очередь понимается сходимость к (и симметричная сходимость к ) по мере роста, а во-вторых, сходимость некоторого диапазона собственных значений от их коллег из . Сходимость для алгоритма Ланцоша часто на порядки быстрее, чем для алгоритма степенной итерации.

Оценки для получены из приведенной выше интерпретации собственных значений как крайних значений фактора Рэлея . Поскольку априори является максимумом для всего, тогда как является просто максимумом на -мерном подпространстве Крылова, мы тривиально получаем . И наоборот, любая точка в этом подпространстве Крылова обеспечивает нижнюю границу для , поэтому, если может быть выставлена ​​точка, для которой малая, то это дает жесткую границу .

Подпространство Крылова размерности равно

так что любой его элемент может быть выражен как некоторый многочлен степени не выше ; коэффициенты этого многочлена - это просто коэффициенты линейной комбинации векторов . У желаемого многочлена окажутся действительные коэффициенты, но на данный момент мы должны учитывать также комплексные коэффициенты, и мы будем писать для многочлена, полученного комплексным сопряжением всех коэффициентов . В этой параметризации подпространства Крылова имеем

Используя теперь выражение для как линейную комбинацию собственных векторов, получаем

и в более общем плане

для любого полинома .

Таким образом

Ключевое различие между числителем и знаменателем здесь заключается в том, что в числителе термин исчезает, но не в знаменателе. Таким образом, если можно выбрать большие для всех остальных собственных значений, но малые для всех остальных, получится жесткая граница ошибки .

Поскольку у него намного больше собственных значений, чем коэффициентов, это может показаться сложной задачей, но один из способов добиться этого - использовать многочлены Чебышева . Записывая полином степени Чебышева первого рода (удовлетворяющий всем ), мы получаем многочлен, который остается в пределах известного интервала, но быстро растет за его пределами. При некотором масштабировании аргумента мы можем отобразить все собственные значения, кроме как в . Позволять

(в случае , если вместо этого используйте наибольшее собственное значение, строго меньшее, чем ), тогда максимальное значение for равно, а минимальное значение равно , поэтому

более того

количество

(т. е. отношение первой собственной щели к диаметру остальной части спектра ), таким образом, имеет ключевое значение для скорости сходимости здесь. Также пишу

мы можем сделать вывод, что

Таким образом, скорость сходимости в основном контролируется , поскольку эта граница сокращается в раз для каждой дополнительной итерации.

Для сравнения, можно рассмотреть, как зависит скорость сходимости степенного метода , но поскольку степенной метод в первую очередь чувствителен к частному между абсолютными значениями собственных значений, нам нужно, чтобы собственный зазор между и был доминирующим. При этом ограничении наиболее благоприятным для силового метода является тот случай , поэтому учитывайте это. В конце метода мощности вектор итерации:

где каждая новая итерация эффективно умножает -амплитуду на

Тогда оценка наибольшего собственного значения имеет вид

поэтому приведенную выше оценку скорости сходимости алгоритма Ланцоша следует сравнить с

который уменьшается в раз при каждой итерации. Таким образом, разница сводится к тому, что между и . В регионе последний больше похож и работает так же, как и силовой метод, с вдвое большей шириной собственной щели; заметное улучшение. Более сложный случай является , однако , что из , в котором это еще больше улучшения по сравнению с eigengap; это область, в которой алгоритм Ланцоша с точки зрения сходимости дает наименьшее улучшение по сравнению с методом мощности.

Численная стабильность

Стабильность означает, насколько сильно будет затронут алгоритм (то есть будет ли он давать приблизительный результат, близкий к исходному), если будут внесены и накоплены небольшие числовые ошибки. Числовая стабильность является центральным критерием оценки полезности реализации алгоритма на компьютере с округлением.

Для алгоритма Ланцоша можно доказать, что с помощью точной арифметики набор векторов создает ортонормированный базис, а решенные собственные значения / векторы являются хорошими приближениями к значениям исходной матрицы. Однако на практике (поскольку вычисления выполняются в арифметике с плавающей запятой, где погрешность неизбежна) ортогональность быстро теряется, и в некоторых случаях новый вектор может даже линейно зависеть от уже построенного набора. В результате некоторые собственные значения результирующей трехдиагональной матрицы могут не быть приближениями к исходной матрице. Следовательно, алгоритм Ланцоша не очень стабилен.

Пользователи этого алгоритма должны иметь возможность находить и удалять эти «ложные» собственные значения. Практические реализации алгоритма Ланцоша идут в трех направлениях для борьбы с этой проблемой стабильности:

  1. Предотвратить потерю ортогональности,
  2. Восстановите ортогональность после создания основы.
  3. После того, как все хорошие и «ложные» собственные значения определены, удалите ложные.

Вариации

Существуют вариации алгоритма Ланцоша, где задействованные векторы представляют собой высокие узкие матрицы вместо векторов, а нормализующие константы представляют собой небольшие квадратные матрицы. Они называются «блочными» алгоритмами Ланцоша и могут быть намного быстрее на компьютерах с большим количеством регистров и длительным временем выборки из памяти.

Многие реализации алгоритма Ланцоша перезапускаются после определенного количества итераций. Одним из наиболее важных вариантов перезапуска является неявно перезапускаемый метод Ланцоша, который реализован в ARPACK . Это привело к ряду других перезапущенных вариаций, таких как перезапуск бидиагонализации Ланцоша. Другой вариант успешного перезапуска - это метод Ланцоша с толстым перезапуском, который реализован в программном пакете под названием TRLan.

Нулевое пространство над конечным полем

В 1995 году Питер Монтгомери опубликовал алгоритм, основанный на алгоритме Ланцоша, для поиска элементов нулевого пространства большой разреженной матрицы над GF (2) ; поскольку множество людей, интересующихся большими разреженными матрицами над конечными полями, и множество людей, интересующихся большими проблемами собственных значений, практически не пересекаются, это часто также называют блочным алгоритмом Ланцоша, не вызывая неоправданной путаницы.

Приложения

Алгоритмы Ланцоша очень привлекательны, потому что умножение на - единственная крупномасштабная линейная операция. Поскольку механизмы поиска текста с взвешенными терминами реализуют именно эту операцию, алгоритм Ланцоша может эффективно применяться к текстовым документам (см. Скрытое семантическое индексирование ). Собственные векторы также важны для крупномасштабных методов ранжирования, таких как алгоритм HITS, разработанный Джоном Кляйнбергом , или алгоритм PageRank , используемый Google.

Ланцош алгоритмы также используются в физике конденсированной сред в качестве способа для решения гамильтонианов из сильно коррелированных электронных систем , а также в оболочках модели коды в ядерной физике .

Реализации

NAG библиотека содержит несколько подпрограмм для решения крупномасштабных систем линейных и собственных значений , которые используют алгоритм Ланцоша.

MATLAB и GNU Octave поставляются со встроенным ARPACK. Как хранимые, так и неявные матрицы можно анализировать с помощью функции eigs () ( Matlab / Octave ).

Реализация алгоритма Ланцоша в Matlab (проблемы с точностью заметок) доступна как часть пакета Matlab для распространения веры по Гауссу . GraphLab совместной фильтрации библиотека включает в себя большой реализации шкалы параллели Lanczos алгоритм (в C ++) для многоядерных.

Библиотека PRIMME также реализует алгоритм, подобный Ланцошу .

Заметки

Рекомендации

дальнейшее чтение