Перейти к содержимому
ПереводыMIT, Berkeley, CMU

MIT Matrix Calculus: путеводитель по матричному анализу для ML

Карта курса Эдельмана и Джонсона «Matrix Calculus for Machine Learning and Beyond» (MIT 18.S096, ныне 18.063): 15 глав конспекта, лекции на YouTube, блокноты и задания — что из этого нужно для нейросетей и к каким урокам ChinaAI относится. Три ключевые главы переведены полностью.

Matrix Calculus for Machine Learning and Beyond («Матричный анализ для машинного обучения и не только») — короткий январский интенсив MIT, который читают Алан Эдельман (один из создателей языка Julia) и Стивен Г. Джонсон (автор библиотеки FFTW). Курс отвечает на вопрос, на котором спотыкается почти каждый, кто пишет обратный проход руками: как брать производные, когда вход и выход — векторы и матрицы, и почему автоматическое дифференцирование в PyTorch — это не символьные формулы и не конечные разности.

Перевод описания из репозитория курса:

Все знают, что курсы анализа вроде 18.01 и 18.02 — это анализ одной переменной и векторный анализ. Современные приложения, такие как машинное обучение и крупномасштабная оптимизация, требуют следующего большого шага — «матричного анализа» и анализа на произвольных векторных пространствах.

Этот курс заново смотрит на анализ с точки зрения линейной алгебры и обобщает его на гораздо более общие вещи (например, производная матричных функций — обратной матрицы или определителя — по матрице, интеграла по функции, решения ОДУ по параметрам ОДУ) и связывает это с информатикой — эффективными алгоритмами дифференцирования и автоматическим дифференцированием (AD).

Мы излагаем цельный подход к матричному анализу, в котором матрицы — целостные объекты (а не просто массивы чисел), обобщаем и вычисляем производные важных матричных разложений и многих других сложных на вид операций и разбираемся, как формулы дифференцирования приходится переосмыслить в крупномасштабных вычислениях. Мы обсудим обратное (adjoint, backpropagation) дифференцирование, собственные произведения вектора на якобиан (vector–Jacobian products) и то, почему современное AD — это больше информатика, чем анализ (это не символьные формулы и не конечные разности).

Формат. Три недели в январе (IAP — «независимый учебный период» MIT), лекции по 2 часа три раза в неделю, два домашних задания, экзаменов нет. Пререквизиты: линейная алгебра на уровне MIT 18.06 (наш путеводитель) и анализ функций многих переменных на уровне 18.02. Численные примеры — на языке Julia (их легко повторить на Python с NumPy и PyTorch — мы так и делаем в переводах).

Что есть в открытом доступе:

  • Конспект курса (≈100 страниц) — основной текст; версия 2025 года выложена на arXiv (2501.14787), актуальная — по ссылке из README репозитория.
  • Видео лекций IAP 2023 — плейлист на YouTube (ссылки на каждую лекцию — в ветке iap2023 репозитория).
  • Блокноты в папке notes/: якобианы матриц 2×22 \times 2, проверка производных конечными разностями, производная определителя и обратной матрицы, AD через дуальные числа, производные собственных чисел.
  • Домашние задания с решениями (в репозитории — PDF и исходники LaTeX).

Целиком курс нужен тем, кто пишет свои слои и ядра или читает статьи об оптимизаторах. Для остальных хватит трёх переведённых глав — это примерно 2–3 вечера.

  1. Сначала уроки курса. 1.2.1 «Производные», 1.2.2 «Правило цепочки», 1.2.3 «Градиенты» и модуль 1.1 о матрицах.

  2. Часть 1 — производная как линейный оператор. Читайте сразу после ступени 1. Главное: df=f′(x)[dx]df = f'(x)[dx], градиент имеет форму входа, а порядок перемножения якобианов — это выбор между прямым и обратным режимом.

  3. Уроки ступени 3. Прямой и обратный проход и свой автоград.

  4. Части 2 и 3. Градиенты по матрицам весов (часть 2) и устройство автодифференцирования (часть 3) легче читаются, когда вы уже написали обратный проход руками.

  5. Задания (по желанию). Задачи из домашних заданий — хороший тренажёр: каждую формулу проверяйте конечной разностью в NumPy, как это делают авторы.

СтраницаГлавы конспектаК уроку ChinaAI
Часть 1: производная как линейный оператор1 (разделы 1.2–1.3, кратко 1.1), 21.2.1–1.2.3
Часть 2: якобианы и градиенты матричных функций3, 5, 71.2.3, 3.1.2
Часть 3: прямой и обратный режим автодифференцирования83.2.1, 3.2.2, 3.3.1

Нумерация — по версии конспекта arXiv:2501.14787v1. Важность — для того, кто идёт к LLM: ★★★ — обязательно, ★★ — полезно, ★ — можно пропустить при первом проходе.

ГлаваО чёмУрок ChinaAIВажность
Введение и 1. Overview and MotivationЗачем анализ матриц: ML, физическое моделирование, статистика, AD. Таблица «форм» производной; правило произведения d(AB)=dA B+A dBd(AB) = dA\,B + A\,dB. Переведено1.2.1★★
2. Derivatives as Linear Operatorsdf=f′(x)[dx]df = f'(x)[dx], производная по направлению, градиент и якобиан, правила суммы, произведения и цепочки, стоимость умножения матриц, d(A3)d(A^3) и d(A−1)d(A^{-1}). Переведено1.2.2, 1.2.3★★★
3. Jacobians of Matrix FunctionsВекторизация vec⁡\operatorname{vec}, произведение Кронекера, якобиан A2A^2 как I⊗A+AT⊗II \otimes A + A^T \otimes I, почему явные якобианы дороги. Переведено1.1.2★★
4. Finite-Difference ApproximationsПроверка производных конечными разностями: ошибки усечения и округления, порядок точности, центральные разности1.2.3, 3.3.1★★★
5. Derivatives in General Vector SpacesСкалярное произведение Фробениуса, градиенты по матрицам (∇∥A∥F\nabla \Vert A \Vert_F, ∇xTAy\nabla x^T A y), нормы и банаховы пространства. Переведено3.1.2★★★
6. Nonlinear Root-Finding, Optimization, and Adjoint DifferentiationМетод Ньютона, градиентный спуск, метод сопряжённых уравнений (adjoint) для производных решений систем1.4.1★★
7. Derivative of Matrix Determinant and Inverse∇det⁡A=det⁡(A)A−T\nabla \det A = \det(A) A^{-T}, dlog⁡det⁡A=tr⁡(A−1dA)d \log\det A = \operatorname{tr}(A^{-1} dA), якобиан обратной матрицы. Переведено—★★
8. Forward and Reverse-Mode Automatic DifferentiationДуальные числа, вычислительные графы, обратный режим, «прямой поверх обратного», произведения гессиана на вектор. Переведено3.2.1, 3.2.2★★★
9. Differentiating ODE SolutionsЧувствительность решений ОДУ: прямой и сопряжённый методы—★
10. Calculus of VariationsПроизводные функционалов, уравнения Эйлера — Лагранжа—★
11. Derivatives of Random FunctionsПроизводные случайных функций, трюк репараметризации, дискретная случайность9.1.3 VAE★★
12. Second Derivatives, Bilinear Maps, and Hessian MatricesВторые производные как билинейные формы, гессиан, квадратичные приближения, обусловленность1.4.2★★
13. Derivatives of EigenproblemsПроизводные собственных чисел и векторов, производные с ограничениями—★
14. Where We Go From HereЧто осталось за рамками курса—★

Состав лекций — по README ветки iap2023 репозитория курса; каждая лекция — две части по часу.

ЛекцияСодержаниеГлавы конспекта
1Обзор курса (слайды); производные как линейные операторы1, 2
2Линейные и нелинейные преобразования плоскости на картинках; производные как линейные операторы (продолжение); якобианы матриц 2×22 \times 22, 3
3Якобианы матриц через векторизацию; конечные разности3, 4
4Обобщённые градиенты и скалярные произведения; нелинейный поиск корней, оптимизация, метод сопряжённых уравнений5, 6
5Нормы и производные; производная определителя и обратной; AD прямого режима через дуальные числа; AD на вычислительных графах5, 7, 8
6Сопряжённое дифференцирование ОДУ (гостевая лекция Франка Шефера); вариационное исчисление9, 10
7Производные случайных функций (гостевая лекция Гаурава Арьи); вторые производные, билинейные формы и гессианы11, 12
8Производные задач на собственные значения; AD на графах (продолжение); что не вошло в курс8, 13, 14

В версии 2026 года (курс получил постоянный номер 18.063) порядок тем почти тот же, добавлены обратный проход для нейросетей (отдельная глава в новой редакции конспекта) и CR-исчисление для комплексных функций; нумерация глав в новой редакции конспекта отличается от arXiv-версии.

Домашние задания (что в них, без перевода условий)

Заголовок раздела «Домашние задания (что в них, без перевода условий)»

У репозитория на GitHub нет файла лицензии, поэтому условия заданий 2026 года мы не переводим, а коротко пересказываем — так их проще найти и выбрать.

  • Задание 1. Найти место в конспекте, которое показалось непонятным, и предложить, как его улучшить; доказать, что любой линейный оператор на матрицах — комбинация операций вида BXATBXA^T (через базис из произведений Кронекера); замерить время BCATBCA^T против (A⊗B)vec⁡C(A \otimes B)\operatorname{vec} C для матриц 50×5050 \times 50 и объяснить разницу; упражнение о поэлементных произведениях из главы 2; найти производные пяти функций вроде tr⁡((Adiag⁡(x)AT)−1)\operatorname{tr}((A \operatorname{diag}(x) A^T)^{-1}) — по xx и по AA; градиент g(p)=∥A(p)−1b∥2g(p) = \Vert A(p)^{-1} b \Vert^2 для A(p)=A0+ppTA(p) = A_0 + pp^T сопряжённым методом с проверкой конечной разностью.
  • Задание 2. Задача из многомерной статистики (из конспекта); тождество Матиаса — производная матричной функции f′(A)[δA]f'(A)[\delta A] как угол блочной матрицы f(AδA0A)f\begin{pmatrix} A & \delta A \\ 0 & A \end{pmatrix} — с численной проверкой на матричной экспоненте и доказательством для степеней и обратной матрицы; метод Ньютона для поиска собственных чисел через det⁡\det; и другие задачи.

Хорошая привычка из этого курса: каждую выведенную формулу проверяйте конечной разностью f(x+δx)−f(x)≈f′(x)[δx]f(x + \delta x) - f(x) \approx f'(x)[\delta x] со случайным малым δx\delta x — в переводах мы так и делаем в блоках «Проверьте в NumPy».

Блокноты курса написаны на Julia (Jupyter и Pluto). Если ставить Julia не хочется, всё повторяется на Python:

В курсе (Julia)На Python
kron(A, B), vec(A)np.kron(A, B), A.flatten(order='F')
ForwardDiff.derivative (прямой режим)torch.func.jvp, jax.jvp
Zygote.gradient (обратный режим)torch.func.grad, torch.autograd.grad, jax.grad
конечные разности FiniteDifferences.jl(f(x + h*v) - f(x - h*v)) / (2*h) вручную, torch.autograd.gradcheck
  • MIT 18.065 Гилберта Стрэнга «Matrix Methods in Data Analysis, Signal Processing, and Machine Learning» — матрицы в ML, включая раздел об обратном распространении (материалы — в репозитории mitmath/18065).
  • The Matrix Cookbook — справочник формул производных по матрицам (без выводов).
  • matrixcalculus.org — онлайн-калькулятор производных матричных выражений; удобно сверяться.
  • Книга Гриванка и Вальтер Evaluating Derivatives — подробно об автоматическом дифференцировании.
  • Наш путеводитель по MIT 18.06 — если нужно освежить линейную алгебру перед курсом.