stringtranslate.com

Итерация мощности

В математике степенная итерация (также известная как степенной метод ) представляет собой алгоритм собственных значений : учитывая диагонализуемую матрицу , алгоритм выдает число , которое является наибольшим (по абсолютному значению) собственным значением , и ненулевой вектор , который является соответствующий собственный вектор , то есть . Алгоритм также известен как итерация фон Мизеса . [1]

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

Метод

Анимация, визуализирующая алгоритм итерации степени в матрице 2x2. Матрица изображается двумя собственными векторами. Ошибка вычисляется как

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

Итак, на каждой итерации вектор умножается на матрицу и нормализуется.

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

Без двух приведенных выше предположений последовательность не обязательно сходится. В этой последовательности

,

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

сходится к доминирующему собственному значению (с коэффициентом Рэлея ). [ нужны разъяснения ]

Это можно вычислить с помощью следующего алгоритма (показанного в Python с NumPy):

#!/usr/bin/env python3импортировать  numpy  как  npdef  power_iteration ( A ,  num_iterations :  int ):  # В идеале выберите случайный вектор  # Чтобы уменьшить вероятность того, что наш вектор  # ортогонален собственному вектору  b_k  =  np . случайный . ранд ( A . форма [ 1 ]) for  _  in  range ( num_iterations ):  # вычисление произведения матрицы на вектор Ab  b_k1  =  np . точка ( A ,  b_k ) # вычисляем норму  b_k1_norm  =  np . линалг . норма ( b_k1 ) # повторно нормализуем вектор  b_k  =  b_k1  /  b_k1_norm вернуть  б_кpower_iteration ( np . array ([[ 0.5 ,  0.5 ],  [ 0.2 ,  0.8 ]]),  10 )

Вектор сходится к соответствующему собственному вектору. В идеале для получения соответствующего собственного значения следует использовать коэффициент Рэлея .

Этот алгоритм используется для расчета PageRank Google .

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

Анализ

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

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

Полезное в вычислительном отношении рекуррентное соотношение для можно переписать как:

где выражение: более поддается следующему анализу.

Выражение выше упрощается как

Предел следует из того факта, что собственное значение меньше 1 по величине, поэтому

Следует, что:

Используя этот факт, можно записать в форме, подчеркивающей ее связь с большим k :

где и как

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

Альтернативно, если A диагонализуемо , то следующее доказательство дает тот же результат

Пусть λ 1 , λ 2 , ..., λ mm собственных значений (подсчитанных с кратностью) оператора A , и пусть v 1 , v 2 , ..., v m — соответствующие собственные векторы. Предположим, что это доминирующее собственное значение, так что для .

Исходный вектор можно записать:

Если выбрано случайно (с равномерной вероятностью), то c 1 ≠ 0 с вероятностью 1 . Сейчас,

С другой стороны:

Следовательно, сходится к (кратному числу) собственному вектору . Сходимость геометрическая с отношением

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

Приложения

Хотя метод степенной итерации аппроксимирует только одно собственное значение матрицы, он остается полезным для некоторых вычислительных задач . Например, Google использует его для расчета PageRank документов в своей поисковой системе, [2] а Twitter использует его, чтобы показывать пользователям рекомендации о том, кому следовать. [3] Метод степенной итерации особенно подходит для разреженных матриц , таких как веб-матрица, или в качестве безматричного метода , который не требует явного сохранения матрицы коэффициентов, но вместо этого может получить доступ к функции, оценивающей произведение матрицы-вектора . Для несимметричных матриц, которые хорошо обусловлены, метод степенной итерации может превзойти более сложную итерацию Арнольди . Для симметричных матриц метод степенной итерации используется редко, поскольку его скорость сходимости можно легко увеличить, не жертвуя при этом небольшой стоимостью итерации; см., например, итерацию Ланцоша и LOBPCG .

Некоторые из более продвинутых алгоритмов собственных значений можно понимать как вариации степенной итерации. Например, метод обратной итерации применяет степенную итерацию к матрице . Другие алгоритмы рассматривают все подпространство, порожденное векторами . Это подпространство известно как подпространство Крылова . Его можно вычислить с помощью итерации Арнольди или итерации Ланцоша . Итерация по Граму [4] — это суперлинейный и детерминированный метод вычисления наибольшей собственной пары.

Смотрите также

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

  1. ^ Рихард фон Мизес и Х. Поллачек-Гейрингер, Praktische Verfahren der Gleichungsauflösung , ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152-164 (1929).
  2. ^ Ипсен, Ильза и Ребекка М. Уиллс (5–8 мая 2005 г.). «7-й Международный симпозиум IMACS по итеративным методам научных вычислений» (PDF) . Институт Филдса, Торонто, Канада.{{cite news}}: CS1 maint: multiple names: authors list (link)
  3. ^ Панкадж Гупта, Ашиш Гоэл, Джимми Лин, Аниш Шарма, Донг Ван и Реза Босаг Заде WTF: Система «за кем следить» в Твиттере, Материалы 22-й международной конференции по Всемирной паутине
  4. ^ Делатр, Б.; Бартелеми, К.; Араужо, А.; Аллаузен, А. (2023), «Эффективная оценка константы Липшица для сверточных слоев путем итерации по Граму», Материалы 40-й Международной конференции по машинному обучению