Производная по матрице: Дифференцирование матрицы :: Александр Набатчиков

Дифференцирование матрицы :: Александр Набатчиков

Обновление: 1 января 2017
Обновление: 14 июля 2019

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

Проблема в частой для технических ВУЗ-ов ситуации: на первом курсе тебе рассказывают о физических явлениях, для описания которых необходимо понимание ротора, градиента, дивергенции, а что это за операторы и как ими пользоваться — расскажут на втором курсе.

На первый взгляд ничего непонятно: оператор дифференцирования применяется к матрицам, некоторые из которых ещё и транспонированы, дифференцирование происходит по вектору и т.п. Но не стоит паниковать: есть правила для вычисления производной и от следа матрицы, и от детерминанта произведения матриц или логарифма детерминанта матрицы — в нашем (форумном) случае всё довольно просто.

Сперва опишем общие правила дифференцирования при работе с подобными объектами.

Производная вектора по скаляру — вектор той же размерности, состоящий из производных соответствующих элементов

Производная скалярной функции f от векторного аргумента x – вектор той же размерности, что и x, равный

(То есть вектор, составленный из частных производных f по элементам вектора x.)

Производная векторной функции g размерности m по векторному аргументу x размерности n – матрица размером m×n

, в которой первая строка состоит из частных производных элемента g1 по элементам вектора x и т.д.:

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

Уточню, что первая формула (как справедливо отмечено в комментариях) справедлива только для симметричной матрицы A. В общем же случае, справа будет получено выражение (A+AT)*x. Для симметричной матрицы A, оператор транспонирования даёт саму матрицу A, что позволяет упростить выражение до указанного выше вида 2*

A*x.


Собственно, возвращаясь к изначальной проблеме (вопрос на форуме):

Как продифференцировать (2.38) и получить (2.39) ?

Рассмотрим производные слагаемых из (2.38).

Для первого — всё очевидно из самого смысла производной:

Второе слагаемое (здесь воспользуемся одной из готовых формул, описанных ранее):

Третье слагаемое (воспользуемся той же готовой формулой, но предварительно немного «доработаем» выражение):

Если Вы не поняли «превращения» выше — ещё раз детальнее:

Здесь мы воспользовались свойствами транспонирования матриц:


Транспонированное произведение матриц равно произведению транспонированных матриц, взятых в обратном порядке.


[…]
Дважды транспонированная матрица А равна исходной матрице А.

— Транспонированная матрица

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

Четвёртое слагаемое (воспользуемся другой готовой формулой):

Соберём всё воедино и сгруппируем слагаемые:

Именно такой результат мы получили в (2.39).

Запись опубликована в категориях:

Алгоритмы и аспекты  
 

Матричное дифференцирование Определения

 Производной скалярной функции по вектору-столбцу() или, другими словами, градиентом является вектор-столбец ()

.

 Производной скалярной функции по вектору-строке() является вектор-строка ()

.

 Производной векторной функции () по вектору() или, другими словами, матрицей Якоби является матрица ()

.

Производной векторной функции () по вектору() или является матрица ()

.

 Производной скалярной функции по матрице () является матрица ()

.

 Производной матричной функции по скаляруs является матрица ()

.

 Второй производной скалярной функции по вектору-столбцу() или другими словами, матрицей Гессе является матрица ()

.

Свойства

 и .

 и .

 .

 .

 и .

 . Для симметричной матрицы .

 .

 .

 .

 и .

 юю.

лббььбььлб

 .

 .

 .

 .

 .

 .

 .

 .

 .

 .

Сведения из теории вероятностей и математической статистики Характеристики случайных величин Определения

Функцией распределения случайной величины называется функция, сопоставляющая числувероятность того, чтоне превышает. Функция распределения полностью характеризует отдельную случайную величину.

Если случайной величина непрерывна, то она имеет плотность, которая связана с функцией распределения соотношениями.

Квантилью уровня , где, (-квантилью) непрерывной случайной величиныназывается число, такое что.

Медианой называется-квантиль.

Модой непрерывной случайной величины называется величина, при которой плотность распределения достигает максимума, т.е. .

Если распределение непрерывной случайной величины симметрично относительно нуля, т.е.и, то двусторонней-квантилью называется число, такое что.

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

Математическое ожидание является начальным моментом первого порядка. Начальным (нецентральный) моментом -го порядка называется.

Центрированной случайной величиной называется .

Центральным моментом -го порядка случайной величиныназывается начальный момент-го порядка для соответствующей центрированной величины, т. е.. Для непрерывной случайной величины центральный момент-го порядка равен.

Дисперсией случайной величины называется центральный момент второго порядка. Для непрерывной случайной величины дисперсия равна . Среднеквадратическим отклонением называется корень из дисперсии.

Нормированной (стандартизованной) случайной величиной называется .

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

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

Для n-мерного случайного вектора (многомерной случайной величины) функцией распределения называется.

Если распределение случайного вектора непрерывно, то он имеет плотность(называемую совместной плотностью случайных величин), которая связана с функцией распределения соотношениями.

Случайные величины называются независимыми (в совокупности), если.

Ковариацией случайных величин иназывается.

Корреляцией случайных величин иназывается.

Ковариационной матрицей n -мерной случайной величины.называется.

Корреляционной матрицей n -мерной случайной величины.называется

Матрица производных — Math Insight

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

В исчислении с одной переменной вы узнали, что производная функции $f: \R \to \R$ (перепутали?) в одной точке просто действительное число, скорость возрастания функции (т. е. наклон графика) в этой точке. Мы могли бы думать об этом числе как о матрице $1 \times 1$, поэтому, если хотите, мы могли бы обозначить производную от $f(x)$ при $x=a$ как \начать{выравнивать*} Df(a) = \left[\diff{f}{x}(a)\right]. \конец{выравнивание*}

Для скалярной функции нескольких переменных таких как $f(x,y)$ или $f(x,y,z)$, мы можем думать о частные производные как скорости возрастания функции в координатных направлениях. Если функция дифференцируемый, тогда производная представляет собой просто матрицу-строку, содержащую все эти частичные производные, которые мы называем 9м$. Здесь $\vc{f}(\vc{x})$ — функция вектора $\vc{x} = (x_1,x_2,\ldots,x_n)$ выходом которого является вектор из $m$ компонент. Мы могли бы написать $\vc{f}$ по своим компонентам как \начать{собирать*} \vc{f}(\vc{x}) = (f_1(\vc{x}),f_2(\vc{x}), \cdots, f_m(\vc{x})) знак равно \left[\begin{массив}{с} f_1(\vc{x})\\f_2(\vc{x})\\ \vdots\\ f_m(\vc{x}) \end{массив}\right]. \end{собрать*} (Вспомните, что когда мы рассматриваем векторы как матрицы, мы рассматриваем их как матрицы-столбцы, таким образом, компоненты укладываются друг на друга.)

Чтобы сформировать матрицу частных производных, мы думаем о $\vc{f}(\vc{x})$ в виде матрицы-столбца, где каждый компонент является функцией со скалярным знаком. Матрица частных производных каждой компоненты $f_i(\vc{x})$ будет представлять собой матрицу строк размером $1 \times n$, как указано выше. Мы просто складываем эти матрицы-строки друг над другом, чтобы сформировать большую матрицу. Получаем, что полная $m \times n$ матрица частных производных при $\vc{x}=\vc{a}$ равна \начать{собирать*} D\vc{f}(\vc{а})= \оставил[ \begin{массив}{cccc} \displaystyle\pdiff{f_1}{x_1}(\vc{a})& \displaystyle\pdiff{f_1}{x_2}(\vc{a})& \ldots & \displaystyle\pdiff{f_1}{x_n}(\vc{a})\\ \displaystyle\pdiff{f_2}{x_1}(\vc{a})& \displaystyle\pdiff{f_2}{x_2}(\vc{a})& \ldots & \displaystyle\pdiff{f_2}{x_n}(\vc{a})\\ \vdots & \vdots & \ddots & \vdots\\ \displaystyle\pdiff{f_m}{x_1}(\vc{a})& \displaystyle\pdiff{f_m}{x_2}(\vc{a})& \ldots & \displaystyle\pdiff{f_m}{x_n}(\vc{a}) \конец{массив} \Правильно]. \end{собрать*}

Хотя нам, вероятно, следует обратиться к производной от $\vc{f}$ как линейное преобразование что связано с матрицей $D\vc{f}(\vc{a})$, на этом уровне можно обращаться к матрице частичных производные $D\vc{f}(\vc{a})$ как «производная» $\vc{f}$ в точка $\vc{a}$ (предполагая, конечно, что $\vc{f}$ дифференцируема в $\vc{a}$).

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

исчисление — Непонимание производной матричного произведения.

спросил

Изменено 11 месяцев назад

Просмотрено 36 тысяч раз

$\begingroup$

Пытаюсь вычислить производную от умножения матрицы на матрицу, но безрезультатно. Этот документ, кажется, показывает мне ответ, но мне трудно его разобрать и понять. 9{T}$ есть? Я даже не могу понять, как здесь размерность.

РЕДАКТИРОВАТЬ: Я хотел бы добавить контекст этого вопроса. Это исходит отсюда, и вот мой отмеченный скриншот моей проблемы. Как они получают эти термины? (Примечание: я понимаю аспект цепного правила, и меня это не интересует. T$ 9Т$. Я считаю, что это то, что вы пытаетесь понять, и то, о чем вас просят в последнем абзаце скриншота. Кроме того, как намекает следующий абзац после на скриншоте, вы могли бы начать с небольших матриц, чтобы решить это, прежде чем заметить шаблон и обобщить, как я пытался сделать непосредственно в приведенном выше доказательстве. Эти же рассуждения доказывают и второе выражение…

$\endgroup$

9

$\begingroup$

Как и большинство статей о машинном обучении/нейронных сетях, связанный документ представляет собой ужасную смесь фрагментов кода и плохой математической записи.

Если вы прочтете комментарии перед фрагментом кода, вы обнаружите, что dX не относится к приращению или дифференциалу $X,$ или к поматрица производной $\frac{\partial W}{\partial X}.\;$ Вместо этого предполагается представлять $\frac{\partial \phi}{\partial X}$, т. TG \ quad & \ big ({\ rm градиент \, wrt \,} X \ big) \\ }$$ К сожалению, автор решил использовать в коде следующие имена переменных: 9Т\cdot{\bf dD} \\ }$$ но обозначение чрезвычайно сбивает с толку любого, кто склонен к математике.
(Примечание: этот ответ просто повторяет замечания, сделанные в отличном посте Георга Салибы)

$\endgroup$

3

$\begingroup$

Просто чтобы добавить к превосходному ответу Георга Салибы, вы можете видеть, что это должно быть так интуитивно.

Дана функция $f(D)$ с $D=WX$, , если бы все переменные были скалярами , то мы явно имеем =\frac{\partial f}{\partial D}X$$ Теперь в нескалярном случае мы ожидаем точно такую ​​же форму, вплоть до некоторого изменения порядка умножения, транспонирования и т. Д. Из-за нескалярной природы, но общая форма должна быть приведена к той же форме в скалярном случае, поэтому он не может существенно отличаться от приведенного выше. T$$ Можно формализовать это в реальное доказательство, но пока мы оставим его в качестве интуитивного руководства. 9T$, загляните в раздел «Производные от следов» в Matrix Cookbook.

Сказав это, путаница здесь заключается в том, что вы пытаетесь взять производную относительно. матрица МАТРИЧНО-ЗНАЧЕННОЙ функции, результатом должен быть четырехсторонний тензор (массив). Если вы посмотрите Matrix Cookbook, там всегда говорится о функции SCALAR-VALUED. Итак, я предполагаю, что вы пропустили какую-то функцию вокруг D, может быть, det() или trace(). В противном случае вам придется взять производную от каждого элемента D, что даст вам матрицу для каждого элемента. 9T$ и ее другая матрица элементов являются нулевой матрицей.

$\endgroup$

2

$\begingroup$

Не ответ, просто код из cs231n + операторы печати для просмотра «небольшие явные примеры», здесь 0 / 1:

 #!/usr/bin/env python
# -*- кодировка: utf-8 -*-
# https://math. stackexchange.com/questions/1866757/not-understanding-derivative-of-a-matrix-matrix-producto
# http://cs231n.github.io/optimization-2/#mat Градиенты для векторных операций
# Работайте с небольшими явными примерами здесь 0 / 1
из отдела импорта __future__, print_function
импортировать numpy как np
определение pname (имя):
 """ pname ("name" / "expr"): eval -> num / vec / array, print """
 A = оценка (имя)
 print( "\n%s %s: \n%s" % (
 имя, getattr( A, "форма", "" ), A ))
np.random.seed( 3 ) # воспроизводимый рандом
W = np.random.randint(0, 2, size=(5, 10)) # [0, 2): 0/1
X = np.random.randint (0, 2, размер = (10, 3))
Y = W.dot(X) # D в оригинале
# теперь предположим, что у нас есть градиент по Y -- здесь означает ∂f/∂Y для некоторого f( Y )
dY = np.random.randint(0, 2, size=Y.shape)
dW = dY.dot(X.T)
dX = W.T.точка(dY)
Распечатать( """
-------------------------------------------------- ------------------------------
Y = W.точка (X)
dY = ∂f/∂Y, для некоторого f( Y )
dW = ∂f/∂W = ∂f/∂Y ∂Y/∂W = ∂f/∂Y .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *