機械学習アルゴリズムのトレーニングの側面を並列化できるかどうかを調べようとしています。トレーニングの計算コストの高い部分には、正定値行列 (共分散行列) のコレスキー分解が含まれます。純粋に行列代数の観点から問題を組み立ててみます。さらに情報が必要な場合はお知らせください。
ブロック行列があるとしましょう(共分散行列ですが、それは問題には関係ありません)
M = AB B* C
ここで、A と C は 2 つの異なるセットからのトレーニング データに関連しています。A と B は両方とも正定です。簡単にするために、A と C のサイズが nxn であると仮定します。
ブロックコレスキー分解を行う式があります。http://en.wikipedia.org/wiki/Block_LU_decompositionを参照してください。要約すると、次の結果が得られます。
M = ル
ここで (* は転置を示します)
L = A^{1/2} 0 B*A^{-*/2} Q^{1/2}
どこ
Q = C - B*A^{-1}B
ここで、行列 A と C に関連するトレーニングが既に実行されているとしましょう。したがって、A のコレスキー分解を実行し、C は A^{1/2} と C^{1/2} を与えます (したがって、前方置換を使用して、逆数 A^{-1/2} および C^{-1/2} を簡単に計算できます)。
Q をこれらの量で書き直します。
Q = Q^{1/2} Q^{*/2} = C^{1/2} C^{*/2} - B* A^{-*/2}A^{-1/2} B
私の質問は次のとおりです。この設定を考えると、コレスキー分解を Q に適用することなく、代数的に Q^{1/2} を計算することが可能です。つまり、C^{1/2} を使用してQ^{1/2}の計算。これが可能であれば、トレーニングを簡単に並列化できます。
返信ありがとうございます。マトリックスの組版について申し訳ありません。特に数学や行列をタイプセットする賢明な方法はありますか?
マット。