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/: якобианы матриц , проверка производных конечными разностями, производная определителя и обратной матрицы, AD через дуальные числа, производные собственных чисел. - Домашние задания с решениями (в репозитории — PDF и исходники LaTeX).
Как учиться по нему вместе с ChinaAI
Заголовок раздела «Как учиться по нему вместе с ChinaAI»Целиком курс нужен тем, кто пишет свои слои и ядра или читает статьи об оптимизаторах. Для остальных хватит трёх переведённых глав — это примерно 2–3 вечера.
-
Сначала уроки курса. 1.2.1 «Производные», 1.2.2 «Правило цепочки», 1.2.3 «Градиенты» и модуль 1.1 о матрицах.
-
Часть 1 — производная как линейный оператор. Читайте сразу после ступени 1. Главное: , градиент имеет форму входа, а порядок перемножения якобианов — это выбор между прямым и обратным режимом.
-
Уроки ступени 3. Прямой и обратный проход и свой автоград.
-
Части 2 и 3. Градиенты по матрицам весов (часть 2) и устройство автодифференцирования (часть 3) легче читаются, когда вы уже написали обратный проход руками.
-
Задания (по желанию). Задачи из домашних заданий — хороший тренажёр: каждую формулу проверяйте конечной разностью в NumPy, как это делают авторы.
Переведённые главы
Заголовок раздела «Переведённые главы»| Страница | Главы конспекта | К уроку ChinaAI |
|---|---|---|
| Часть 1: производная как линейный оператор | 1 (разделы 1.2–1.3, кратко 1.1), 2 | 1.2.1–1.2.3 |
| Часть 2: якобианы и градиенты матричных функций | 3, 5, 7 | 1.2.3, 3.1.2 |
| Часть 3: прямой и обратный режим автодифференцирования | 8 | 3.2.1, 3.2.2, 3.3.1 |
Карта конспекта
Заголовок раздела «Карта конспекта»Нумерация — по версии конспекта arXiv:2501.14787v1. Важность — для того, кто идёт к LLM: ★★★ — обязательно, ★★ — полезно, ★ — можно пропустить при первом проходе.
| Глава | О чём | Урок ChinaAI | Важность |
|---|---|---|---|
| Введение и 1. Overview and Motivation | Зачем анализ матриц: ML, физическое моделирование, статистика, AD. Таблица «форм» производной; правило произведения . Переведено | 1.2.1 | ★★ |
| 2. Derivatives as Linear Operators | , производная по направлению, градиент и якобиан, правила суммы, произведения и цепочки, стоимость умножения матриц, и . Переведено | 1.2.2, 1.2.3 | ★★★ |
| 3. Jacobians of Matrix Functions | Векторизация , произведение Кронекера, якобиан как , почему явные якобианы дороги. Переведено | 1.1.2 | ★★ |
| 4. Finite-Difference Approximations | Проверка производных конечными разностями: ошибки усечения и округления, порядок точности, центральные разности | 1.2.3, 3.3.1 | ★★★ |
| 5. Derivatives in General Vector Spaces | Скалярное произведение Фробениуса, градиенты по матрицам (, ), нормы и банаховы пространства. Переведено | 3.1.2 | ★★★ |
| 6. Nonlinear Root-Finding, Optimization, and Adjoint Differentiation | Метод Ньютона, градиентный спуск, метод сопряжённых уравнений (adjoint) для производных решений систем | 1.4.1 | ★★ |
| 7. Derivative of Matrix Determinant and Inverse | , , якобиан обратной матрицы. Переведено | — | ★★ |
| 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 | Что осталось за рамками курса | — | ★ |
Лекции (IAP 2023, видео на YouTube)
Заголовок раздела «Лекции (IAP 2023, видео на YouTube)»Состав лекций — по README ветки iap2023 репозитория курса; каждая лекция — две части по часу.
| Лекция | Содержание | Главы конспекта |
|---|---|---|
| 1 | Обзор курса (слайды); производные как линейные операторы | 1, 2 |
| 2 | Линейные и нелинейные преобразования плоскости на картинках; производные как линейные операторы (продолжение); якобианы матриц | 2, 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. Найти место в конспекте, которое показалось непонятным, и предложить, как его улучшить; доказать, что любой линейный оператор на матрицах — комбинация операций вида (через базис из произведений Кронекера); замерить время против для матриц и объяснить разницу; упражнение о поэлементных произведениях из главы 2; найти производные пяти функций вроде — по и по ; градиент для сопряжённым методом с проверкой конечной разностью.
- Задание 2. Задача из многомерной статистики (из конспекта); тождество Матиаса — производная матричной функции как угол блочной матрицы — с численной проверкой на матричной экспоненте и доказательством для степеней и обратной матрицы; метод Ньютона для поиска собственных чисел через ; и другие задачи.
Хорошая привычка из этого курса: каждую выведенную формулу проверяйте конечной разностью со случайным малым — в переводах мы так и делаем в блоках «Проверьте в 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 — если нужно освежить линейную алгебру перед курсом.