cherab.phix.inversion.inversion._SVDBase#
- class cherab.phix.inversion.inversion._SVDBase(s, u, basis, data=None)Source#
Bases:
objectBase class for inversion calculation based on Singular Value Decomposition (SVD) method.
Note
This class is designed to be inherited by subclasses which define the objective function to optimize the regularization parameter \(\lambda\) using the
basinhoppingfunction.- Parameters:
s (vector_like) – singular values of \(A\) like \(\sigma = (\sigma_1, \sigma_2, ...) \in \mathbb{R}^r\)
u (array_like) – left singular vectors of \(A\) like \(U = (u_1, u_2, ...) \in \mathbb{R}^{m\times r}\)
basis (array_like) – inverted solution basis \(\tilde{V} \in \mathbb{R}^{n\times r}\). Here, \(\tilde{V} = L^{-1}V\), where \(V\in\mathbb{R}^{n\times r}\) is the right singular vectors of \(A\) and \(L^{-1}\) is the inverse of regularization operator \(L \in \mathbb{R}^{n\times n}\).
data (vector_like) – given data for inversion calculation forms as a vector in \(\mathbb{R}^m\)
Notes
This class offers the calculation of the inverted solution defined by
\[Ax = b,\]where \(A\) is a matrix in \(\mathbb{R}^{m\times n}\), \(x\) is a solution vector in \(\mathbb{R}^n\) and \(b\) is a given data vector in \(\mathbb{R}^m\).
The solution is usually calculated by the least square method, which is defined by
\[ \begin{align}\begin{aligned}x_\text{ls} :&= \text{argmin} \{ ||Ax-b||^2 \} \\\ &= ( A^\mathsf{T} A )^{-1} A^\mathsf{T} b.\end{aligned}\end{align} \]This problem is often ill-posed, so the solution is estimated by adding the regularization term like \(||Lx||^2\) to the right hand side of the equation:
\[ \begin{align}\begin{aligned}x_\lambda :&= \text{argmin} \{ ||Ax-b||^2 + \lambda ||Lx||^2 \} \\\ &= (A^\mathsf{T} A + \lambda L^\mathsf{T} L)^{-1} A^\mathsf{T}\ b,\end{aligned}\end{align} \]where \(\lambda\in\mathbb{R}\) is the reguralization parameter and \(L \in \mathbb{R}^{n\times n}\) is a matrix operator in regularization term (e.g. laplacian).
The SVD components are based on the following equation:
\[U\Sigma V^\mathsf{T} = \begin{pmatrix} u_1 & \cdots & u_r \end{pmatrix} \ \text{diag}(\sigma_1,..., \sigma_r) \ \begin{pmatrix} v_1 & \cdots & v_r \end{pmatrix}^\mathsf{T} = AL^{-1}\]Using this components allows to reconstruct the estimated solution \(x_\lambda\) as follows:
\[\begin{split}x_\lambda &= \tilde{V}W\Sigma^{-1}U^\mathsf{T}b \\ &= \begin{pmatrix} \tilde{v}_1 & \cdots & \tilde{v}_r \end{pmatrix} \ \text{diag}(w_1(\lambda), ..., w_r(\lambda)) \ \text{diag}(\sigma_1^{-1}, ..., \sigma_r^{-1}) \begin{pmatrix} u_1^\mathsf{T}b \\ \vdots \\ u_r^\mathsf{T}b \end{pmatrix} \\ &= \sum_{i=0}^{r} w_i(\lambda)\frac{u_i^\mathsf{T} b}{\sigma_i} \tilde{v}_i,\end{split}\]where \(r\) is the rank of \(A\) (\(r \leq \min(m, n)\)), \(w_i\) is the window function, \(\sigma_i\) is the singular value of \(A\) and \(\tilde{v}_i\) is a \(i\)-th column vector of the inverted solution basis: \(\tilde{V} = L^{-1}V \in \mathbb{R}^{n\times r}\).
\(w_i\) is defined as follows:
\[w_i(\lambda) \equiv \frac{1}{1 + \lambda / \sigma_i^2}.\]Methods
eta(beta)Calculate squared regularization norm: \(\eta = ||Lx_\lambda||^2\)
eta_diff(beta)Calculate differential of
eta: \(\eta' = \frac{d\eta}{d\lambda}\)inverted_solution(beta)Calculate the inverted solution using SVD components at given regularization parameter.
regularization_norm(beta)Return the residual norm: \(\sqrt{\eta} = ||L x_\lambda||\)
residual_norm(beta)Return the residual norm: \(\sqrt{\rho} = ||Ax_\lambda - b||\)
rho(beta)Calculate squared residual norm: \(\rho = ||Ax_\lambda - b||^2\).
solve([bounds, stepsize])Solve the ill-posed inversion equation.
w(beta)Calculate window function using regularization parameter \(\lambda\).
Attributes
The inverted solution basis \(\tilde{V} \in \mathbb{R}^{n\times r}\).
Given data for inversion calculation.
Optimal regularization parameter defined after
solveis executed.Singular values of \(A\)
Left singular vectors of \(A\).