Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

The Randomized SVD (RSVD) produces an approximation

A^=QQTA,Q=orth(AΩ),\widehat{\vec{A}} = \vec{Q}\vec{Q}^\T \vec{A}, \quad \vec{Q} = \Call{orth}(\vec{A}\vec{\Omega}),

where ΩGaussian(n,b)\vec{\Omega}\sim \operatorname{Gaussian}(n,b). Ideally Q\vec{Q} is well-aligned with the dominant subspace of A\vec{A}. However, the approximation can be poor if the singular values of A\vec{A} decay slowly or if the spectral gap is small.

One way to mitigate this is to damp down the tail of A\vec{A} relative to the leading singular values. In particular, observe that if A\vec{A} has (thin) SVD A=UΣVT\vec{A} = \vec{U}\vec{\Sigma}\vec{V}^\T,

(AAT)qA=UΣ2q+1VT,(\vec{A}\vec{A}^\T)^q\vec{A} = \vec{U} \vec{\Sigma}^{2q+1} \vec{V}^\T,

so the singular values of (AAT)qA(\vec{A}\vec{A}^\T)^q\vec{A} are the singular values of A\vec{A} raised to the power 2q+12q+1. This helps because running the RSVD on (AAT)qA(\vec{A}\vec{A}^\T)^q\vec{A} scales the sketch’s component along the ii-th singular direction by σi2q+1\sigma_i^{2q+1}: shrinking the tail relative to the top makes the sketch, and hence Q\vec{Q}, line up more closely with the leading singular directions. As illustrated in the figure below, the small singular values become smaller relative to the large ones. Drag the slider to raise the singular values to the power 2q+12q+1 and observe that the tail is damped substantially relative to the leading singular values as qq increases.

Loading...

This leads to the Randomized Subspace Iteration (RSI) approximation:

A^=QQTA,Q=orth((AAT)qAΩ).\widehat{\vec{A}} = \vec{Q}\vec{Q}^\T \vec{A}, \quad \vec{Q} = \Call{orth}((\vec{A}\vec{A}^\T)^q\vec{A}\vec{\Omega}).

Observe that (AAT)qAΩ(\vec{A}\vec{A}^\T)^q\vec{A}\vec{\Omega} can be computed by sequential products with A\vec{A} and AT\vec{A}^\T. In particular, we never need to form the (potentially large) matrix AAT\vec{A}\vec{A}^\T explicitly.

Note that for numerical stability reasons, it is often recommended to re-orthogonalize Y\vec{Y} after each multiplication by A\vec{A} or AT\vec{A}^\T.