パワーイテレーション

数学においてべき乗反復法(べき乗法とも呼ばれる)は固有値アルゴリズムです。対角化可能な 行列 が与えられると、このアルゴリズムは、(絶対値で)最大の固有値である数と、 (対応する固有ベクトルである)非零ベクトル (つまり)を生成します。このアルゴリズムは、フォン・ミーゼス反復法としても知られています。[1]

べき乗反復法は非常に単純なアルゴリズムですが、収束が遅い場合があります。このアルゴリズムで最も時間のかかる演算は、行列とベクトルの乗算であるため、適切に実装すれば、非常に大きな疎行列に効果的です。収束速度は のようになります。ここでは反復回数です(後のセクションを参照)。言い換えれば、収束はスペクトルギャップを底とする指数関数的です。

2x2行列上のべき乗反復法アルゴリズムを視覚化するアニメーション。行列は2つの固有ベクトルで表されます。誤差は次のように計算されます

べき乗反復アルゴリズムはベクトル から開始します。ベクトルは、支配的な固有ベクトルの近似値、またはランダムベクトルである可能性があります。この方法は、再帰関係によって記述されます。

したがって、反復ごとに、ベクトルは行列 で乗算され、正規化されます。

他の固有値よりも絶対値​​が大きい固有値を持ち、開始ベクトルが支配的な固有値に関連付けられた固有ベクトルの方向に非ゼロの成分を持つと仮定すると、部分列は支配的な固有値に関連付けられた固有ベクトルに収束します。

上記の2つの仮定がない場合、列は必ずしも収束しません。この列では、

ここで、は支配的な固有値に関連付けられた固有ベクトルであり、 です。項の存在は、でない限り収束しないことを意味します。上記の2つの仮定の下では、で定義される列は

支配的な固有値(レイリー商)に収束します。[説明が必要]

これは以下のアルゴリズム(PythonとNumPyで示されています)で計算できます。

#!/usr/bin/env python3import numpy as np   def power_iteration ( A : np . ndarray , num_iterations : int ) -> np . ndarray :       # 理想的にはランダムベクトルを選択します # ベクトルが # 固有ベクトルに直交する可能性を減らすため b_k  =  np . random . rand ( A . shape [ 1 ] ) for  _  in  range ( num_iterations ): # 行列とベクトルの積Abを計算します b_k1  =  np . dot ( A ,  b_k ) # ノルムを計算します b_k1_norm  =  np.linalg.norm ( b_k1 )   # ベクトル b_k  = b_k1 / b_k1_norm     b_k返すpower_iteration ( np . array ([[ 0.5 ,  0.5 ],  [ 0.2 ,  0.8 ]]),  10 )

ベクトルは関連する固有ベクトルに収束します。理想的には、関連する固有値を得るためにレイリー商を使用する必要があります

このアルゴリズムは、Google PageRank を計算するために使用されます

この方法は、レイリー商を計算することでスペクトル半径(正方行列の場合、最大の大きさを持つ固有値)を計算するためにも使用できます。

分析

をジョルダン標準形に分解するとしますここで、 の最初の列はの固有ベクトルで、これは支配的固有値 に対応します一般にの支配的固有値は一意なので、 の最初のジョルダンブロックは の最大の固有値の大きさである行列です開始ベクトルはの列の線形結合として表すことができます

仮定により、は支配的固有ベクトルの方向に非ゼロの成分を持つため、 となります

の計算上有用な漸化式はのように書き直すことができます。

ここで、式 は次の解析により適しています。

上記の式は次のように簡略化されます。

この極限は、 の固有値の大きさが1未満であるという事実から導かれます。したがって、

したがって、

この事実を用いて、が大きい場合との関係を強調する形で を書くことができます。

ここでおよび として

数列は有界であるため、収束する部分数列を含みます。支配的な固有値に対応する固有ベクトルはスカラーまでしか一意ではないため、数列は収束しない可能性がありますが、が大きいに対してはほぼ の固有ベクトルになります

あるいは、が対角化可能であれば、次の証明で同じ結果が得られます。

を の固有値(重複度付き)を対応する固有ベクトルとします。 が支配的な固有値であると仮定すると、に対してとなります

初期ベクトルは次のように書けます。

をランダムに(一様確率で)選択すると、確率1で収束します。ここで、

一方、

したがって、は固有ベクトル (の倍数)に収束します。収束は幾何収束で、比は

です。ここで、 は2番目の支配的な固有値を表します。したがって、支配的な固有値と大きさが近い固有値がある場合、この方法はゆっくりと収束します。

応用

べき乗反復法は行列の 1 つの固有値のみを近似しますが、特定の計算問題には依然として有用です。たとえば、Google は検索エンジンでドキュメントのPageRank を計算するために使用しています[2]。また、 Twitter はフォローすべき人物の推薦をユーザーに表示するために使用しています[3]。べき乗反復法は、Web 行列などの疎行列に特に適しています。また、係数行列を明示的に格納する必要がなく、代わりに行列ベクトル積を評価する関数にアクセスできる行列フリー法としても使用できます。条件が整えられた非対称行列の場合、べき乗反復法はより複雑なArnoldi 反復法よりも優れたパフォーマンスを発揮します。対称行列の場合、反復あたりのコストが小さいことを犠牲にすることなく収束速度を簡単に上げることができるため、べき乗反復法はほとんど使用されません。たとえば、Lanczos 反復法LOBPCG を参照してください。

より高度な固有値アルゴリズムのいくつかは、べき乗反復法のバリエーションとして理解できます。例えば、逆反復法は行列にべき乗反復法を適用します。他のアルゴリズムは、ベクトルによって生成された部分空間全体を調べます。この部分空間はクリロフ部分空間として知られています。これはアーノルディ反復法またはランチョス反復法によって計算できます。グラム反復法[4]は、最大固有値対を計算するための超線形かつ決定論的な方法です。

参照

参考文献

  1. ^ Richard von Mises and H. Pollaczek-Geiringer, Praktische Verfahren der Gleichungsauflösung , ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152-164 (1929).
  2. ^ Ipsen, Ilse、およびRebecca M. Wills (2005年5月5~8日). 「第7回IMACS国際科学計算反復法シンポジウム」(PDF) . フィールズ研究所、カナダ、トロント.{{cite news}}: CS1 maint: multiple names: authors list (link)
  3. ^ Pankaj Gupta、Ashish Goel、Jimmy Lin、Aneesh Sharma、Dong Wang、およびReza Bosagh Zadeh WTF: Twitterのwho-to-followシステム、第22回国際ワールドワイドウェブ会議議事録
  4. ^ Delattre, B.; Barthélemy, Q.; Araujo, A.; Allauzen, A. (2023)、「グラム反復法による畳み込み層のリプシッツ定数の効率的な境界」、第40回国際機械学習会議論文集7513– 7532
Retrieved from "https://en.wikipedia.org/w/index.php?title=Power_iteration&oldid=1322057966"