行列の平方根とその逆行列を微分可能な方法で計算することは、さまざまなコンピュータービジョンタスクで重要です。以前の方法では、特異値分解(SVD)を採用して行列を明示的に因数分解するか、Newton-Schulz反復(NS反復)を使用して近似解を導出します。ただし、どちらの方法も、フォワードパスまたはバックワードパスのどちらでも計算効率が十分ではありません。この論文では、微分可能な行列の平方根と逆行列の平方根を計算するための2つのより効率的な変形を提案します。順方向伝搬の場合、1つの方法は行列テイラー多項式(MTP)を使用する方法であり、もう1つの方法は行列パデ近似(MPA)を使用する方法です。後方勾配は、行列符号関数を使用して連続時間リアプノフ方程式を繰り返し解くことによって計算されます。一連の数値テストは、両方の方法がSVDまたはNS反復と比較してかなりのスピードアップをもたらすことを示しています。さらに、相関解除されたバッチ正規化、2次ビジョントランスフォーマー、大規模できめ細かい認識のためのグローバル共分散プーリング、ビデオ認識のための注意深い共分散プーリングなど、いくつかの実際のアプリケーションでのメソッドの有効性を検証します。ニューラルスタイルの転送。実験結果は、私たちの方法が競争力のある、さらにはわずかに優れた性能も達成できることを示しています。 Pytorchの実装は、https://github.com/KingJamesSong/FastDifferentiableMatSqrthttps://github.com/KingJamesSong/FastDifferentiableMatSqrtで入手できます。
Computing the matrix square root and its inverse in a differentiable manner is important in a variety of computer vision tasks. Previous methods either adopt the Singular Value Decomposition (SVD) to explicitly factorize the matrix or use the Newton-Schulz iteration (NS iteration) to derive the approximate solution. However, both methods are not computationally efficient enough in either the forward pass or the backward pass. In this paper, we propose two more efficient variants to compute the differentiable matrix square root and the inverse square root. For the forward propagation, one method is to use Matrix Taylor Polynomial (MTP), and the other method is to use Matrix Padé Approximants (MPA). The backward gradient is computed by iteratively solving the continuous-time Lyapunov equation using the matrix sign function. A series of numerical tests show that both methods yield considerable speed-up compared with the SVD or the NS iteration. Moreover, we validate the effectiveness of our methods in several real-world applications, including de-correlated batch normalization, second-order vision transformer, global covariance pooling for large-scale and fine-grained recognition, attentive covariance pooling for video recognition, and neural style transfer. The experimental results demonstrate that our methods can also achieve competitive and even slightly better performances. The Pytorch implementation is available at https://github.com/KingJamesSong/FastDifferentiableMatSqrthttps://github.com/KingJamesSong/FastDifferentiableMatSqrt.