Matrix calculus#

While training a machine learning model, often some function \(\mathcal L(\boldsymbol X)\) of a matrix \(\boldsymbol X\) is being minimized or maximized. That’s why it is important to elaborate a neat notation for differentials and gradients of such functions.

Differentiating functions of matrices#

Let \(f\colon \mathbb R^{m\times n} \to \mathbb R\) be a real-valued function of matrix \(\boldsymbol X\). Such function can be differentiated similar (61) as a function of vector from \(\mathbb R^{mn}\):

(66)#\[ Df(\boldsymbol X)[\boldsymbol H] = \sum\limits_{i=1}^m \sum\limits_{j=1}^n \frac{\partial f (\boldsymbol X)}{\partial X_{ij}} H_{ij} = \mathrm{tr}\big(\nabla f(\boldsymbol X)^\mathsf{T} \boldsymbol H\big).\]

Здесь мы упаковали градиент функции \(f\) в матрице того же размера, что и матрица \(\boldsymbol X\), а также воспользовались равенством

\[ \sum\limits_{i=1}^m \sum\limits_{j=1}^n A_{ij} B_{ij} = \mathrm{tr} (\boldsymbol A^\mathsf{T} \boldsymbol B), \quad A, B \in \mathbb R^{m\times n}. \]

Using more traditional notation, we can rewrite (66) as

\[ df(\boldsymbol X) = \mathrm{tr}\big(\nabla f(\boldsymbol X)^\mathsf{T} d\boldsymbol X\big). \]

Note that once again gradient \(\nabla f(\boldsymbol X)\) has the same shape as input variable \(\boldsymbol X\). Here it is an \(m\times n\) matrix:

\[ \big(\nabla f(\boldsymbol X)\big)_{ij} = \frac{\partial f (\boldsymbol X)}{\partial X_{ij}}, \quad 1\leqslant i \leqslant m, \quad 1 \leqslant j \leqslant n. \]

Rules of matrix calculus#

\(d\boldsymbol A = \boldsymbol 0\)

\(d(\boldsymbol{AXB}) = \boldsymbol A(d\boldsymbol X)\boldsymbol B\)

\(d(\mathrm{tr}(\boldsymbol {AX})) = \mathrm{tr}(\boldsymbol A\cdot d\boldsymbol X)\)

\(d(\alpha \boldsymbol X + \beta \boldsymbol Y) = \alpha d\boldsymbol X + \beta d\boldsymbol Y.\)

\(d(\boldsymbol X^\mathsf{T}) = (d\boldsymbol X)^{\mathsf T}\)

\(d(\boldsymbol{XY}) = d\boldsymbol X \cdot \boldsymbol Y + \boldsymbol X \cdot d\boldsymbol Y.\)

\(d\langle\boldsymbol X, \boldsymbol Y\rangle = \langle d\boldsymbol X , \boldsymbol Y\rangle + \langle\boldsymbol X , d\boldsymbol Y\rangle.\)

Here \(\boldsymbol A\) and \(\boldsymbol B\) are constant matrices, \(\boldsymbol X\) and \(\boldsymbol Y\) are variable matrices, \(\alpha, \beta \in \mathbb R\).

Examples of matrix calculus#

Differential of inverse matrix#

Вычислим дифференциал обратной матрицы: \(f(\boldsymbol X) = \boldsymbol X^{-1}\), где \(\boldsymbol X\) — невырожденная квадратная матрица.

Продифференцируем равенство \(\boldsymbol I = \boldsymbol X\cdot \boldsymbol X^{-1}\):

\[ \boldsymbol 0 = d\boldsymbol I = d\boldsymbol X \cdot \boldsymbol X^{-1} + \boldsymbol X \cdot d\boldsymbol X^{-1}. \]

Отсюда уже легко выражается искомый дифференциал:

\[ d\boldsymbol X^{-1} = - \boldsymbol X^{-1}\cdot d\boldsymbol X \cdot \boldsymbol X^{-1}. \]

Warning

Внимательный читатель заметит, что данное решение предполагает, что дифференцируемость функции \(f\) уже известна. Полное решение можно прочитать здесь (пример А.14).

Gradient of determinant#

Вычислим градиент определителя: \(f(\boldsymbol X) = \det(\boldsymbol X)\), где \(\boldsymbol X\) — квадратная матрица.

В предыдущих примерах мы изо всех сил старались не писать матричных элементов, но сейчас, увы, придётся. Попробуем вычислить \(\frac{\partial f}{\partial{X_{ij}}}\). Для этого разложим определитель по \(i\)-й строке:

\[ \det(\boldsymbol X) = \sum_{j}X_{ij}\cdot(-1)^{i + j}M_{ij}, \]

где \(M_{ij}\) — это определитель подматрицы, полученной из исходной выбрасыванием \(i\)-й строки и \(j\)-го столбца. Теперь мы видим, что определитель линеен по переменной \(X_{ij}\), причём коэффициент при ней равен \((-1)^{i + j}M_{ij}\). Таким образом,

\[ \frac{\partial f}{\partial{X_{ij}}} = (-1)^{i + j}M_{ij}. \]

Чтобы записать матрицу, составленную из таких определителей, покороче, вспомним, что

\[ \boldsymbol X^{-1} = \frac1{\det(\boldsymbol X)}\left((-1)^{i+j}M_{\color{red}{ji}}\right)_{i,j}. \]

Обратите внимание на переставленные индексы \(i\) и \(j\) (отмечены красным). Но всё равно похоже! Таким образом, для невырожденной матрицы \(\boldsymbol X\) мы можем представить градиент в виде

\[ \nabla f(\boldsymbol X) = \det(\boldsymbol X)\cdot \boldsymbol X^{-\mathsf{T}}, \]

где \(\boldsymbol X^{-\mathsf{T}}\) — более короткая запись для \((\boldsymbol X^{-1})^\mathsf{T}\).

Linear matrix function#

Let \(f(\boldsymbol X) = \boldsymbol{XW}\), где \(\boldsymbol X\) и \(\boldsymbol W\) — матрицы подходящего размера. Тогда

\[ f(\boldsymbol X + \boldsymbol H) - f(\boldsymbol X) = (\boldsymbol X + \boldsymbol H) \boldsymbol W - \boldsymbol X \boldsymbol W = \boldsymbol H \boldsymbol W. \]

Получилась линейная по \(\boldsymbol H\) функция, поэтому она и является дифференциалом функции \(f\) в точке \(\boldsymbol X\): \(Df(\boldsymbol X) [\boldsymbol H] = \boldsymbol{HW}\). Допустима также запись \(df(\boldsymbol X) = d\boldsymbol X\cdot \boldsymbol W\).

More rules and examples of matrix calculus can be found in this cookbook (from p.8).

Exercises#

  1. Calculate \(\nabla f\) if \(f(\boldsymbol X) = \boldsymbol a^\mathsf{T} \boldsymbol X \boldsymbol b\).

  2. Calculate \(\nabla f\) if \(f(\boldsymbol X) = \log(\det(\boldsymbol X))\).

  3. Calculate \(\nabla f\) if \(f(\boldsymbol X) = \mathrm{tr}(\boldsymbol{AX}^{\mathsf T}\boldsymbol X)\).

  4. Let \(f(\boldsymbol X) = \det\left(\boldsymbol{AX}^{-1}\boldsymbol B\right)\). Calculate \(\nabla f\) if

    • all matrices are square;

    • matrices \(\boldsymbol A\) and \(\boldsymbol B\) are rectangular.

  5. Find differential of \(f(\boldsymbol W) = \boldsymbol{XW}\).

  6. Show that inner product in the space of matrices of shape \(\mathbb R^{m\times n}\) can be defined as \(\langle \boldsymbol A, \boldsymbol B \rangle = \mathrm{tr} (\boldsymbol A^\mathsf{T} \boldsymbol B)\).