Матричное дифференцирование в машинном обучении: градиент, якобиан и линейная регрессия

от автора

Всех приветствую.
Я занимаюсь изучением темы машинного обучения и столкнулся с проблемой отсутствия нормальной, понятной информации по той или иной теме. Сегодняшнюю тему я изучал более 4,5 часов — и у меня просто сгорело, ведь нигде в лёгком доступе нет этой простой темы. Я собрал всё до кучи. Надеюсь, я буду последним, кто затупил на этом моменте. Если найдёте ошибки — прошу в комментарии.

Зачем нужно матричное дифференцирование

В обычном математическом анализе функция принимает одно число и возвращает одно число:

Её производная также является числом:

В машинном обучении параметры модели обычно представлены не одним числом, а вектором:

Функция ошибки зависит сразу от всех параметров:

Поэтому необходимо определить, как изменяется ошибка при изменении каждого элемента вектора параметров. Для этого используются градиент и матрица Якоби.

Градиент скалярной функции

Рассмотрим функцию:

где x — вектор-столбец:

Произведение x^T x является числом:

Это квадрат евклидовой нормы вектора:

Возьмём частную производную по каждой координате:

Полученные производные объединяются в один вектор:

Такой вектор называется градиентом. Градиент показывает, как функция изменяется по каждой координате. Также он указывает направление наиболее быстрого возрастания функции. Для уменьшения функции в методе градиентного спуска выполняется шаг в противоположную сторону:

где η — скорость обучения.

Производная линейной скалярной функции

Рассмотрим функцию:

где a и x — векторы одинаковой размерности.
Раскроем скалярное произведение:

Частные производные равны:

Простой пример для понимания:

Векторная функция и матрица Якоби

Рассмотрим функцию

где

Результат умножения матрицы на вектор является другим вектором:

Его можно записать в виде

Каждая компонента результата зависит от нескольких координат входного вектора. Поэтому необходимо найти производную каждой функции fi по каждой переменной xj . Эти производные объединяются в матрицу:

Эта матрица и есть так называемый якобиан.

Пример вычисления якобиана:

Тогда якобиан равен

Таким образом

Матрица A сама описывает, как каждая компонента выходного вектора зависит от каждой компоненты входного вектора.

Связь градиента и якобиана

Если функция принимает вектор и возвращает число,то стандартный якобиан имеет размер 1 × n:

А градиент же принято записывать вектором-столбцом:

Таким обзором видна их связь: градиент равен транспонированному якобиану

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

Рассмотрим аффинную функцию

где b — постоянный вектор. Так как производная константы равна нулю, Jb = 0получаем

Вектор b только сдвигает значения функции, но не влияет на скорость её изменения.

Рассмотрим функцию квадрата нормы

Результат выражения Ax + b является вектором( поэтому под квадратом понимается квадрат его нормы)
Норма — это математическое понятие, которое обобщает концепцию длины вектора (ну или на людском языке — длина вектора)

Чтобы упростить вычисления, введём промежуточный вектор

Тогда функция принимает вид

Раскроем скалярное произведение:

Каждая компонента вектора r равна

Теперь найдём производную функции L по одной конкретной координате xk:

Производная суммы равна сумме производных:

Поскольку ri зависит от xk, применяем правило дифференцирования сложной функции:

При дифференцировании по xk все остальные переменные считаются постоянными. Поэтому

Подставим это выражение в производную функции L:

Помним что

И тогда получаем

Теперь рассмотрим произведение

Элементы транспонированной матрицы определяются как

Следовательно, k-я компонента произведения A^T (Ax + b) равна

Это выражение совпадает с полученной частной производной:

Так как равенство выполняется для каждой координаты xk, все частные производные можно объединить в градиент:

И в результате получаем ту самую сраную формулу ради которой все это делалось

Транспонированная матрица A^T появляется потому, что при вычислении производной по переменной xk используются элементы

то есть k-й столбец матрицы A.

Для каждой переменной необходимо скалярно умножить соответствующий столбец матрицы A на вектор Ax + b. Одновременное выполнение этих операций для всех столбцов записывается как раз так

Встает логичный вопрос, а почему именно эта формула так важна. Для этого рассмотрим пример с любимой линейной регрессией.

Пусть имеется

  1. Матрица признаков Х размером N × d, где N — количество объектов, а d — количество признаков.

  2. Вектор весов модели

  3. Прогнозы линейной модели:

  4. Истинные значения:

  5. Вектор ошибок модели:

Для оценки качества линейной регрессии используем стандартную среднеквадратичную ошибку — MSE:

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

Сумму квадратов компонентов вектора можно записать через квадрат нормы:

Нужно найти градиент функции MSE по вектору весов w. И вот здесь нам понадобится та самая формула

И сопоставим её с функцией MSE. В данном случае A = X, x = w, b = −y.Следовательнo

Однако перед квадратом нормы в функции MSE находится постоянный множитель 1 / N(при дифференцировании его можно просто вынести за знак градиента ) и тогда получим

Ну и что бы окончательно закрыть эту тему рассмотрим ниже как получить оптимальные веса и почему найденная точка является минимумом

Получение оптимальных весов

Для поиска стационарной точки приравняем градиент к нулю

Стационарная точка — это точка, где градиент равен нулю, а значит, касательная плоскость горизонтальна, это может быть минимум, максимум, седловина или даже плато, так что сама по себе она ничего не гарантирует(

Это выражение называется нормальным уравнением линейной регрессии. Если матрица X^T X обратима, получаем

Таким образом, оптимальные веса можно найти аналитически, без использования градиентного спуска. На практике обратную матрицу обычно не вычисляют напрямую. Вместо этого решают систему линейных уравнений или используют псевдообратную матрицу

Остался только вопрос почему это минимум
Все просто — функция линейной регрессии является выпуклой квадратичной функцией, а ее гессиан(матрица Гессе — это матрица, состоящая из вторых частных производных функции.) равен

И для любого вектора v:

Следовательно, матрица X^T X является неотрицательно определённой, а функция L(w) является выпуклой. Поэтому любая стационарная точка данной функции является глобальным минимумом. Если X^T X положительно определена и обратима, минимум является единственным.

Вот и всё. При базовом матане ничего сложного нет. Но нормальной связной инфы нигде нет — разве что для матфизиков где много лишнего.Надеюсь, кому-то поможет. И я не один такой.

Если есть ошибки — поправляйте в комментах.

ссылка на оригинал статьи https://habr.com/ru/articles/1060392/