Multivariate calculus#
Перейдём теперь к более общей ситуации. Пусть заданы два конечномерных пространства \(U\) и \(V\) (например, векторов или матриц). Функция \(f \colon X \to V\), \(X \subset U\), дифференцируема в точке \(x\in X\), если найдётся такой линейный оператор \(L\colon U \to V\), что справедливо равенство
Линейное отображение \(L\) из мира \(x\)-ов в мир значений \(f\) называется дифференциалом (производной, производным отображением) функции \(f\) в точке \(x\) и обозначается \(df(x)\) или \(Df(x)[h]\). Фактически дифференциал зависит от двух аргументов: \(df \colon X\times U \to V\), причём по второму аргументу он линеен. Среди всех линейных операторов из \(U\) в \(V\) дифференциал наилучшим образом приближает приращение функции:
Note
Нотация \(Df(x)[h]\) для дифференциала выглядит несколько громоздко, зато в неё явно включены обе переменные, от которых зависит дифференциал. При вычислении дифференциала функции \(f\) в произвольной точке \(x\) часто используют более короткую запись \(df(x)\) или даже \(df\); переменная приращения в таких случаях традиционно обозначается через \(dx\). Обозначение \(dx\) следует воспринимать как единый неделимый символ, по смыслу полностью тождественный приращению \(h\).
Differentials of scalar functions#
In the previous section we considered the simplest case when \(f \colon \mathbb R \to \mathbb R\) — скалярная функция скалярного аргумента. Тогда её дифференциал записывается как \(df(x) = f'(x) dx\) или \(Df(x)[h] = f'(x)h\). Линейный оператор из \(\mathbb R\) в \(\mathbb R\) задаётся одним действительным числом, и в данном случае оно равно \(f'(x)\). Now see what happens when the function \(f\) has multidimensional domain.
Functions of vectors#
Пусть \(f\colon \mathbb R^n \to \mathbb R\) — скалярная функция векторного аргумента \(\boldsymbol x = (x_1, \ldots, x_n)^\top\) (под вектором по умолчанию понимается вектор-столбец). Тогда
где
— градиент функции \(f\), а \(\langle \bullet, \bullet \rangle\) — стандартное скалярное произведение в \(\mathbb R^n\). Также дифференциал записывают как \(df(\boldsymbol x) = \nabla f(\boldsymbol x)^\top d\boldsymbol x\). Обратите внимание, что приращение \(d\boldsymbol x\) и градиент \(\nabla f\) представляют собой вектор-столбец того же размера, что и переменная \(\boldsymbol x\). Компоненты градиента — это частные производные функции \(f\), которые сами являются функциями от переменной \(\boldsymbol x\), поэтому градиент также зависит от \(\boldsymbol x\).
Вопрос на подумать. Как записать в векторной форме дифференциал функции \(f\colon \mathbb R^n \to \mathbb R\), принимающей на вход вектор-строку, а не вектор-столбец?
Попробуйте прийти к ответу самостоятельно, прежде чем смотреть решение.
Поскольку \(\boldsymbol x\) теперь вектор-строка, такую же форму имеют и градиент, и приращение. Подружить их в скалярном произведении, в котором всегда вектор-строка умножается на вектор-столбец, можно так:
а в другой нотации — так:
Exercise
Let \(\boldsymbol a \in \mathbb R^n\) be a fixed vector and
Find \(\nabla f(\boldsymbol x)\).
Functions of matrices#
Пусть \(f\colon \mathbb R^{m\times n} \to \mathbb R\) — скалярная функция матричного аргумента \(\boldsymbol X\). Такую функцию можно представлять себе как функцию от вектора из \(\mathbb R^{mn}\) в \(\mathbb R\) и дифференцировать аналогично (45):
Здесь мы упаковали градиент функции \(f\) в матрице того же размера, что и матрица \(\boldsymbol X\), а также воспользовались равенством
Упражнение. Докажите, что формула \(\langle \boldsymbol A, \boldsymbol B \rangle = \mathrm{tr} (\boldsymbol A^\top \boldsymbol B)\) задаёт скалярное произведение в пространстве матриц \(\mathbb R^{m\times n}\).
Hint
Требуется проверить следующие свойства:
\(\langle \boldsymbol A, \boldsymbol A \rangle \geq 0\), причём \(\langle \boldsymbol A, \boldsymbol A \rangle = 0 \iff \boldsymbol A = \boldsymbol 0\);
\(\langle \boldsymbol A, \boldsymbol B \rangle = \langle \boldsymbol B, \boldsymbol A \rangle\);
\(\langle \alpha \boldsymbol A + \beta \boldsymbol B, \boldsymbol C \rangle = \alpha\langle \boldsymbol A, \boldsymbol C \rangle + \beta\langle \boldsymbol B, \boldsymbol C \rangle\).
Gradients shape#
В (45) и (46) пришлось столкнуться с давним знакомым из матанализа: градиентом \(\nabla f\) скалярной функции \(f\), который состоит из частных производных этой функции по всем координатам её аргумента \(x\). При этом его обычно упаковывают в ту же форму, что и сам аргумент: если \(x\) — вектор-строка, то и градиент записывается вектор-строкой, а если \(x\) — матрица, то и градиент тоже будет матрицей того же размера. Это важно, например, для алгоритма градиентного спуска, при осуществлении которого мы должны уметь прибавлять градиент к точке, в которой он посчитан.
Note
Иногда приходится дифференцировать функции, зависящие от различных наборов аргументов, и тогда во избежание неоднозачности в индексе у буквы \(\nabla\) указывают аргумент, по которому осуществляется дифференцирование. Например, запись \(\nabla_{\boldsymbol w} f(\boldsymbol X, \boldsymbol y, \boldsymbol w)\) недвусмысленно даёт понять, что мы дифференцируем фукнцию \(f\) по вектору \(\boldsymbol w\), а \(\boldsymbol X\) и \(\boldsymbol y\) рассматриваем при этом как фиксированные параметры.
Differentials of vector functions#
Посмотрим теперь, как выглядит дифференцирование для функций, которые на выходе выдают не скаляр, а вектор или матрицу.
Applying a function elementwise#
Пусть
где \(\varphi \colon \mathbb R \to \mathbb R\) — некоторая гладкая функция. Тогда
В последнем выражении происходит покомпонентное умножение. Если обозначить через \(\varphi'(\boldsymbol x)\) покомпонетное применение функции \(\varphi'\) к координатам вектора \(\boldsymbol x = (x_1, \ldots, x_m)^\top\), то дифференциал функции \(f\) можно записать как
Linear matrix function#
Let \(f(\boldsymbol X) = \boldsymbol{XW}\), где \(\boldsymbol X\) и \(\boldsymbol W\) — матрицы подходящего размера. Тогда
Получилась линейная по \(\boldsymbol H\) функция, поэтому она и является дифференциалом функции \(f\) в точке \(\boldsymbol X\): \(Df(\boldsymbol X) [\boldsymbol H] = \boldsymbol{HW}\). Допустима также запись \(df(\boldsymbol X) = d\boldsymbol X\cdot \boldsymbol W\).
Exercise
Найдите дифференциал функции \(f(\boldsymbol W) = \boldsymbol{XW}\), где \(\boldsymbol X\) и \(\boldsymbol W\) — матрицы подходящего размера.
Vector-to-vector functions#
Пусть \(f\colon \mathbb R^m \to \mathbb R^n\), тогда дифференциал должен быть линейным оператором из \(\mathbb R^m\) в \(\mathbb R^n\), то есть матрицей размера \(n\times m\). И, действительно, с помощью матрицы Якоби
дифференциал записывается как \(Df(\boldsymbol x)[\boldsymbol h] = \boldsymbol J_f(\boldsymbol x)\boldsymbol h\), или \(df(\boldsymbol x) = \boldsymbol J_f(\boldsymbol x) d\boldsymbol x\).
Exercise
According to (48), the differential of the function (47) should be a \(m\times m\) matrix. How does it look like?
Вопрос на подумать. Как записать в векторно-матричной форме дифференциал функции \(f\colon \mathbb R^m \to \mathbb R^n\), отображающей вектор-строку \(\boldsymbol x = (x_1, \ldots, x_m)\) в вектор-строку \((f_1(\boldsymbol x), \ldots, f_n(\boldsymbol x))\)?
Попробуйте прийти к ответу самостоятельно, прежде чем смотреть решение.
Rules of differentiation#
Производная константы. Если \(f(x) = \mathrm{const}\), то \(f(x+h) - f(x) = 0\), и по определению \(Df(x)[h] = 0\). По этой же причине градиент постоянной функции векторного аргумента также равен нулю.
Дифференциал линейного отображения. Пусть \(f(x)\) — линейное отображение. Тогда
Поскольку справа линейное отображение, то по определению оно и является дифференциалом \(Df(x)[h]\). Мы уже видели примеры таких ситуаций выше, когда рассматривали отображения умножения на матрицу слева или справа.
Линейность дифференциала. Пусть функции \(f \colon X \to V\) и \(g \colon X \to V\) дифференцируемы в точке \(x\in X\) и \(\alpha, \beta \in \mathbb R\). Тогда функция \(\alpha f + \beta g\) дифференцируема в точке \(x\), и
\[ D(\alpha f + \beta g)(x)[h] = \alpha Df(x)[h] + \beta Dg(x)[h]. \]Дифференциал произведения. Пусть функции \(u \colon X \to \mathbb R\), \(v \colon X \to V\) дифференцируемы в точке \(x\). Тогда функция \(u\cdot v\) дифференцируема в точке \(x\), и
\[ D(uv)(x)[h] = Du(x)[h]\cdot v(x) + u(x)\cdot Dv(x)[h]. \]Это же правило сработает и для скалярного произведения:
\[ D \langle u(x), v(x)\rangle [h] = \langle Du(x)[h], v(x)\rangle + \langle u(x), Dv(x)[h]\rangle. \]Производная сложной функции. Пусть функция \(u \colon X \to Y\) дифференцируема в точке \(x\), а функция \(v \colon Y \to Z\) дифференцируема в точке \(u(x)\). Тогда их композиция \(v\circ u\) дифференцируема в точке \(x\), и
\[ D(u\circ v)(x)[h] = Dv(u(x))\Big[Du(x)[h]\Big]. \]Proof
Обозначим \(f(x) = (v\circ u)(x)\), тогда
\[ f(x+h) - f(x) = v(u(x+h)) - v(u(x)) \approx v\big(u(x) + Du(x)[h]\big) - v(u(x)). \]Получилось приращение функции \(v\), взятое в точке \(u(x)\) с приращением \(Du(x)[h]\). Приближённо оно равно дифференциалу \(Dv(u(x))\Big[Du(x)[h]\Big]\).
В частности, если \(Y \subset \mathbb R\) и \(Z = \mathbb R\), то \(d(v\circ u)(x) = v'(u(x))du(x)\).
Важный частный случай: дифференцирование перестановочно с линейным отображением. Пусть \(f(x) = L(v(x))\), где \(L\) — линейное отображение. Тогда \(DL(v(x))\) совпадает с самим \(L\) и формула упрощается:
\[ D(L\circ v)(x)[h] = L(Dv(x)[h]). \]
Exercise
Let \(\boldsymbol A \in \mathbb R^{n\times n}\) and
Find \(\nabla f(\boldsymbol x)\).
Solution
Воспользуемся формулой дифференциала произведения:
Чтобы найти градиент, нам надо это выражение представить в виде \(\langle ?, d\boldsymbol x\rangle\). Для этого поменяем местами множители первого произведения и перенесём \(\boldsymbol A\) в другую сторону (\(\boldsymbol A\) перенесётся с транспонированием):
Отсюда получаем, что \(\nabla f(\boldsymbol x) = (\boldsymbol A^T + \boldsymbol A)\boldsymbol x\).
Second differential#
Дифференциал \(Df(x)[h]\) функции
где \(U\) и \(V\) — некоторые конечномерные пространства, зависит от двух аргументов: \(x\in X\) и \(h\in U\). Зафиксировав приращение \(h_1\in U\), получим функцию от переменной \(x\):
А значит, её тоже можно попробовать продифференцировать! Если это возможно, то её дифференциал \(Dg(x)[h_2]\) называется вторым дифференциалом функции \(f\), и обозначается
На сей раз это не линейный оператор, а билинейная форма: при фиксированном \(x_0\in X\) функция \(D^2f(x_0)[h_1, h_2]\) линейна по каждому из аргументов приращения.
Для функций \(f\colon \mathbb R^n \to \mathbb R\) второй дифференциал, как и любую билинейную форму, можно представить в виде матрицы:
Матрица \(\boldsymbol H_x\) назвается гессианом функции \(f\) в точке \(\boldsymbol x\) и обозначается \(\nabla^2 f( \boldsymbol x)\). Гессиан состоит из вторых частных производных:
Если все вторые частные производные функции \(f\) непрерывны, то её гессиан представляет собой симметричную матрицу (в этом состоит утверждение теоремы Шварца). Также для таких функций справедливо разложение по формуле Тейлора до второго порядка:
или, в другой записи,
Из формулы Тейлора вытекает следующее полезное утверждение для поиска точек локального экстремума.
Теорема. Пусть функция \(f:\mathbb{R}^m\to\mathbb{R}\) имеет непрерывные частные производные второго порядка \(\frac{\partial^2 f}{\partial x_i\partial x_j}\) в окрестности точки \(\boldsymbol x_0\), причём \(\nabla f(\boldsymbol x_0) = 0\). Тогда точка \(\boldsymbol x_0\) является точкой локального минимума функции \(f\), если гессиан \(\nabla^2f(\boldsymbol x_0)\) положительно определён, и точкой локального максимума, если он отрицательно определён.
Проверить матрицу на положительную или отрицательную определённость можно с помощью критерия Сильвестра.
Exercise
Let \(\boldsymbol A \in \mathbb R^{m\times n}\), \(\boldsymbol b \in \mathbb R^m\) and
Find \(\nabla f(\boldsymbol x)\) and \(\nabla^2 f(\boldsymbol x)\). At which point \(\widehat{\boldsymbol x}\) the global minimum of \(f\) is attained?
See also
The similar form has the loss function of linear regression.