Loading [MathJax]/extensions/TeX/newcommand.js
Prev Next cholesky_theory

\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }This is cppad-20221105 documentation. Here is a link to its current documentation .
AD Theory for Cholesky Factorization

Reference
See section 3.6 of Sebastian F. Walter's Ph.D. thesis, Structured Higher-Order Algorithmic Differentiation in the Forward and Reverse Mode with Application in Optimum Experimental Design , Humboldt-Universitat zu Berlin, 2011.

Notation

Cholesky Factor
We are given a positive definite symmetric matrix A \in \B{R}^{n \times n} and a Cholesky factorization A = L L^\R{T} where L \in \B{R}^{n \times n} is lower triangular.

Taylor Coefficient
The matrix A is a function of a scalar argument t . For k = 0 , \ldots , K , we use A_k for the corresponding Taylor coefficients; i.e., A(t) = o( t^K ) + \sum_{k = 0}^K A_k t^k where o( t^K ) / t^K \rightarrow 0 as t \rightarrow 0 . We use a similar notation for L(t) .

Lower Triangular Part
For a square matrix C , \R{lower} (C) is the lower triangular part of C , \R{diag} (C) is the diagonal matrix with the same diagonal as C and \R{low} ( C ) = \R{lower} (C) - \frac{1}{2} \R{diag} (C)

Forward Mode
For Taylor coefficient order k = 0 , \ldots , K the coefficients A_k \in \B{R}^{n \times n} , and satisfy the equation A_k = \sum_{\ell=0}^k L_\ell L_{k-\ell}^\R{T} In the case where k=0 , the A_0 = L_0 L_0^\R{T} The value of L_0 can be computed using the Cholesky factorization. In the case where k > 0 , A_k = L_k L_0^\R{T} + L_0 L_k^\R{T} + B_k where B_k = \sum_{\ell=1}^{k-1} L_\ell L_{k-\ell}^\R{T} Note that B_k is defined in terms of Taylor coefficients of L(t) that have order less than k . We also note that L_0^{-1} ( A_k - B_k ) L_0^\R{-T} = L_0^{-1} L_k + L_k^\R{T} L_0^\R{-T} The first matrix on the right hand side is lower triangular, the second is upper triangular, and the diagonals are equal. It follows that L_0^{-1} L_k = \R{low} [ L_0^{-1} ( A_k - B_k ) L_0^\R{-T} ] L_k = L_0 \R{low} [ L_0^{-1} ( A_k - B_k ) L_0^\R{-T} ] This expresses L_k in term of the Taylor coefficients of A(t) and the lower order coefficients of L(t) .

Lemma 1
We use the notation \dot{C} for the derivative of a matrix valued function C(s) with respect to a scalar argument s . We use the notation \bar{S} and \bar{L} for the partial derivative of a scalar value function \bar{F}( S, L) with respect to a symmetric matrix S and an lower triangular matrix L . Define the scalar valued function \hat{F}( C ) = \bar{F} [ S , \hat{L} (S) ] We use \hat{S} for the total derivative of \hat{F} with respect to S . Suppose that \hat{L} ( S ) is such that \dot{L} = L_0 \R{low} ( L_0^{-1} \dot{S} L_0^\R{-T} ) for any S(s) . It follows that \hat{S} = \bar{S} + \frac{1}{2} ( M + M^\R{T} ) where M = L_0^\R{-T} \R{low}( L_0^\R{T} \bar{L} )^\R{T} L_0^{-1}

Proof
\partial_s \hat{F} [ S(s) , L(s) ] = \R{tr} ( \bar{S}^\R{T} \dot{S} ) + \R{tr} ( \bar{L}^\R{T} \dot{L} ) \R{tr} ( \bar{L}^\R{T} \dot{L} ) = \R{tr} [ \bar{L}^\R{T} L_0 \R{low} ( L_0^{-1} \dot{S} L_0^\R{-T} ) ] = \R{tr} [ \R{low} ( L_0^{-1} \dot{S} L_0^\R{-T} )^\R{T} L_0^\R{T} \bar{L} ] = \R{tr} [ L_0^{-1} \dot{S} L_0^\R{-T} \R{low}( L_0^\R{T} \bar{L} ) ] = \R{tr} [ L_0^\R{-T} \R{low}( L_0^\R{T} \bar{L} ) L_0^{-1} \dot{S} ] \partial_s \hat{F} [ S(s) , L(s) ] = \R{tr} ( \bar{S}^\R{T} \dot{S} ) + \R{tr} [ L_0^\R{-T} \R{low}( L_0^\R{T} \bar{L} ) L_0^{-1} \dot{S} ] We now consider the (i, j) component function, for a symmetric matrix S(s) , defined by S_{k, \ell} (s) = \left\{ \begin{array}{ll} 1 & \R{if} \; k = i \; \R{and} \; \ell = j \\ 1 & \R{if} \; k = j \; \R{and} \; \ell = i \\ 0 & \R{otherwise} \end{array} \right\} This shows that the formula in the lemma is correct for \hat{S}_{i,j} and \hat{S}_{j,i} . This completes the proof because the component (i, j) was arbitrary.

Lemma 2
We use the same assumptions as in Lemma 1 except that the matrix S is lower triangular (instead of symmetric). It follows that \hat{S} = \bar{S} + \R{lower}(M) where M = L_0^\R{-T} \R{low}( L_0^\R{T} \bar{L} )^\R{T} L_0^{-1} The proof of this lemma is identical to Lemma 2 except that component function is defined by S_{k, \ell} (s) = \left\{ \begin{array}{ll} 1 & \R{if} \; k = i \; \R{and} \; \ell = j \\ 0 & \R{otherwise} \end{array} \right\}

Reverse Mode

Case k = 0
For the case k = 0 , \dot{A}_0 = \dot{L}_0 L_0^\R{T} + L_0 \dot{L}_0^\R{T} L_0^{-1} \dot{A}_0 L_0^\R{-T} = L_0^{-1} \dot{L}_0 + \dot{L}_0^\R{T} L_0^\R{-T} \R{low} ( L_0^{-1} \dot{A}_0 L_0^\R{-T} ) = L_0^{-1} \dot{L}_0 \dot{L}_0 = L_0 \R{low} ( L_0^{-1} \dot{A}_0 L_0^\R{-T} ) It follows from Lemma 1 that \bar{A}_0 \stackrel{+}{=} \frac{1}{2} ( M + M^\R{T} ) where M = L_0^\R{-T} \R{low} ( L_0^\R{T} \bar{L}_0 )^\R{T} L_0^{-1} and \bar{A}_0 is the partial before and after is before and after L_0 is removed from the scalar function dependency.

Case k > 0
In the case where k > 0 , A_k = L_k L_0^\R{T} + L_0 L_k^\R{T} + B_k where B_k is defined in terms of Taylor coefficients of L(t) that have order less than k . It follows that \dot{L}_k L_0^\R{T} + L_0 \dot{L}_k^\R{T} = \dot{A}_k - \dot{B}_k - \dot{L}_0 L_k^\R{T} - L_k \dot{L}_0^\R{T} L_0^{-1} \dot{L}_k + \dot{L}_k^\R{T} L_0^\R{-T} = L_0^{-1} ( \dot{A}_k - \dot{B}_k - \dot{L}_0 L_k^\R{T} - L_k \dot{L}_0^\R{T} ) L_0^\R{-T} L_0^{-1} \dot{L}_k = \R{low} [ L_0^{-1} ( \dot{A}_k - \dot{B}_k - \dot{L}_0 L_k^\R{T} - L_k \dot{L}_0^\R{T} ) L_0^\R{-T} ] \dot{L}_k = L_0 \R{low} [ L_0^{-1} ( \dot{A}_k - \dot{B}_k - \dot{L}_0 L_k^\R{T} - L_k \dot{L}_0^\R{T} ) L_0^\R{-T} ] The matrix A_k is symmetric, it follows that \bar{A}_k \stackrel{+}{=} \frac{1}{2} ( M_k + M_k^\R{T} ) where M_k = L_0^\R{-T} \R{low} ( L_0^\R{T} \bar{L}_k )^\R{T} L_0^{-1} The matrix B_k is also symmetric, hence \bar{B}_k = - \; \frac{1}{2} ( M_k + M_k^\R{T} ) We define the symmetric matrix C_k (s) by \dot{C}_k = \dot{L}_0 L_k^\R{T} + L_k \dot{L}_0^\R{T} and remove the dependency on C_k with \R{tr}( \bar{C}_k^\R{T} \dot{C}_k ) = \R{tr}( \bar{B}_k^\R{T} \dot{C}_k ) = \R{tr}( \bar{B}_k^\R{T} \dot{L}_0 L_k^\R{T} ) + \R{tr}( \bar{B}_k^\R{T} L_k \dot{L}_0^\R{T} ) = \R{tr}( L_k^\R{T} \bar{B}_k^\R{T} \dot{L}_0 ) + \R{tr}( L_k^\R{T} \bar{B}_k \dot{L}_0 ) = \R{tr}[ L_k^\R{T} ( \bar{B}_k + \bar{B}_k^\R{T} ) \dot{L}_0 ] Thus, removing C_k from the dependency results in the following update to \bar{L}_0 : \bar{L}_0 \stackrel{+}{=} \R{lower} [ ( \bar{B}_k + \bar{B}_k^\R{T} ) L_k ] which is the same as \bar{L}_0 \stackrel{+}{=} 2 \; \R{lower} [ \bar{B}_k L_k ] We still need to remove B_k from the dependency. It follows from its definition that \dot{B}_k = \sum_{\ell=1}^{k-1} \dot{L}_\ell L_{k-\ell}^\R{T} + L_\ell \dot{L}_{k-\ell}^\R{T} \R{tr}( \bar{B}_k^\R{T} \dot{B}_k ) = \sum_{\ell=1}^{k-1} \R{tr}( \bar{B}_k^\R{T} \dot{L}_\ell L_{k-\ell}^\R{T} ) + \R{tr}( \bar{B}_k^\R{T} L_\ell \dot{L}_{k-\ell}^\R{T} ) = \sum_{\ell=1}^{k-1} \R{tr}( L_{k-\ell}^\R{T} \bar{B}_k^\R{T} \dot{L}_\ell ) + \sum_{\ell=1}^{k-1} \R{tr}( L_\ell^\R{T} \bar{B}_k \dot{L}_{k-\ell} ) We now use the fact that \bar{B}_k is symmetric to conclude \R{tr}( \bar{B}_k^\R{T} \dot{B}_k ) = 2 \sum_{\ell=1}^{k-1} \R{tr}( L_{k-\ell}^\R{T} \bar{B}_k^\R{T} \dot{L}_\ell ) Each of the \dot{L}_\ell matrices is lower triangular. Thus, removing B_k from the dependency results in the following update for \ell = 1 , \ldots , k-1 : \bar{L}_\ell \stackrel{+}{=} 2 \; \R{lower}( \bar{B}_k L_{k-\ell} )
Input File: omh/theory/cholesky.omh