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^T) = (d\boldsymbol X)^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.\)

В этой таблице предполагается, что \(\boldsymbol A\) и \(\boldsymbol B\) — постоянные матрицы, \(\boldsymbol X\) и \(\boldsymbol Y\) — переменные матрицы, \(\alpha, \beta \in \mathbb R\).

Differential of inverse matrix#

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

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

\[ 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^{-\top}, \]

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

Exercises#

  1. Calculate \(\nabla f\) if \(f(\boldsymbol X) = \boldsymbol a^\top \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}^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.