Main menu

Матричное дифференцирование: алгебра градиентов и гессианов

Математический анализ (дифференцирование и интегрирование) изначально создавался для работы со скалярными функциями. Однако в современной статистике, теории управления и алгоритмах машинного обучения (в частности, при тренировке глубоких нейронных сетей) функции зависят не от одной переменной, а от огромных векторов и матриц. Поиск минимума таких сложных многомерных функций потерь требует вычисления производных по матричному аргументу. Матричное исчисление (Matrix Calculus) — это строгий математический аппарат, объединяющий компактную нотацию линейной алгебры с цепными правилами математического анализа, позволяющий брать производные от матриц по векторам и от скаляров по матрицам без утомительного расписывания тысяч частных производных.

Два подхода: числитель против знаменателя

Главная сложность при изучении матричного исчисления заключается в отсутствии единой мировой конвенции по расположению элементов в матрице градиентов. Существует два основных стандарта. Соглашение числителя (Numerator layout) или Якобиева нотация предполагает, что производная вектора-столбца y по вектору-столбцу x образует матрицу, в которой строки соответствуют элементам y, а столбцы — элементам x. В этом формате вектор градиента скалярной функции является вектором-строкой. Соглашение знаменателя (Denominator layout) или Гессианова нотация, напротив, транспонирует результат: производная скаляра по вектору-столбцу является вектором-столбцом, что гораздо удобнее для формул градиентного спуска (x_new = x_old - alpha*grad). При чтении литературы критически важно с самого начала определить, какое соглашение использует автор.

Трюк с дифференциалом следа

Прямое вычисление матричных производных (через индексы) громоздко и чревато ошибками. Профессионалы используют алгебраический подход на основе первых дифференциалов и свойств следа матрицы (Trace). Основная идея заключается в том, чтобы записать дифференциал скалярной функции df(X) и с помощью свойств алгебры привести его к каноническому виду: df(X) = Tr(A * dX). Как только выражение приведено к такой форме, матрица, стоящая рядом с дифференциалом dX (с учетом возможного транспонирования, в зависимости от конвенции), гарантированно является искомой матрицей градиентов функции f(X) по аргументу X. Операция следа идеально подходит для этого, так как она линейна, циклична (Tr(AB) = Tr(BA)) и инвариантна к транспонированию (Tr(A) = Tr(A^T)).

Производные квадратичных форм: Метод наименьших квадратов

В качестве классического примера использования матричного дифференцирования рассмотрим Метод наименьших квадратов в многомерной регрессии. Функция потерь задается формулой J(w) = (X*w - y)^T * (X*w - y), где w — вектор искомых весов. Если раскрыть скобки и применить правила матричного дифференцирования (учитывая, что производная от w^T * A * w по вектору w равна (A + A^T) * w), мы получим вектор градиента: dJ/dw = 2*X^T*(X*w) - 2*X^T*y. Приравняв этот градиент к нулевому вектору для нахождения глобального минимума, мы мгновенно, в две строчки алгебры, получаем классическое нормальное уравнение регрессии: (X^T * X) * w = X^T * y. Этот алгебраический вывод является эталоном элегантности по сравнению со страницами ручного дифференцирования.

Гессиан и дифференцирование матриц по матрицам

Ситуация усложняется, когда мы хотим взять вторую производную скалярной функции (которая формирует матрицу Гессе) или взять производную матрицы по другой матрице. Результатом такой операции является тензор четвертого ранга (четырехмерный массив). Чтобы остаться в рамках линейной алгебры и двумерных матричных записей, применяются две операции: векторизация матрицы (превращение ее в длинный столбец, vec(X)) и Кронекерово произведение (тензорное произведение матриц ⊗). Тождество Рота (vec(AXB) = (B^T ⊗ A)vec(X)) позволяет вычислять многомерные дифференциалы и формировать гигантские матрицы Гессе для алгоритма оптимизации Ньютона-Рафсона, используя исключительно стандартные двумерные матричные блоки.

Оценить
(0 votes)
Вверх

Соц. сети