Найти в Дзене

Матричное дифференцирование

Дойдя до этой темы, я не нашёл чёткого, простого и понятного объяснения. Так я решил написать эту статью. Постарался написать простым понятным языком. Техники дифференцирования матриц активно применяются в машинном обучении и оптимизации, поэтому важно понимать как это делать. Это сильно упрощает жизнь при вычислениях, например, если мы хотим продифференцировать некоторую функцию которая состоит из матриц и векторов, не опытный пользователь начнёт расписывать через суммы и, исходя из условий, пытаться дифференцировать по нужной переменной. Но это сложный путь, путь который предлагает техника матричного дифференцирования проще. Что стоит знать: Далее будем обозначать так: Все векторы по умолчанию считаются столбцами. Рассмотрим функцию f(x): Rⁿ -> R (это значит что на вход принимает вектор, а на выходе получается обычное вещественное число) Попробуем найти производную по x1: Что будем делать? Попробуем расписать как сумму и найти производную: Если не совсем понятно почему сумма именно
Оглавление

Дойдя до этой темы, я не нашёл чёткого, простого и понятного объяснения. Так я решил написать эту статью. Постарался написать простым понятным языком.

Введение

Техники дифференцирования матриц активно применяются в машинном обучении и оптимизации, поэтому важно понимать как это делать. Это сильно упрощает жизнь при вычислениях, например, если мы хотим продифференцировать некоторую функцию которая состоит из матриц и векторов, не опытный пользователь начнёт расписывать через суммы

и, исходя из условий, пытаться дифференцировать по нужной переменной. Но это сложный путь, путь который предлагает техника матричного дифференцирования проще.

Что стоит знать:

  • Операции над матрицами (транспонирование, умножение)
  • Что такое производная и дифференциал

Далее будем обозначать так:

-2

Все векторы по умолчанию считаются столбцами.

Основы матричного дифференцирования

Рассмотрим функцию f(x): Rⁿ -> R (это значит что на вход принимает вектор, а на выходе получается обычное вещественное число)

-3

Попробуем найти производную по x1:

-4

Что будем делать? Попробуем расписать как сумму и найти производную:

-5

Если не совсем понятно почему сумма именно такая, советую на бумажке расписать матрицы и станет легче. Далее зафиксируем i=1 и посмотрим, что получается, аналогично поступим и с j=1:

-6

Если приглядеться, то можно заметить, что первое слагаемое это матричное произведение по первому компоненту(т.е. самое первое произведение строки на столбец), значит:

-7

Соответственно второе слагаемое получается таким же, как и первое, если поменять местами i и 1 в левой части верхней формулы, а если мы меняем индексы местами, то такая операция называется транспонированием и обозначается как A^T(А в степени T). Получается если мы хотим взять производную просто по x, а не по x1, то получается:

Полный градиент функции
Полный градиент функции

Второе выражение называют градиентом функции f(x). Градиент - это вектор-столбец частных производных по каждому x:

Что такое градиент
Что такое градиент

Как то сложно мы дошли до производной или так называемого полного градиента, не кажется? Можно ли проще? Да! Предлагается сделать всё в матрично-векторной форме. Для этого вспомним что такое дифференциал.

Дифференциал

Пусть даны нормированные пространства U и V (например U=R или U=Rⁿ) и функция f: U->V(т.e. функция f получает на вход что-то из пространства U и преобразует в V, например f:Rⁿ->R), тогда f называется дифференцируемой в точке x0 из множества V, если

Стандартная запись
Стандартная запись

или

Новая запись
Новая запись

где h из множества U, а Dx0 - линейный оператор и h->0.

Дифференциал равен:

-12

Следует научиться пользоваться последним выражением.

Свойства

Свойства дифференциала:

-13

Здесь A, B — фиксированные матрицы; α — фиксированный скаляр; X, Y — произвольные дифференцируемые матричные функции (согласованные по размерностям, чтобы все операции имели смысл); φ — произвольная дифференцируемая скалярная функция.

Также стоит вспомнить свойства транспонирования.

Свойства транспонирования:

-14

Примеры

1) f(x) : R -> R , или в контексте статьи U=R и V=R

-15

Это классический дифференциал от функции, которая принимает скаляр и возвращает скаляр, тут ничего нового.

2) f(x): Rⁿ -> R, ( U=Rⁿ и V=R )

Этот случай интереснее , так как функция на вход принимает вектор. Исходя из того, что мы знаем как устроен дифференциал можно расписать так:

-16

Но мы же договорились использовать матрицы, давайте немного перепишем:

-17

Вектор частных производных это же градиент, тогда получаем, что

-18

где градиент функции и dx - вектора. Транспонируем мы, потому что изначально все вектора у нас столбцы.

3) f(x): Rⁿ->R^(p) (R в степени p)

-19

Также берём производные по всем переменным и домножаем на dx. Левая матрица, называется матрицей Якоби и обозначается как J, тогда решение можно компактно записать так:

-20

где dx - вектор-столбец, J - матрица Якоби.

4) f(x): R^(n x m) -> R (На вход матрица размером n x m )

-21

Как же такое записать в матричном виде? Нужно вспомнить, что такое след матрицы Trace.

-22

Внимательно присмотревшись последнее выражение очень напоминает то, как мы записали дифференциал для этого случая, соединим:

-23

Если тяжело понять, советую нарисовать матрицы и попробовать провести цепочку.

Таблица дифференциалов

-24

Получается, чтобы взять производную от матричной функции, нужно её привести к одному из видов в таблице, путём взятие дифференциала от функции, вот и всё.

Пример вычисления

-25

Вывод

В ходе работы была рассмотрена техника матричного дифференцирования, напомнили свойства дифференциала и транспонирования. Надеюсь вам стало понятнее что это и как использовать.

Полезные ссылки

  1. Хэндбук яндекса (можно попрактиковаться)